summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2009-04-17 19:50:11 +0000
committerivan <ivan>2009-04-17 19:50:11 +0000
commit4ee28b411fa819a420926b8a6e60be043fdb1d2e (patch)
tree82f6e390fe6044f33b37899367d41a76ee63b56b
parent8a5bf08dfcc3e44ac3c5e8015ccce494d991025e (diff)
add priority to job queue so billing jobs don't don't drown out provisioning jobs
-rw-r--r--FS/FS/Cron/bill.pm5
-rw-r--r--FS/FS/Schema.pm1
-rw-r--r--FS/bin/freeside-queued9
3 files changed, 10 insertions, 5 deletions
diff --git a/FS/FS/Cron/bill.pm b/FS/FS/Cron/bill.pm
index 6334056..2e432cd 100644
--- a/FS/FS/Cron/bill.pm
+++ b/FS/FS/Cron/bill.pm
@@ -129,8 +129,9 @@ END
#add job to queue that calls bill_and_collect with options
my $queue = new FS::queue {
- 'job' => 'FS::cust_main::queued_bill',
- 'secure' => 'Y',
+ 'job' => 'FS::cust_main::queued_bill',
+ 'secure' => 'Y',
+ 'priority' => 99, #don't get in the way of provisioning jobs
};
my $error = $queue->insert( 'custnum'=>$custnum, %args );
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index c7bbf61..66be8b6 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -1504,6 +1504,7 @@ sub tables_hashref {
'svcnum', 'int', 'NULL', '', '', '',
'custnum', 'int', 'NULL', '', '', '',
'secure', 'char', 'NULL', 1, '', '',
+ 'priority', 'int', 'NULL', '', '', '',
],
'primary_key' => 'jobnum',
'unique' => [],
diff --git a/FS/bin/freeside-queued b/FS/bin/freeside-queued
index d4f09c1..8c07638 100644
--- a/FS/bin/freeside-queued
+++ b/FS/bin/freeside-queued
@@ -84,9 +84,12 @@ while (1) {
my $nodepend = 'AND 0 = ( SELECT COUNT(*) FROM queue_depend'.
' WHERE queue_depend.jobnum = queue.jobnum )';
- my $order_by = "ORDER BY jobnum ". ( driver_name eq 'mysql'
- ? 'LIMIT 1 FOR UPDATE'
- : 'FOR UPDATE LIMIT 1' );
+ #anything with a priority goes after stuff without one
+ my $order_by = ' ORDER BY COALESCE(priority,0) ASC, jobnum ASC ';
+
+ $order_by .= ( driver_name eq 'mysql'
+ ? ' LIMIT 1 FOR UPDATE '
+ : ' FOR UPDATE LIMIT 1 ' );
my $job = qsearchs({
'table' => 'queue',