diff options
author | ivan <ivan> | 2009-04-17 19:50:11 +0000 |
---|---|---|
committer | ivan <ivan> | 2009-04-17 19:50:11 +0000 |
commit | 4ee28b411fa819a420926b8a6e60be043fdb1d2e (patch) | |
tree | 82f6e390fe6044f33b37899367d41a76ee63b56b | |
parent | 8a5bf08dfcc3e44ac3c5e8015ccce494d991025e (diff) |
add priority to job queue so billing jobs don't don't drown out provisioning jobs
-rw-r--r-- | FS/FS/Cron/bill.pm | 5 | ||||
-rw-r--r-- | FS/FS/Schema.pm | 1 | ||||
-rw-r--r-- | FS/bin/freeside-queued | 9 |
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', |