From 211d5eb21aeb28cb4c465c0218398b26f325571e Mon Sep 17 00:00:00 2001 From: Alexandre Morignot <erdnaxeli@cervoi.se> Date: Wed, 11 Feb 2015 11:01:48 +0100 Subject: [PATCH] handle db deconnection --- lib/utils/db/query.pm | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/utils/db/query.pm b/lib/utils/db/query.pm index 4175512..bfe00fc 100644 --- a/lib/utils/db/query.pm +++ b/lib/utils/db/query.pm @@ -72,7 +72,7 @@ sub _get_next { # there is no more data to fetch $self->_sth->{$chan} = undef; - $self->_dbh->{$chan}->commit(); + $self->_get_dbh($chan)->commit(); return undef; } @@ -83,12 +83,9 @@ sub _init { if (defined $self->_sth->{$chan}) { $self->_sth->{$chan}->finish(); } - elsif (not defined $self->_dbh->{$chan}) { - $self->_dbh->{$chan} = utils::db::get_new_session(); - } my ($request, @args) = $self->_prepare_request($query); - my $sth = $self->_dbh->{$chan}->prepare($request); + my $sth = $self->_get_dbh($chan)->prepare($request); $sth->execute(@args); $self->_sth->{$query->chan} = $sth; @@ -167,4 +164,16 @@ sub _prepare_request { return ($req, @args); } +sub _get_dbh { + my ($self, $chan) = @_; + + if (not defined $self->_dbh->{$chan} or + not $self->_dbh->{$chan}->ping + ) { + $self->_dbh->{$chan} = utils::db::get_new_session(); + } + + return $self->_dbh->{$chan}; +} + 1; -- GitLab