On Thu, Jun 10, 2010 at 12:31 PM, Uhlman, Brandon EDUC:EX < [email protected]> wrote:
> [My mailbox shows this as being sent yesterday (and resent today), but it > doesn't show up in the archives, etc, so I'm resending again from the same > address I sent the original message. Apologies for any duplication folks > receive.] > > Thanks, atz. > > You are, of course, right on all counts. > > I am connecting using 'RAW' socket connection to a SIP server running > against SVN rel_1_6_0 (~ 1.6.0.2 vintage), on a replicated instance of > Evergreen. That was my initial thought as to the cause of the problem, but > it looked to me like all the DB calls were authoritative. > > Correction: the code says they should be authoritative, but somewhere along > the way they get mis-directed and end up hitting the slave DB to which the > data hasn't replicated yet. > > Specifically, the ACS was dying while trying to generate the content for > message 64, the patron information response. More specifically, > $e->retrieve_action_circulation($circ_id) in __circ_to_barcode() in > OpenILS::SIP::Patron (around line 442) returns undef (because the circ > hasn't replicated to the slave yet), and the ACS doesn't know how to handle > that. > > That shouldn't be a problem, because, by definition, $e, created by > editor()/make_editor() in SIP.pm (which is just a singleton method for > OpenILS::Utils::CStoreEditor) is created with xact => 1, which should wrap > all these selects in a transaction and force them to the primary database > server. > As an aside (and so it's not forgotten), as of 1.6.1, the SIP code no longer starts a transaction for the shared editor. It looks like we need to get some xact_begins and rollbacks in the __circ_to_* routines or otherwise create a temp editor for that set of function calls. -b -- Bill Erickson | VP, Software Development & Integration | Equinox Software, Inc. / Your Library's Guide to Open Source | phone: 877-OPEN-ILS (673-6457) | email: [email protected] | web: http://esilibrary.com
