[freeside-commits] freeside/FS/bin freeside-queued,1.44,1.44.2.1
Ivan,,,
ivan at wavetail.420.am
Thu Oct 29 15:56:32 PDT 2009
Update of /home/cvs/cvsroot/freeside/FS/bin
In directory wavetail.420.am:/tmp/cvs-serv26138
Modified Files:
Tag: FREESIDE_1_9_BRANCH
freeside-queued
Log Message:
have freeside-queued be more resillient in the face of a database that's gone away, RT#6428
Index: freeside-queued
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/bin/freeside-queued,v
retrieving revision 1.44
retrieving revision 1.44.2.1
diff -u -d -r1.44 -r1.44.2.1
--- freeside-queued 26 Jun 2009 23:21:45 -0000 1.44
+++ freeside-queued 29 Oct 2009 22:56:30 -0000 1.44.2.1
@@ -107,12 +107,20 @@
$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 @@
$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 @@
$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
};
More information about the freeside-commits
mailing list