Bug 17088 - Bad MARC XML can halt export_records.pl
authorKyle M Hall <kyle@bywatersolutions.com>
Tue, 9 Aug 2016 13:08:17 +0000 (13:08 +0000)
committerBrendan Gallagher <brendan@bywatersolutions.com>
Mon, 10 Oct 2016 12:23:59 +0000 (12:23 +0000)
If export_records.pl encounters a record that fails to load correctly as
a MARC::Record the export process will fail and only the records
encountered up to that point will be exported.

Test Plan:
1) Pick a record in your database, and replace the biblioitems.marcxml field with some random characters
2) Export your records using the command:
   misc/export_records.pl  --format xml --record-type bibs --filename /tmp/biblios.xml
3) Note you get an error and the script ends prematurely
4) Apply this patch
5) Repeat step 2
6) Note the full record set is exported ( except for your bad record )
7) Note an error is still generated for your bad record ( useful for
    tracking down bad records ).

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
Koha/Exporter/Record.pm

index ef2a37d..6fad1f3 100644 (file)
@@ -27,6 +27,8 @@ sub _get_record_for_export {
         return;
     }
 
+    return unless $record;
+
     if ($dont_export_fields) {
         for my $f ( split / /, $dont_export_fields ) {
             if ( $f =~ m/^(\d{3})(.)?$/ ) {
@@ -128,6 +130,7 @@ sub export {
         print "\n";
         for my $record_id (@$record_ids) {
             my $record = _get_record_for_export( { %$params, record_id => $record_id } );
+            next unless $record;
             print MARC::File::XML::record($record);
             print "\n";
         }