2016-07-07 10 views
0

私はとCatalystX::SimpleLoginと一緒にCatalyst::Plugin::Sessionを使用しています。以前はこれらを複数回使用していましたが、現在は奇妙な動作があります。私が見ていることは、セッションが作成され、削除された後、存在しないセッション行を更新しようとする試みがあり、これがクラッシュすることです。ここでCatalystプラグインセッションを使用する前にセッションを削除しています

INSERT INTO sessions (id) VALUES (?): 'session:ff4732c1779d955a73d31b967db50ba59d3c0573' 

DELETE FROM sessions WHERE (id = ?): 'session:ff4732c1779d955a73d31b967db50ba59d3c0573' 

DELETE FROM sessions WHERE (id = ?): 'flash:ff4732c1779d955a73d31b967db50ba59d3c0573' 

UPDATE sessions SET expires = ?, session_data = ? WHERE (id = ?): '1467954773', 'BQoDAAAABQp5TW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTFfNCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUxLjAuMjcwNC4xMDMgU2FmYXJpLzUzNy4zNgAAAAxfX3VzZXJfYWdlbnQJV33k1QAAAAlfX2NyZWF0ZWQJV33k1QAAAAlfX3VwZGF0ZWQKBXVzZXJzAAAADF9fdXNlcl9yZWFsbQQDAAAAAQiBAAAAAmlkAAAABl9fdXNlcg==', 'session:ff4732c1779d955a73d31b967db50ba59d3c0573' 

は私が見ているデバッグ出力です:

[debug] Created session "ff4732c1779d955a73d31b967db50ba59d3c0573" 

[debug] Created session "aec058e68a823f5711d64b18ad8c53611b1b832f" 

[debug] change_sessid: deleting session data from "ff4732c1779d955a73d31b967db50ba59d3c0573" 

[debug] change_sessid: storing session data to "aec058e68a823f5711d64b18ad8c53611b1b832f" 

そして、ここではクラッシュです:

http://pastebin.com/nWA0X6Lb

私がチェックここで実行されているクエリがありますdelete_session_dataを呼び出す関数はCatalyst::Plugin::Session::change_session_idです。

また、これはCatalyst :: Plugin :: Session :: Store :: DBICの代わりにCatalyst::Plugin::Session::Store::Fileを使用すると機能します。

誰かが間違っている可能性があることを知っていますか?

UPDATE:

私は働く私の他のサーバーのいずれかにチェックし、何らかの理由で削除クエリが存在していないように見えます:

INSERT INTO sessions (id) VALUES (?): 'session:08844c28572b99acd3603d50c2c3975d13c3a4b8' 

UPDATE sessions SET expires = ?, session_data = ? WHERE (id = ?): '1467956394', 'BQcDAAAABgp5TW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTFfNCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzUxLjAuMjcwNC4xMDMgU2FmYXJpLzUzNy4zNgAAAAxfX3VzZXJfYWdlbnQKBXVzZXJzAAAADF9fdXNlcl9yZWFsbQoONTAuMTc0LjI0Mi4yNTMAAAAJX19hZGRyZXNzBAMAAAABCgExAAAAAmlkAAAABl9fdXNlcgoKMTQ2Nzg2OTk5NAAAAAlfX2NyZWF0ZWQKCjE0Njc4Njk5OTQAAAAJX191cGRhdGVk', 'session:08844c28572b99acd3603d50c2c3975d13c3a4b8' 

さらに更新:

私はperl 5.24を使用しています。私はそれが適切かもしれないと思った。古いPerlバージョンをダウンロードして、それが動作するかどうかを調べるつもりです。

答えて

0

私はこの問題を発見したと信じています。 v 0.19にバグが導入されたと思います。今私はバージョン0.18にダウングレードするつもりだため

if($form->process(ctx => $ctx, params => $p)) { 
    #$ctx->change_session_id; 

    $self->remember_me($ctx, $form->field('remember')->value); 

    $self->do_post_login_redirect($ctx); 
} 

:私が見つけた修正はログインコントローラで、この行をコメントアウトました。

関連する問題