Current, one part of opportunistic hold capture is retrieving a set of up to 100 nearest candidate holds from open-ils.storage.action.hold_request.nearest_hold, then going through the list and looking for the first one that passes the permit test.
However, two problems recently seen with this are:
- For a popular title, it is possible to get a set of 100 candidate holds where _none_ of them pass the permit check
- The additional individual permit checks for each hold can take ~10 seconds in that worst case
I've experimented with putting the invocation of action.hold_retarget_permit_test() directly in the nearest_hold query and... it just might help.
Current, one part of opportunistic hold capture is retrieving a set of up to 100 nearest candidate holds from open-ils. storage. action. hold_request. nearest_ hold, then going through the list and looking for the first one that passes the permit test.
However, two problems recently seen with this are:
- For a popular title, it is possible to get a set of 100 candidate holds where _none_ of them pass the permit check
- The additional individual permit checks for each hold can take ~10 seconds in that worst case
I've experimented with putting the invocation of action. hold_retarget_ permit_ test() directly in the nearest_hold query and... it just might help.