From 0ceb0f68e3f53d91452d91d262ceea136082c362 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Wed, 7 Mar 2007 19:22:45 +0000 Subject: [PATCH] - Made slave handling more fault tollerant, and slightly higher performing. --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Session.pm | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index cd0ca554f..3d9bfb0c8 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -3,6 +3,7 @@ processing twice as fast. - Made Weather Data asset more fault tollerant. - Made CS related upgrades more fault tollerant. + - Made slave handling more fault tollerant, and slightly higher performing. - Enhanced HTTP caching directives. - fix: Fixing bad link on the Event page to the search engine. Added a new Event template variable called urlSearch to handle it. (perlDreamer Consulting, LLC) diff --git a/lib/WebGUI/Session.pm b/lib/WebGUI/Session.pm index bd5c8418a..00f91f23d 100644 --- a/lib/WebGUI/Session.pm +++ b/lib/WebGUI/Session.pm @@ -183,17 +183,20 @@ Returns a random slave database handler, if one is defined, otherwise it returns sub dbSlave { my $self = shift; unless (exists $self->{_slave}) { + my @slaves = (); foreach (1..3) { my $slave = $self->config->get("dbslave".$_); if (exists $slave->{dsn}) { - push(@{$self->{_slave}},WebGUI::SQL->connect($self, $slave->{dsn},$slave->{user},$slave->{pass})); + push (@slaves, $slave); } } + my $slave = $slaves[rand @slaves]; + $self->{_slave} = WebGUI::SQL->connect($self, $slave->{dsn},$slave->{user},$slave->{pass}); } if ($self->var("adminOn") || !exists $self->{_slave}) { return $self->db; } else { - return $self->{_slave}->[rand @{$self->{_slave}}]; + return $self->{_slave}; } }