DBIx::Class with fork()

| コメント(0) | トラックバック(0)



わかったわかった。普通の事だった。DBIx::Classに含まれてるforkのテストとか見てなんか色々頭いい事してくれてんだろうなぁ、とか勝手に思ってたけど、なんのことはない。親プロセスがデータベースハンドルをクリアしようとする前+最初に処理が終わった子プロセスの後に終了したその他の子プロセスがクリーンアップしようとしてるときにハンドルが普通にDESTROYされてただけだったよ。


Parallel::ForkManagerのstart()の後にInactiveDestroyを0にしたら直った。



my $schema = Hoge::Schema->connect(...);
my $pfm = Parallel::ForkManager->new(5);
for (@stuff) {
$pfm->start and next;
local $schema->storage->dbh->{InactiveDestroy} = 0;

...
$pfm->finish;
}


その辺りの処理も勝手にやってくれるもんだと思ったんだけど、違ったらしい。まぁ、当たり前だわな。


Author

Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)

#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar


このエントリーをはてなブックマ
ークに追加

翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><

月別アーカイブ