From: <buc...@us...> - 2010-11-30 12:04:47
|
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. |