Catalyst::Plugin::Session

CatalystのApplicationをmod_perl経由で起動しているのだが、
ある時からapacheのログに下記のエラーが発生するようになった。

[Wed Jul 11 19:37:16 2007] [error] handler MyAPP didn't return a valid return value!

本エラーが発生するhostと発生しないホストがある。
原因不明なので perl -MCPAN -e "autobundle"
してInstall Moduleの比較をしたところ、
Catalyst::Plugin::SessionにVersoinの違いがあることが分かった。

  • エラーの発生しているホスト: 0.16
  • エラーの発生しないホスト: 0.14

エラーの発生しているhostでも、0.14をlib/Catalyst/Plugin/Session.pmに配置すれば動く。

0.14と0.16の差分は、user Carpの追加とfinalize_sessionの順序の違いぐらいなのだが
何が原因なのか・・・

*** 91,99 ****
  sub finalize {
      my $c = shift;

-     $c->finalize_session;
-
      $c->NEXT::finalize(@_);
  }

  sub finalize_session {
--- 92,100 ----
  sub finalize {
      my $c = shift;

      $c->NEXT::finalize(@_);
+
+     $c->finalize_session;
  }