I have more information. When I try the back end call used by Syrup to fetch copy counts with a record from the course that blows up, I get the following:
srfsh# request open-ils.storage open-ils.storage.biblio.record_entry.status_copy_location_count.atomic [4211388, 160, 0] Received Exception: Name: osrfMethodException Status: *** Call to [open-ils.storage.biblio.record_entry.status_copy_location_count.atomic] failed for session [1539000573.516499.153900057325003], thread trace [1]: DBD::Pg::st execute failed: ERROR: invalid input syntax for integer: "ARRAY(0xebc67e0)" LINE 16: WHERE cn.record = 'ARRAY(0xebc67e0)' ^ [for Statement " SELECT cp.circ_lib, CASE WHEN cnp.id > -1 THEN cnp.label ELSE '' END, cn.label, CASE WHEN cns.id > -1 THEN cns.label ELSE '' END, oils_i18n_xlate('asset.copy_location', 'acpl', 'name', 'id', cl.id::TEXT, ?), cp.status, count(cp.id) FROM asset.copy cp, asset.call_number cn, asset.call_number_suffix cns, asset.call_number_prefix cnp, asset.copy_location cl, config.copy_status cs, actor.org_unit_descendants(?,?) d WHERE cn.record = ? AND cnp.id = cn.prefix AND cns.id = cn.suffix AND cp.call_number = cn.id AND cp.location = cl.id AND cp.circ_lib = d.id AND cp.status = cs.id AND cl.opac_visible IS TRUE AND cp.opac_visible IS TRUE AND cp.deleted IS FALSE AND cl.deleted IS FALSE AND cs.opac_visible IS TRUE GROUP BY 1,2,3,4,5,6; " with ParamValues: 1='en-US', 2='1', 3='0', 4='ARRAY(0xebc67e0)'] at /usr/share/perl5/DBIx/ContextualFetch.pm line 52. Status: 500 ------------------------------------ Request Completed Successfully Request Time in seconds: 0.215329 ------------------------------------ So, a database error is definitely not JSON. Looks like this one could be headed for Launchpad.