Holds not displaying in web client Holds Shelf
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Evergreen |
Fix Released
|
Medium
|
Unassigned | ||
3.2 |
Fix Released
|
Medium
|
Unassigned | ||
3.4 |
Fix Released
|
Medium
|
Unassigned |
Bug Description
Observed in EG 3.2.4
Since moving to Evergreen 3.2.4, we have had some instances where holds that should be appearing on a library's holds shelf (Circulation>Holds Shelf), are not displaying.
We can't determine what makes these holds special. No issues with the attached patron records, barcodes and call numbers not deleted, bib record not deleted, hold on the correct shelf, etc. There is also nothing consistent between the holds that are affected.
The issue is not with cache or a specific workstation. No matter where the holds shelf is pulled up, the same hold(s) fail to display.
The holds also behave correctly in other ways, (i.e. still displays as Ready for Pickup while on the patron's record, shows attached to the patron from Item Status, are fulfilled with checked out, etc).
This makes the problem hard to troubleshoot.
I'll note that we still have access to a XUL client component, and the holds that fail to display in the web client still display correctly in the XUL client.
We had no reports of this while on 3.0, but I cannot confirm one way or the other if older versions of the web client are also affected.
Changed in evergreen: | |
status: | New → Confirmed |
milestone: | none → 3.3.1 |
Changed in evergreen: | |
assignee: | nobody → Jason Stephenson (jstephenson) |
Changed in evergreen: | |
assignee: | Jason Stephenson (jstephenson) → nobody |
Changed in evergreen: | |
milestone: | 3.3.1 → 3.3.2 |
Changed in evergreen: | |
milestone: | 3.3.2 → 3.3.3 |
Changed in evergreen: | |
assignee: | nobody → Michele Morgan (mmorgan) |
Changed in evergreen: | |
milestone: | 3.3.3 → 3.3.4 |
Changed in evergreen: | |
milestone: | 3.3.4 → 3.3.5 |
Changed in evergreen: | |
status: | Fix Committed → Fix Released |
This appears to be caused by the last captured hold check in the new open-ils. storage. action. live_holds. wide_hash method. This method was introduced in Evergreen 3.2, so 3.1 should not be affected by this bug.
This code check attempts to find the most recently captured hold for the copy, but it fails if there are uncaptured holds that have the same current hold copy as the one being checked in. My experimentation on PostgreSQL 9.5 shows that these holds with a NULL capture_time sort before the holds with a capture_time in the below query:
SELECT id current_ copy = cp.id
FROM action.hold_request recheck
WHERE recheck.
ORDER BY capture_time DESC
LIMIT 1
Thus returning a different hold from the one being put on the shelf. This id mismatch prevents the hold data from being returned to the client. This causes the hold not to show up in the holds shelf list.
The query above needs to have "AND capture_time IS NOT NULL" added to the WHERE clause. Branch forthcoming.