Just for background, I have inherited a Catalyst/TT/Postgresql/Apache2/mod_perl web application. The programmer that was responsible for the design and initial coding left our company and is unavailable for consults. I am very new to Catalyst, fair level of experience in TT, Perl and postgresql. Very little experience in Apache and none in mod_perl. I'm an old C and ASM programmer, stumbling my way through the web-centric world -- and actually liking it, until this problem! :-)

The program seems to be working fine while on the Catalyst test server, and when on an Apache/mod_perl server when the postgres database is on the same physical server. The database connections don't start leaking until we attempt to use a separate (physical) database server. We verified this using iptraf and seeing none of the connections being re-used *or* closed.

The following two modules are present in the system:

---------------------------
package MyApp::Model::DBI;

use warnings;
use strict;

use base 'Catalyst::Model::DBI';

__PACKAGE__->config(
    dsn      => 'dbi:Pg:dbname=xyz',
    user     => 'xyz',
    password => 'xyz',
    options  => {AutoCommit => 1, RaiseError=>1}
);
---------------------------

---------------------------
package MyApp::Model::Default;

use warnings;
use strict;

use base qw(
     Catalyst::Model::DBIC::Schema
);


__PACKAGE__->config(
    schema_class => 'MyApp::Schema',
    connect_info => [
        'dbi:Pg:dbname=xyz',
        'xyz',
        'xyz',
    ],
);
---------------------------

My gut feeling is this may be part of the problem, but the Model::DBI is needed for direct SQL queries (many weeks of work needed to convert them to the Catalyst method) and the current authentication system, while the Model::Default is needed for all the Model::* packages using the Catalyst system. (A script utilizing DBIx::Class::Schema::Loader keeps all of our Schema files matched to the database.)

The 'dsn' entry in the above files works fine for the web server and database server on one machine. When we change it to:

   'dbi:Pg:dbname=xyz;host=10.10.0.34'

to access a different server for the database, that's when the connection leaking goes nuts -- the program still works fine until it dies from lack of connections. I've been searching the web and not finding many answers.

I've gone through about a year's worth of msgs on this mailing list and didn't see anything that helped. If someone could point me to some documents or threads or other source of info (or maybe a more appropriate mailing list if I picked wrong!) that could shed light on this for me, I'd be grateful. And my one, remaining, brain cell would last me a while longer . . .

--
Kevin Nathan
[EMAIL PROTECTED]



_______________________________________________
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[EMAIL PROTECTED]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to