[open-ils-commits] r20312 - branches/rel_2_1/Open-ILS/src/support-scripts (dbs)

svn at svn.open-ils.org svn at svn.open-ils.org
Tue Apr 26 10:13:24 EDT 2011


Author: dbs
Date: 2011-04-26 10:13:22 -0400 (Tue, 26 Apr 2011)
New Revision: 20312

Modified:
   branches/rel_2_1/Open-ILS/src/support-scripts/authority_control_fields.pl
Log:
Make authority_control_fields.pl resistant to database timeouts

LP 771237 describes how on an underpowered system, the work that
authority_control_fields.pl tries to do on a per-record basis may hit the
CStore default timeout of 6 seconds for a transaction and automatically
end the transaction, resulting in no work being committed once the script tries
to update the bibliographic record. Searching each controlled field for a
matching authority record can be costly in a database with millions of
authority records.

To enable the script to accomplish its work on underpowered test systems, use a
regular read-only CStoreEditor session to accomplish the lookups and create a
separate CStoreEditor session to issue the update in a transaction if required.

Signed-off-by: Dan Scott <dscott at laurentian.ca>


Modified: branches/rel_2_1/Open-ILS/src/support-scripts/authority_control_fields.pl
===================================================================
--- branches/rel_2_1/Open-ILS/src/support-scripts/authority_control_fields.pl	2011-04-26 14:12:46 UTC (rev 20311)
+++ branches/rel_2_1/Open-ILS/src/support-scripts/authority_control_fields.pl	2011-04-26 14:13:22 UTC (rev 20312)
@@ -339,7 +339,7 @@
 foreach my $rec_id (@records) {
     # print "$rec_id\n";
 
-    my $e = OpenILS::Utils::CStoreEditor->new(xact=>1);
+    my $e = OpenILS::Utils::CStoreEditor->new();
     # State variable; was the record changed?
     my $changed;
 
@@ -418,6 +418,7 @@
         }
     }
     if ($changed) {
+        my $editor = OpenILS::Utils::CStoreEditor->new(xact=>1);
         # print $marc->as_formatted();
         my $xml = $marc->as_xml_record();
         $xml =~ s/\n//sgo;
@@ -427,9 +428,9 @@
         $xml = OpenILS::Application::AppUtils->entityize($xml);
 
         $record->marc($xml);
-        $e->update_biblio_record_entry($record);
+        $editor->update_biblio_record_entry($record);
+        $editor->commit();
     }
-    $e->commit();
 }
 
 __END__



More information about the open-ils-commits mailing list