Summary: | Avoid indexer race condition when moving item | ||
---|---|---|---|
Product: | Koha | Reporter: | Alex Buckley <alexbuckley> |
Component: | Cataloging | Assignee: | 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
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'. |