X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2Fbin%2Ffreeside-queued;h=d5d84cced44442b32c6ade32810c69cccd589b1b;hb=d8ec509e462ab968884b87ebd2c12cc357542299;hp=e97a52caba84644bd88382c46775e2a24e2dbd03;hpb=a83a000a027d1272e813259d09230d701d84df64;p=freeside.git diff --git a/FS/bin/freeside-queued b/FS/bin/freeside-queued index e97a52cab..d5d84cced 100644 --- a/FS/bin/freeside-queued +++ b/FS/bin/freeside-queued @@ -107,12 +107,20 @@ while (1) { $hashref->{'secure'} = ''; } - my @jobs = qsearch({ - 'table' => 'queue', - 'hashref' => $hashref, - 'extra_sql' => $nodepend, - 'order_by' => $order_by, - }); + #qsearch dies when the db goes away + my @jobs = eval { + qsearch({ + 'table' => 'queue', + 'hashref' => $hashref, + 'extra_sql' => $nodepend, + 'order_by' => $order_by, + }); + }; + if ( $@ ) { + warn "WARNING: error searching for jobs, closing connection: $@"; + undef $FS::UID::dbh; + next; + } unless ( @jobs ) { dbh->commit or do { @@ -145,7 +153,12 @@ while (1) { $FS::UID::AutoCommit = 1; - my @args = $ljob->args; + my @args = eval { $ljob->args; }; + if ( $@ ) { + warn "WARNING: error retrieving job arguments, closing connection: $@"; + undef $FS::UID::dbh; + next; + } splice @args, 0, 1, $ljob if $args[0] eq '_JOB'; defined( my $pid = fork ) or do { @@ -155,7 +168,7 @@ while (1) { $hash{'statustext'} = "[freeside-queued] can't fork: $!"; my $ljob = new FS::queue ( \%hash ); my $error = $ljob->replace($job); - die $error if $error; + die $error if $error; #XXX still dying if we can't fork AND we can't connect to the db next; #don't increment the kid counter };