import torrus 1.0.9
[freeside.git] / FS / bin / freeside-queued
index d5d84cc..756b699 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w
 
 use strict;
-use vars qw( $DEBUG $kids $max_kids %kids );
+use vars qw( $DEBUG $kids $max_kids $sleep_time %kids );
 use POSIX qw(:sys_wait_h);
 use IO::File;
 use Getopt::Std;
@@ -54,6 +54,7 @@ daemonize2();
 
 my $conf = new FS::Conf;
 $max_kids = $conf->config('queued-max_kids') || 10;
+$sleep_time = $conf->config('queued-sleep_time') || 10;
 
 my $warnkids=0;
 while (1) {
@@ -128,7 +129,7 @@ while (1) {
       undef $FS::UID::dbh;
       next;
     };
-    sleep 1;
+    sleep $sleep_time;
     next;
   }
 
@@ -185,7 +186,7 @@ while (1) {
       dbh->{'private_profile'} = {} if UNIVERSAL::can(dbh, 'sprintProfile');
 
       #auto-use classes...
-      if (    $ljob->job =~ /(FS::(part_export|cust_main)::\w+)::/
+      if (    $ljob->job =~ /(FS::(part_export|cust_main|cust_pkg)::\w+)::/
            || $ljob->job =~ /(FS::\w+)::/
          )
       {
@@ -207,10 +208,14 @@ while (1) {
       warn 'running "&'. $ljob->job. '('. join(', ', @args). ")\n" if $DEBUG;
       eval $eval; #throw away return value?  suppose so
       if ( $@ ) {
-        warn "job $eval failed";
         my %hash = $ljob->hash;
-        $hash{'status'} = 'failed';
         $hash{'statustext'} = $@;
+        if ( $hash{'statustext'} =~ /\/misc\/queued_report/ ) { #use return?
+          $hash{'status'} = 'done'; 
+        } else {
+          $hash{'status'} = 'failed';
+          warn "job $eval failed";
+        }
         my $fjob = new FS::queue( \%hash );
         my $error = $fjob->replace($ljob);
         die $error if $error;