2010年2月1日9:15 <cgrf...@ybb.ne.jp>:
> ページ遷移の際(特にフォーム画面に行く時)に以下のメッセージのバグが稀に起こります。
>
> No such file or directory - C:/Program Files/Apache Software
> Foundation/Apache2.2/htdocs/kagemai/project/_tmp/kagemai_6ae9a013ee6af806.lock
> (Errno::ENOENT)
使用しているデータの保存形式は XMLStore ですよね。
エラーが起きたときに、apache のエラーログにスタックトレースが出力されていると思います。
それを見せてもらえるでしょうか。
また、使用している Ruby の種類とバージョンについても教えてください。
ちなみに、
>C:/Program Files/Apache Software
> Foundation/Apache2.2/htdocs/kagemai/project/_tmp/
この _tmp というディレクトリはちゃんとあるでしょうか?
--
FUKUOKA Tomoyuki
> 使用しているデータの保存形式は XMLStore ですよね。
はい。
> エラーが起きたときに、apache のエラーログにスタックトレースが出力されていると思います。
> それを見せてもらえるでしょうか。
以下でよろしいでしょうか。
[Thu Nov 26 15:07:52 2009] [error] [client 127.0.0.1] No such file or
directory - C:/Program Files/Apache Software Foundation/Apache2.2/
htdocs/kagemai/project/_tmp/kagemai_6ae9a013ee6af806.lock
(Errno::ENOENT)\r, referer:
http://localhost/kagemai/html/admin.cgi?query_project=1&query_action=top&project=1&action=view_report&id=4
> また、使用している Ruby の種類とバージョンについても教えてください。
Cbubyでバージョンは 1.8.6になります。
参考までにruby -vの結果です。
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]
> >C:/Program Files/Apache Software
> > Foundation/Apache2.2/htdocs/kagemai/project/_tmp/
> この _tmp というディレクトリはちゃんとあるでしょうか?
はい、あります。
以上、よろしくお願い致します。
>> エラーが起きたときに、apache のエラーログにスタックトレースが出力されていると思います。
>> それを見せてもらえるでしょうか。
>
> 以下でよろしいでしょうか。
デフォルトだとスタックトレースってでないんでしたっけ。
guest.cgi の先頭付近に、$KAGEMAI_DEBUG という変数が定義されているので、
それを、
$KAGEMAI_DEBUG = true
として見てください。エラー時に詳細な情報が出るようになると思います。
> [Thu Nov 26 15:07:52 2009] [error] [client 127.0.0.1] No such file or
> directory - C:/Program Files/Apache Software Foundation/Apache2.2/
> htdocs/kagemai/project/_tmp/kagemai_6ae9a013ee6af806.lock
> (Errno::ENOENT)\r, referer:
> http://localhost/kagemai/html/admin.cgi?query_project=1&query_action=top&project=1&action=view_report&id=4
>
>> また、使用している Ruby の種類とバージョンについても教えてください。
>
> Cbubyでバージョンは 1.8.6になります。
>
> 参考までにruby -vの結果です。
> ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]
>
>> >C:/Program Files/Apache Software
>> > Foundation/Apache2.2/htdocs/kagemai/project/_tmp/
>> この _tmp というディレクトリはちゃんとあるでしょうか?
>
> はい、あります。
>
> 以上、よろしくお願い致します。
>
--
FUKUOKA Tomoyuki
No such file or directory - C:/Program Files/Apache Software
Foundation/Apache2.2/htdocs/kagemai/project/_tmp/
kagemai_ba5a46f4495ef9e3.lock (Errno::ENOENT)
C:/Ruby/lib/ruby/1.8/cgi/session.rb:394:in `initialize'
C:/Ruby/lib/ruby/1.8/cgi/session.rb:394:in `open'
C:/Ruby/lib/ruby/1.8/cgi/session.rb:394:in `restore'
C:/Ruby/lib/ruby/1.8/cgi/session.rb:311:in `[]='
C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
lib/kagemai/cgi/form_handler.rb:140:in `start_form'
C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
lib/kagemai/cgi/action/new_form.rb:37:in `execute'
C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
lib/kagemai/kagemai.rb:88:in `action'
./guest.cgi:71:in `execute'
C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
html/admin.cgi:8
よろしくお願い致します。
正直言って追い切れてないのですが、lib/kagemai/cgi/form_handler.rb を
以下のように修正するとどうでしょうか。
Index: form_handler.rb
===================================================================
--- form_handler.rb (revision 625)
+++ form_handler.rb (working copy)
@@ -137,6 +137,7 @@
ADD_MESSAGE_FORM = 'add message form'
def start_form(form_id)
+ @session.update
@session['form'] = form_id
end
2010年2月8日18:58 まきの <cgrf...@ybb.ne.jp>:
--
FUKUOKA Tomoyuki
2010年2月10日2:04 FUKUOKA Tomoyuki <to.fu...@gmail.com>:
> 正直言って追い切れてないのですが、lib/kagemai/cgi/form_handler.rb を
> 以下のように修正するとどうでしょうか。
これだとダメそうな気がしてきました。
_tmp ディレクトリの中にいろいろファイルが入ってるかもしれませんが、
それらをすべて削除してみると症状が変わったりしないでしょうか?
# _tmp ディレクトリの中のファイルは消しても基本的に問題ありません。
--
FUKUOKA Tomoyuki
_tempの中のファイルをすべて消してみました。
今のところ例の症状は出ていませんが
このバグは稀にしか起こらないので症状が変わったかどうかを
これによって判断できません。
バグの起こるタイミング的に影舞のソースをいじったあとに
起こっているような気がするのですが
ソースをいじったあとは_tempの中のファイルを削除したほうがよろしいのでしょうか?
On 2月10日, 午前3:16, FUKUOKA Tomoyuki <to.fuku...@gmail.com> wrote:
> 福岡です。
>
> 2010年2月10日2:04 FUKUOKA Tomoyuki <to.fuku...@gmail.com>:
>
> > 正直言って追い切れてないのですが、lib/kagemai/cgi/form_handler.rb を
> > 以下のように修正するとどうでしょうか。
>
> これだとダメそうな気がしてきました。
> _tmp ディレクトリの中にいろいろファイルが入ってるかもしれませんが、
> それらをすべて削除してみると症状が変わったりしないでしょうか?
> # _tmp ディレクトリの中のファイルは消しても基本的に問題ありません。
>
>
>
>
>
> > Index: form_handler.rb
> > ===================================================================
> > --- form_handler.rb (revision 625)
> > +++ form_handler.rb (working copy)
> > @@ -137,6 +137,7 @@
> > ADD_MESSAGE_FORM = 'add message form'
>
> > def start_form(form_id)
> > + @session.update
> > @session['form'] = form_id
> > end
>
> > 2010年2月8日18:58 まきの <cgrfy...@ybb.ne.jp>:
> >> $KAGEMAI_DEBUG = trueとすると以下のようなエラー情報が出力されました。
>
> >> No such file or directory - C:/Program Files/Apache Software
> >> Foundation/Apache2.2/htdocs/kagemai/project/_tmp/
> >> kagemai_ba5a46f4495ef9e3.lock (Errno::ENOENT)
>
> >> C:/Ruby/lib/ruby/1.8/cgi/session.rb:394:in `initialize'
> >> C:/Ruby/lib/ruby/1.8/cgi/session.rb:394:in `open'
> >> C:/Ruby/lib/ruby/1.8/cgi/session.rb:394:in `restore'
> >> C:/Ruby/lib/ruby/1.8/cgi/session.rb:311:in `[]='
> >> C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
> >> lib/kagemai/cgi/form_handler.rb:140:in `start_form'
> >> C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
> >> lib/kagemai/cgi/action/new_form.rb:37:in `execute'
> >> C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
> >> lib/kagemai/kagemai.rb:88:in `action'
> >> ./guest.cgi:71:in `execute'
> >> C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/kagemai/
> >> html/admin.cgi:8
>
> >> よろしくお願い致します。
>
> > --
> > FUKUOKA Tomoyuki
>
> --
> FUKUOKA Tomoyuki- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
エラーが起きている場所ですが、フォームのためにセッション情報を
読み込もうとしている部分です。このセッション情報は、情報を保存する
ファイルそのものと、それを読み書きする際のロックファイルが使われています。
たとえば、
kagemai_e78959bddf0d3c60
というファイルがセッション情報の格納につかわれるとき、
kagemai_e78959bddf0d3c60.lock
というファイルがロックファイルとして作成されます。
kagemai_ の後ろの英数字は、セッションIDのダイジェスト値なので
簡単にはかぶらない値だと思います。
問題のエラーですが、セッション情報のファイルは存在するが、
ロックファイルは存在しない、という状況が起きたときに発生するようです。
私の手元で、.lock ファイルだけを意図的に手で削除した場合、最初に示された
のと同じエラーが発生しました。
ただし、普通に使っている場合には両方のファイルは同時に作成されますし、
影舞には、.lock ファイルだけを削除するようなコードは入っていません。
一応、管理者ページが表示された際に、一定時間を経過したセッション情報ファイルと
.lock ファイルの両方を削除するようになっていますが、手元で試したところ、
.lock ファイルだけが削除されるということにはなりませんでした。
> バグの起こるタイミング的に影舞のソースをいじったあとに
> 起こっているような気がするのですが
> ソースをいじったあとは_tempの中のファイルを削除したほうがよろしいのでしょうか?
影舞のソースを書き換えているのであれば、私にはわかりません。
ソースの書き換えによって起こるのであれば、その書き換えが
問題の原因なのではないかと少し思ってしまうのですが。。。
オリジナルの影舞で同じ現象は起きるのでしょうか?
--
FUKUOKA Tomoyuki
オリジナルの影舞で試したことろ例の現象は確認できませんでした。
>ソースの書き換えによって起こるのであれば、その書き換えが
>問題の原因なのではないかと少し思ってしまうのですが。。。
原因があるとすれば間違いなく私のソース書き換え、もしくは環境が原因だと思います。
お教え頂い情報を元に調査を続けてみたいと思います。