[freeside-commits] branch master updated. 2db2afe957a655c5048031c86441b900c53f4dd2
Ivan Kohler
ivan at freeside.biz
Thu Nov 8 10:51:05 PST 2018
The branch, master has been updated
via 2db2afe957a655c5048031c86441b900c53f4dd2 (commit)
from 6755630dd7c6455050d7444fd109e83615f7de9f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 2db2afe957a655c5048031c86441b900c53f4dd2
Author: Ivan Kohler <ivan at freeside.biz>
Date: Thu Nov 8 10:51:02 2018 -0800
add option for multi-process billing to queue additional jobs for the same customer instead of skipping them, RT#81698
diff --git a/FS/FS/Cron/bill.pm b/FS/FS/Cron/bill.pm
index 30eb1ab28..68d547633 100644
--- a/FS/FS/Cron/bill.pm
+++ b/FS/FS/Cron/bill.pm
@@ -22,7 +22,8 @@ use FS::Log;
# -s: re-charge setup fees
# -v: enable debugging
# -l: debugging level
-# -m: Experimental multi-process mode uses the job queue for multi-process and/or multi-machine billing.
+# -m: Multi-process mode uses the job queue for multi-process and/or multi-machine billing.
+# -q: Multi-process mode: queue additional job instead of skipping
# -r: Multi-process mode dry run option
# -g: Don't bill these pkgparts
@@ -109,12 +110,14 @@ sub bill {
warn "DRY RUN: would add custnum $custnum for queued_bill\n";
} else {
- #avoid queuing another job if there's one still waiting to run
- next if qsearch( 'queue', { 'job' => 'FS::cust_main::queued_bill',
- 'custnum' => $custnum,
- 'status' => 'new',
- }
- );
+ my @waiting = qsearch( 'queue', {
+ 'job' => 'FS::cust_main::queued_bill',
+ 'custnum' => $custnum,
+ 'status' => 'new',
+ }
+ );
+
+ next if @waiting && ! $opt{'q'};
#add job to queue that calls bill_and_collect with options
my $queue = new FS::queue {
@@ -124,6 +127,11 @@ sub bill {
};
my $error = $queue->insert( 'custnum'=>$custnum, %args );
die $error if $error;
+
+ foreach $waiting_queue (@waiting) {
+ $queue->depend_insert($waiting_queue->jobnum);
+ }
+
}
} else {
diff --git a/FS/bin/freeside-daily b/FS/bin/freeside-daily
index f1b7e58ec..6d4182b79 100755
--- a/FS/bin/freeside-daily
+++ b/FS/bin/freeside-daily
@@ -8,7 +8,7 @@ use FS::Log;
&untaint_argv; #what it sounds like (eww)
use vars qw(%opt);
-getopts("p:a:d:vl:sy:nmrkg:ox", \%opt);
+getopts("p:a:d:vl:sy:nmqrkg:ox", \%opt);
my $user = shift or die &usage;
adminsuidsetup $user;
@@ -128,7 +128,7 @@ freeside-daily - Run daily billing and invoice collection events.
=head1 SYNOPSIS
- freeside-daily [ -d 'date' ] [ -y days ] [ -a agentnum,agentnum,... ] [ -s ] [ -o ] [ -v ] [ -l level ] [ -m ] [ -r ] [ -k ] user [ custnum custnum ... ]
+ freeside-daily [ -d 'date' ] [ -y days ] [ -a agentnum,agentnum,... ] [ -s ] [ -o ] [ -v ] [ -l level ] [ -m [ -q ] [ -r ] ] [ -k ] user [ custnum custnum ... ]
=head1 DESCRIPTION
@@ -167,6 +167,8 @@ the bill and collect methods of a cust_main object. See L<FS::cust_main>.
-m: Multi-process mode uses the job queue for multi-process and/or multi-machine billing.
+ -q: When using multi-process mode, queue a additional billing job even if ones for the customer are already in the queue
+
-r: Multi-process mode dry run option
-k: skip notify_flat_delay
-----------------------------------------------------------------------
Summary of changes:
FS/FS/Cron/bill.pm | 22 +++++++++++++++-------
FS/bin/freeside-daily | 6 ++++--
2 files changed, 19 insertions(+), 9 deletions(-)
More information about the freeside-commits
mailing list