backporting vandelay fixes to support queued ingest requests. backporting missing...
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 4 Dec 2008 23:10:18 +0000 (23:10 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 4 Dec 2008 23:10:18 +0000 (23:10 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_4@11414 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Cat/BibCommon.pm
Open-ILS/src/perlmods/OpenILS/Application/Vandelay.pm

index a14db79..16c6468 100644 (file)
@@ -36,7 +36,7 @@ sub fetch_bib_sources {
 
 
 sub biblio_record_replace_marc  {
-       my($class, $e, $recid, $newxml, $source, $fixtcn, $override) = @_;
+       my($class, $e, $recid, $newxml, $source, $fixtcn, $override, $noingest) = @_;
 
        my $rec = $e->retrieve_biblio_record_entry($recid)
                or return $e->die_event;
@@ -70,15 +70,17 @@ sub biblio_record_replace_marc  {
        $rec->marc( $U->entityize( $marcdoc->documentElement->toString ) );
        $e->update_biblio_record_entry($rec) or return $e->die_event;
 
-    # we don't care about the result, just fire off the request
-    my $ses = OpenSRF::AppSession->create('open-ils.ingest');
-    $ses->request('open-ils.ingest.full.biblio.record', $recid);
+    unless ($noingest) {
+        # we don't care about the result, just fire off the request
+        my $ses = OpenSRF::AppSession->create('open-ils.ingest');
+        $ses->request('open-ils.ingest.full.biblio.record', $recid);
+    }
 
        return $rec;
 }
 
 sub biblio_record_xml_import {
-       my($class, $e, $xml, $source, $auto_tcn, $override) = @_;
+       my($class, $e, $xml, $source, $auto_tcn, $override, $noingest) = @_;
 
        my( $evt, $tcn, $tcn_source, $marcdoc );
 
@@ -107,9 +109,11 @@ sub biblio_record_xml_import {
     $record = $e->create_biblio_record_entry($record) or return $e->die_event;
        $logger->info("marc create/import created new record ".$record->id);
 
-    # we don't care about the result, just fire off the request
-    my $ses = OpenSRF::AppSession->create('open-ils.ingest');
-    $ses->request('open-ils.ingest.full.biblio.record', $record->id);
+    unless ($noingest) {
+        # we don't care about the result, just fire off the request
+        my $ses = OpenSRF::AppSession->create('open-ils.ingest');
+        $ses->request('open-ils.ingest.full.biblio.record', $record->id);
+    }
 
        return $record;
 }
@@ -234,7 +238,7 @@ sub find_free_tcn {
 
                if($tcn) {
                        $marcxml->documentElement->removeChild(
-                               $marcxml->documentElement->findnodes( '//datafield[@tag="035"]' )
+                               $marcxml->documentElement->findnodes( '//marc:datafield[@tag="035"]' )
                        );
                }
        }
index b0e34e2..9d45d17 100644 (file)
@@ -534,6 +534,9 @@ sub import_record_list_impl {
     my $total = @$rec_ids;
     my $count = 0;
     my %queues;
+    my @ingest_queue;
+
+    my $ingest_ses = OpenSRF::AppSession->connect('open-ils.ingest');
 
     for my $rec_id (@$rec_ids) {
 
@@ -562,11 +565,11 @@ sub import_record_list_impl {
             if(defined $overlay_target) {
                 $logger->info("vl: overlaying record $overlay_target");
                 $record = OpenILS::Application::Cat::BibCommon->biblio_record_replace_marc(
-                    $e, $overlay_target, $rec->marc); #$rec->bib_source
+                    $e, $overlay_target, $rec->marc, undef, undef, undef, 1); #$rec->bib_source
             } else {
                 $logger->info("vl: importing new record");
                 $record = OpenILS::Application::Cat::BibCommon->biblio_record_xml_import(
-                    $e, $rec->marc); #$rec->bib_source
+                    $e, $rec->marc, undef, undef, undef, 1); #$rec->bib_source
             }
 
             if($U->event_code($record)) {
@@ -583,6 +586,9 @@ sub import_record_list_impl {
                 next;
             }
 
+            $e->commit;
+            push @ingest_queue, { req => $ingest_ses->request('open-ils.ingest.full.biblio.record', $record->id), rec_id => $record->id };
+
         } else { # authority
 
             my $rec = $e->retrieve_vandelay_queued_authority_record($rec_id);
@@ -623,9 +629,11 @@ sub import_record_list_impl {
                 $e->rollback;
                 next;
             }
+
+            $e->commit;
+            push @ingest_queue, { req => $ingest_ses->request('open-ils.ingest.full.authority.record', $record->id), rec_id => $record->id };
         }
 
-        $e->commit;
         $conn->respond({total => $total, progress => $count, imported => $rec_id}) if (++$count % 10) == 0;
     }
 
@@ -641,7 +649,7 @@ sub import_record_list_impl {
                     $queue->complete('t');
                     $e->update_vandelay_bib_queue($queue) or return $e->die_event;
                     $e->commit;
-                    return;
+                    last
                 }
             }
         } else {
@@ -653,13 +661,20 @@ sub import_record_list_impl {
                     $queue->complete('t');
                     $e->update_vandelay_authority_queue($queue) or return $e->die_event;
                     $e->commit;
-                    return;
+                    last
                 }
             }
         }
     }
-
     $e->rollback;
+
+    $count = 0;
+    for my $ingest (@ingest_queue) {
+        try { $ingest->{req}->gather(1); } otherwise {};
+        $conn->respond({total => $total, progress => $count, imported => $ingest->{rec_id}}) if (++$count % 10) == 0;
+    } 
+
+    $ingest_ses->disconnect();
     return undef;
 }