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>
Signed-off-by: Jason Stephenson <jstephenson@cwmars.org>