Fine generator server-side parallel user/berick/fine-gen-cache-ous
authorBill Erickson <berickxx@gmail.com>
Wed, 19 Jul 2017 15:50:52 +0000 (11:50 -0400)
committerBill Erickson <berickxx@gmail.com>
Wed, 19 Jul 2017 15:50:52 +0000 (11:50 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/support-scripts/fine_generator.pl

index fd030a9..5ae5bac 100755 (executable)
@@ -42,31 +42,20 @@ OpenSRF::System->bootstrap_client( config_file => $config );
 my $settings = OpenSRF::Utils::SettingsClient->new;
 my $parallel = $settings->config_value( fine_generator => 'parallel' ) || 1; 
 
-if ($parallel == 1) {
-
-    my $r = OpenSRF::AppSession
-            ->create( 'open-ils.storage' )
-            ->request( 'open-ils.storage.action.circulation.overdue.generate_fines' );
-
-    while (!$r->complete) { $r->recv };
-
-} else {
-
-    my $multi_generator = OpenSRF::MultiSession->new(
-        app => 'open-ils.storage', 
-        cap => $parallel, 
-        api_level => 1,
+my @reqs;
+for my $slot (1..$parallel) {
+    my $r = OpenSRF::AppSession->create('open-ils.storage')->request(
+        'open-ils.storage.action.circulation.overdue.generate_fines',
+        undef, $parallel, $slot
     );
+    push(@reqs, $r);
+}
 
-    for my $slot (1..$parallel) {
-        $multi_generator->request(
-            'open-ils.storage.action.circulation.overdue.generate_fines',
-            undef, $parallel, $slot
-        );
-    }
-
-    $multi_generator->session_wait(1);
-    $multi_generator->disconnect;
+# Pull responses from the response queue and discard until complete.
+# The first recv response can take a while to arrive.
+while (@reqs) {
+    $_->recv(timeout => 600) foreach @reqs;
+    @reqs = grep {!$_->complete} @reqs;
 }
 
 unlink $lockfile;