[freeside-commits] branch master updated. e0f4d7c4932871a17555b93ef2db49bc6c4c2d35

Mark Wells mark at 420.am
Mon Dec 3 12:14:01 PST 2012


The branch, master has been updated
       via  e0f4d7c4932871a17555b93ef2db49bc6c4c2d35 (commit)
      from  9f88c61407594e6c60226b607cc610b7cbde8953 (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 e0f4d7c4932871a17555b93ef2db49bc6c4c2d35
Author: Mark Wells <mark at freeside.biz>
Date:   Mon Dec 3 12:12:56 2012 -0800

    don't queue spool_upload jobs until all queued_bill jobs are finished, #6802

diff --git a/FS/FS/Cron/upload.pm b/FS/FS/Cron/upload.pm
index ed08a57..ccf8e1a 100644
--- a/FS/FS/Cron/upload.pm
+++ b/FS/FS/Cron/upload.pm
@@ -95,6 +95,29 @@ sub upload {
     }
   } # foreach @agents
 
+  # if there's nothing to do, don't hold up the rest of the process
+  return '' if !@tasks;
+
+  # wait for any ongoing billing jobs to complete
+  if ($opt{m}) {
+    my $dbh = dbh;
+    my $sql = "SELECT count(*) FROM queue LEFT JOIN cust_main USING(custnum) ".
+    "WHERE queue.job='FS::cust_main::queued_bill' AND status != 'failed'";
+    if (@agents) {
+      $sql .= ' AND cust_main.agentnum IN('.
+        join(',', map {$_->agentnum} @agents).
+        ')';
+    }
+    my $sth = $dbh->prepare($sql) or die $dbh->errstr;
+    while (1) {
+      $sth->execute()
+        or die "Unexpected error executing statement $sql: ". $sth->errstr;
+      last if $sth->fetchrow_arrayref->[0] == 0;
+      warn "Waiting 5min for billing to complete...\n" if $DEBUG;
+      sleep 300;
+    }
+  }
+
   foreach (@tasks) {
 
     my $agentnum = $_->{agentnum};
@@ -144,21 +167,6 @@ sub spool_upload {
 
   my $agentnum = $opt{agentnum};
 
-  # wait for any ongoing billing jobs to complete
-  # (should this exclude status='failed')?
-  if ($opt{m}) {
-    my $sql = "SELECT count(*) FROM queue LEFT JOIN cust_main USING(custnum) ".
-    "WHERE queue.job='FS::cust_main::queued_bill'";
-    $sql .= " AND cust_main.agentnum = $agentnum" if $agentnum =~ /^\d+$/;
-    my $sth = $dbh->prepare($sql) or die $dbh->errstr;
-    while (1) {
-      $sth->execute()
-        or die "Unexpected error executing statement $sql: ". $sth->errstr;
-      last if $sth->fetchrow_arrayref->[0] == 0;
-      sleep 300;
-    }
-  }
-
   my $agent;
   if ( $agentnum ) {
     $agent = qsearchs( 'agent', { agentnum => $agentnum } )

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/Cron/upload.pm |   38 +++++++++++++++++++++++---------------
 1 files changed, 23 insertions(+), 15 deletions(-)




More information about the freeside-commits mailing list