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@laurentian.ca>
git-svn-id: svn://svn.open-ils.org/ILS/trunk@20311
dcc99617-32d9-48b4-a31d-
7c20da2025e4
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;
}
}
if ($changed) {
+ my $editor = OpenILS::Utils::CStoreEditor->new(xact=>1);
# print $marc->as_formatted();
my $xml = $marc->as_xml_record();
$xml =~ s/\n//sgo;
$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__