On Tue, 11 Feb 2014 00:29:24 +0100 Anthony Milan <anthony.milan@laposte.net> wrote:
Le 10/02/2014 23:29, Scott Penrose a écrit :
Without any actual internal knowledge, my one guess would be forking.
Yes.
If you make a database connection into a variable (e.g. database, or $dbh) then you fork, then you can no longer access that connection. [...] Now it should all be handled, but maybe it isn’t?
Ok. I changed from:
use Dancer::Plugin::Database; my $dbh = database('db1');
to
get '/something/:id' => sub { my $dbh = database('db1');
}
Bingo. Dancer::Plugin::Database caches the handles it gives you, so you can call database() repeatedly and get the same handle back, but takes care that the handles it will give you from the cache are the ones for the current process ID / thread - so if you've forked, it won't accidentally give you one from the parent. If you've got one before a fork and hung on to it yourself, though, it can't help you there :) -- David Precious ("bigpresh") <davidp@preshweb.co.uk> http://www.preshweb.co.uk/ www.preshweb.co.uk/twitter www.preshweb.co.uk/linkedin www.preshweb.co.uk/facebook www.preshweb.co.uk/cpan www.preshweb.co.uk/github