summaryrefslogtreecommitdiffstats
path: root/Bugzilla
diff options
context:
space:
mode:
authorDylan William Hardison <dylan@hardison.net>2018-06-21 17:07:50 +0200
committerGitHub <noreply@github.com>2018-06-21 17:07:50 +0200
commit1024d9b797217682cba6d89e484620782a7bb327 (patch)
treec3ab86a5590eecf30e7e2f901574004e3b5759af /Bugzilla
parent454a5dcf66f9b3eafb61badc6ce61c8ebe52dd96 (diff)
downloadbugzilla-1024d9b797217682cba6d89e484620782a7bb327.tar.gz
bugzilla-1024d9b797217682cba6d89e484620782a7bb327.tar.xz
Bug 1461379 - use DBIx::Connector to manage database connections
Diffstat (limited to 'Bugzilla')
-rw-r--r--Bugzilla/DB.pm19
-rw-r--r--Bugzilla/ModPerl.pm2
2 files changed, 7 insertions, 14 deletions
diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm
index 893c9235e..33801e989 100644
--- a/Bugzilla/DB.pm
+++ b/Bugzilla/DB.pm
@@ -11,6 +11,8 @@ use 5.10.1;
use Moo;
use DBI;
+use DBIx::Connector;
+our %Connector;
has 'dbh' => (
is => 'lazy',
@@ -213,7 +215,6 @@ sub bz_check_server_version {
my ($self, $db, $output) = @_;
my $sql_vers = $self->bz_server_version;
- $self->disconnect;
my $sql_want = $db->{db_version};
my $version_ok = vers_cmp($sql_vers, $sql_want) > -1 ? 1 : 0;
@@ -269,7 +270,6 @@ sub bz_create_database {
}
}
- $dbh->disconnect;
}
# A helper for bz_create_database and bz_check_requirements.
@@ -278,6 +278,7 @@ sub _get_no_db_connection {
my $dbh;
my %connect_params = %{ Bugzilla->localconfig };
$connect_params{db_name} = '';
+ local %Connector = ();
my $conn_success = eval {
$dbh = _connect(\%connect_params);
};
@@ -1261,7 +1262,7 @@ sub _build_dbh {
# set up default attributes used to connect to the database
# (may be overridden by DB driver implementations)
- my $attributes = { RaiseError => 0,
+ my $attributes = { RaiseError => 1,
AutoCommit => 1,
PrintError => 0,
ShowErrorStatement => 1,
@@ -1286,17 +1287,9 @@ sub _build_dbh {
}
}
- # connect using our known info to the specified db
- my $dbh = DBI->connect($dsn, $user, $pass, $attributes)
- or die "\nCan't connect to the database.\nError: $DBI::errstr\n"
- . " Is your database installed and up and running?\n Do you have"
- . " the correct username and password selected in localconfig?\n\n";
+ my $connector = $Connector{"$user.$dsn"} //= DBIx::Connector->new($dsn, $user, $pass, $attributes);
- # RaiseError was only set to 0 so that we could catch the
- # above "die" condition.
- $dbh->{RaiseError} = 1;
-
- return $dbh;
+ return $connector->dbh;
}
#####################################################################
diff --git a/Bugzilla/ModPerl.pm b/Bugzilla/ModPerl.pm
index 89eca9585..19cd1128f 100644
--- a/Bugzilla/ModPerl.pm
+++ b/Bugzilla/ModPerl.pm
@@ -74,7 +74,7 @@ __DATA__
# every process, and Perl has another. (Various Perl modules still use
# the built-in rand(), even though we never use it in Bugzilla itself,
# so we need to srand() both of them.)
-PerlChildInitHandler "sub { Bugzilla::RNG::srand(); srand(); }"
+PerlChildInitHandler "sub { Bugzilla::RNG::srand(); srand(); eval { Bugzilla->dbh->ping } }"
PerlInitHandler Bugzilla::ModPerl::Hostage
PerlAccessHandler Bugzilla::ModPerl::BlockIP