]> git.evergreen-ils.org Git - evergreen/pines.git/commit
LP#1971745: work around issue that can cause large hold shelf lists to fail
authorGalen Charlton <gmc@equinoxOLI.org>
Thu, 5 May 2022 16:44:26 +0000 (12:44 -0400)
committerChris Sharp <csharp@georgialibraries.org>
Tue, 29 Nov 2022 16:04:29 +0000 (11:04 -0500)
commite9e6dc2ee92b036c291a4f71a766382042fc830d
tree1393e7f71027ac1d5627bfa669f99d0f8e07d3a4
parent982608ac478100ede9f909990d5840d4effdd28f
LP#1971745: work around issue that can cause large hold shelf lists to fail

This patch addresses an issue where hold shelf lists with
more than ~350 rows can fail to be retrieved. It works by
making the open-ils.circ.hold.wide_hash.stream method fetch
the holds from an open-ils.storage method in one fell swoop,
rather than both streaming the list from open-ils.storage and
streaming it back to the client that invoked the open-ils.circ
method.

I suspect that this is working around a subtle OpenSRF bug when
bidirectional streaming is in play, but I'm not positive.

To test
-------
[1] Set up an environment with hundreds or thousands of holds on
    a shelf at an OU.
[2] Attempt to display the holds shelf list.
[3] It may fail; if it doesn't, try with even larger number of holds
    or by setting up a test system that has ejabberd s2s going on
    to service requests.
[4] Apply the patch and repeat step 2. This time, the holds shelf
    list should be consistently retrieved. There will also be a
    user-visible change: the spinner on the AngularJS holds shelf page
    will pause for a few seconds, then start advancing.

Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Signed-off-by: Josh Stompro <stompro@stompro.org>
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Holds.pm