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;