[OPEN-ILS-DEV] SIP2 hard disconnect after particular series of messages

Uhlman, Brandon EDUC:EX Brandon.Uhlman at gov.bc.ca
Thu Jun 10 12:31:30 EDT 2010


[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.

Here's an example call that returned null.

stanns SIPServer.pm: [INFO:19071:CStoreEditor.pm:104:] editor[1|0] request en-US open-ils.cstore.direct.action.circulation.retrieve "9704055"



More information about the Open-ils-dev mailing list