Speed up hold copy map deletion for clear shelf process, etc.
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Evergreen |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Evergreen all versions circ 2.7
During the holds clear shelf process, holds fulfillment (checkout), and patron/staff hold cancellation, the middle layer circ code fetches all of the hold copy maps then deletes them each individually since they are no longer needed. For a hold with hundreds of copies in the map, this process can add noticeable time (1-2 seconds for me). For a single hold, this is not a big deal, but for the clear shelf process, where hundreds of holds may be canceled, deleting the hold copy maps can add a significant amount of time overall. If enough holds are processed, it increases the likelihood of a timeout in the client.
I'd like to propose a DB stored proc. which simply deletes all hold copy maps for a given hold. Something along the lines of:
action.
This would allow us to avoid all of the delete call round trips to cstore.
Holds.pm:
tags: | removed: pullrequest |
Changed in evergreen: | |
milestone: | 2.7.1 → 2.7.2 |
Changed in evergreen: | |
milestone: | 2.7.2 → 2.7.3 |
Changed in evergreen: | |
status: | Fix Committed → Fix Released |
http:// git.evergreen- ils.org/ ?p=working/ Evergreen. git;a=shortlog; h=refs/ heads/user/ berick/ lp1386347- delete- hold-copy- maps-proc
Note I did not modify the main hold targeter, since it's built from open-ils.storage talking directly to the DB. It should not suffer from the same overhead as the middle layer calls.