From: ivan Date: Fri, 17 Apr 2009 19:50:11 +0000 (+0000) Subject: add priority to job queue so billing jobs don't don't drown out provisioning jobs X-Git-Tag: root_of_svc_elec_features~1258 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=4ee28b411fa819a420926b8a6e60be043fdb1d2e add priority to job queue so billing jobs don't don't drown out provisioning jobs --- diff --git a/FS/FS/Cron/bill.pm b/FS/FS/Cron/bill.pm index 633405693..2e432cd27 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 c7bbf614c..66be8b6d4 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 d4f09c18d..8c07638b3 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',