Read STDIN up to record separator then stop user/berick/marc-stream-importer-read-repair
authorBill Erickson <berick@esilibrary.com>
Tue, 27 Sep 2011 20:14:59 +0000 (16:14 -0400)
committerBill Erickson <berick@esilibrary.com>
Tue, 27 Sep 2011 20:17:24 +0000 (16:17 -0400)
The initial (and only known) target for the importer is OCLC Connexion
exports, which export 1 record at a time, with each record ending with
the standard record separator.  There is no end-of-file /
end-of-transmission indicator, so the while() loop always blocks and
fails on the timeout alarm after the first record is read.

Until a more flexible solution is in place, roll back support for
reading multiple records via STDIN.  The original commit was

679506975f0efb6e2f6f17b0c19e3c53c5bfda44

Note, the feature being rolled back was not actually necessary to
implement the feature in the commit (file-based imports).  It was just
an added bonus.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/support-scripts/marc_stream_importer.pl

index 2549222..d288504 100755 (executable)
@@ -380,10 +380,7 @@ sub process_request {   # The core Net::Server method
         local $SIG{ALRM} = sub { die "alarm\n" };
         alarm $wait_time; # prevent accidental tie ups of backend processes
         local $/ = "\x1D"; # MARC record separator
-        while (my $newline = <STDIN>) {
-            $data .= $newline;
-            alarm $wait_time; # prevent accidental tie ups of backend processes
-        }
+        $data = <STDIN>;
         alarm 0;
     };