Created attachment 73899 [details] [review] WR 289187 - Avoid biblio index race condition after moving item The moveitem.pl script loops through a 2 value array containing "new" and "old". The first loop value "new" is handed as an optional argument to the MoveItemFromBiblio() function in C4/Items.pm. This updates the biblios and only reindexes the new biblio. If a 1 if returned from the call to MoveItemFromBilio() to moveitem.pl then the loop iterates through the second value in the array "old" this calls the MoveItemFromBiblio() function as well but this time the aforementioned function only does one thing which is add the old biblio to the zebraqueue. Due to calling the ModItemFromBiblio() function twice from two different iterations of the loop in moveitem.pl there is a 1 second gap between the new biblio and old biblio being added to the zebraqueue table. This reduces the chances of a race condition of the old biblio being indexed before the new biblio.
The bug that I wrote this patch for turned out to be a cataloging issue rather than a race condition in the execution of a reindex. The cataloging issue was causing Zebra to return two biblios when searching for the barcode of an item moved from one biblio to another. Therefore I am going to set this bug report to 'Resolved Fixed'.