From 6df036b3b385321dea22bc0be9aa3b1c396760db Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Thu, 18 Oct 2012 14:54:08 -0400 Subject: [PATCH] Rollback cstore transaction before bbag record load To avoid timeouts, which results in transaction rollbacks, preemptively roll back the bookbag fetching cstore transaction before we retrieve what could be a very large list of bookbag records data. Signed-off-by: Bill Erickson Signed-off-by: Jason Stephenson --- Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm index 852b11ca26..33fec7fd7d 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm @@ -1746,6 +1746,11 @@ sub load_myopac_bookbags { } } + # we're done with our CStoreEditor. Rollback here so + # later calls don't cause a timeout, resulting in a + # transaction rollback under the covers. + $e->rollback; + my $query = $self->_prepare_bookbag_container_query( $bookbag->id, $sorter, $modifier ); @@ -1760,6 +1765,7 @@ sub load_myopac_bookbags { my $items = $U->bib_container_items_via_search($bookbag->id, $query, $args) or return Apache2::Const::HTTP_INTERNAL_SERVER_ERROR; + my (undef, @recs) = $self->get_records_and_facets( [ map {$_->target_biblio_record_entry->id} @$items ], undef, @@ -1785,7 +1791,10 @@ sub load_myopac_bookbags { } } + # this rollback may be a dupe, but that's OK because + # cstoreditor ignores dupe rollbacks $e->rollback; + return Apache2::Const::OK; } -- 2.11.0