Bug 20549

Summary: Avoid indexer race condition when moving item
Product: Koha Reporter: Alex Buckley <alexbuckley>
Component: CatalogingAssignee: Bugs List <koha-bugs>
Status: CLOSED FIXED QA Contact: Testopia <testopia>
Severity: enhancement    
Priority: P5 - low CC: m.de.rooy
Version: Main   
Hardware: All   
OS: All   
GIT URL: Change sponsored?: ---
Patch complexity: --- Documentation contact:
Documentation submission: Text to go in the release notes:
Version(s) released in:
Circulation function:
Attachments: WR 289187 - Avoid biblio index race condition after moving item

Description Alex Buckley 2018-04-10 04:30:39 UTC

    
Comment 1 Alex Buckley 2018-04-10 04:32:24 UTC
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.
Comment 2 Alex Buckley 2018-07-12 21:26:43 UTC
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'.