Revision: 187
http://devmon.svn.sourceforge.net/devmon/?rev=187&view=rev
Author: buchanmilne
Date: 2010-11-30 11:35:45 +0000 (Tue, 30 Nov 2010)
Log Message:
-----------
Add some database reconnection logic
Modified Paths:
--------------
branches/dbtable/modules/dm_config.pm
Modified: branches/dbtable/modules/dm_config.pm
===================================================================
--- branches/dbtable/modules/dm_config.pm 2010-11-30 11:22:54 UTC (rev 186)
+++ branches/dbtable/modules/dm_config.pm 2010-11-30 11:35:45 UTC (rev 187)
@@ -1102,6 +1102,7 @@
}
print "Verbose: ", $g{'verbose'}, "\n";
do_log("ERROR: Unable to connect to DB ($!)",0);
+ return 0;
}
@@ -1131,10 +1132,15 @@
sub db_get_array {
my ($query) = @_;
do_log("DEBUG DB: select $query") if $g{'debug'};
- my $results = $g{'dbh'}->selectall_arrayref("select $query") or
- do_log("DB query '$query' failed; reconnecting",0)
- and db_connect()
- and return db_get_array($query);
+ my $results = $g{'dbh'}->selectall_arrayref("select $query");
+ if (!$results) {
+ do_log("DB query '$query' failed; reconnecting",0);
+ if (db_connect()) {
+ return db_get_array($query);
+ } else {
+ do_log("ERROR Database reconnection failed",0);
+ }
+ }
return @$results;
}
@@ -1149,10 +1155,15 @@
$cmd =~ s/\\/\\\\/g;
do_log("DEBUG DB: $cmd") if $g{'debug'};
- my $result = $g{'dbh'}->do("$cmd") or
- do_log("DB write '$cmd' failed; reconnecting",0)
- and db_connect()
- and return db_do($cmd);
+ my $result = $g{'dbh'}->do("$cmd");
+ if (!$result) {
+ do_log("DB write '$cmd' failed; reconnecting",0);
+ if (db_connect()) {
+ return db_do($cmd);
+ } else {
+ do_log("ERROR Database reconnection failed",0);
+ }
+ }
return $result;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|