Doran Barton wrote:
> I'm a relative newbie with DBIx::Class- but recently deployed a new web 
> application using it. The application works great and thanks to DBIx::Class, 
> it took less time to do.
> 
> The application is implemented as mod_perl content handler. I am using 
> Apache::DBI, as with other mod_perl applications, to maintain persistent 
> connections to our PostgreSQL database. However, since deploying this 
> application, we frequently exhaust our database connections. I think, 
> perhaps, DBIx::Class is not taking advantage of Apache::DBI.

The problem is that if you open a handle before MP fork with Apache::DBI it 
hangs onto it, resulting in all sorts of interesting explosions with 
DBIx::Class, which then ends up with a duff connection handle.

As a result, in its quest to be fork- and thread- safe, DBIx::Class avoids 
using the Apache::DBI connection stuff. I'm not sure how that would result in 
exhausting db connections though since DBIx::Class keeps its connection 
persistent so it should only need one per process/thread using it.

If you can recommend some sort of half-way house that allows DBIC to keep its 
users from unexpected crashes but still supports Apache::DBI use, I'd be 
interested to hear.

I can also think of two possible workarounds - (1) use sqlrelay for thread 
pooling, (2) override Storage::DBI's connect() method to not route round 
Apache::DBI and keep an eye on your connections yourself.

-- 
      Matt S Trout       Offering custom development, consultancy and support
   Technical Director    contracts for Catalyst, DBIx::Class and BAST. Contact
Shadowcat Systems Ltd.  mst (at) shadowcatsystems.co.uk for more information

+ Help us build a better perl ORM: http://dbix-class.shadowcatsystems.co.uk/ +

_______________________________________________
List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
Wiki: http://dbix-class.shadowcatsystems.co.uk/
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/

Reply via email to