#!/usr/bin/perl
-#----------------------------------------------------------------
-# Batch hold targeter
-#----------------------------------------------------------------
use strict;
use warnings;
use OpenSRF::System;
use OpenILS::Utils::Fieldmapper;
use OpenILS::Utils::HoldTargeter;
#----------------------------------------------------------------
+# Batch hold (re)targeter
+#
# Usage:
# ./hold_targeter.pl /openils/conf/opensrf_core.xml
#----------------------------------------------------------------
my $osrf_config = shift || '/openils/conf/opensrf_core.xml';
my $lockfile = shift || "/tmp/hold_targeter-LOCK";
-if (-e $lockfile) {
- die "I seem to be running already. If not remove $lockfile, try again\n";
-}
+die "I seem to be running already. If not remove $lockfile, try again\n"
+ if -e $lockfile;
-open(F, ">$lockfile") or die "Cannot open lock file: $lockfile : $@\n";
-print F $$ or die "Cannot write to lock file: $lockfile : $@\n";
-close F;
+open(LOCK, ">$lockfile") or die "Cannot open lock file: $lockfile : $@\n";
+print LOCK $$ or die "Cannot write to lock file: $lockfile : $@\n";
+close LOCK;
eval { # Make sure we can delete the lock file.
my $start = time;
my $count = $targeter->target(
- # Return only the number processed,
- # instead of a result blob for each hold.
- return_count => 1
+ #skip_viable => 1, # Testing: only re-target non-viable holds.
+ return_count => 1 # Return count, not per-hold results.
);
- my $minutes = sprintf('%0.2f', (time - $start) / 60);
+ my $minutes = sprintf('%0.2f', (time - $start) / 60.0);
print "Processed $count holds in $minutes minutes.\n";
};