【发布时间】:2010-09-27 20:01:20
【问题描述】:
我对 sinatra 有一个奇怪的问题...
在我的应用程序中,登录表单正在使用 AJAX 实时检查昵称是否已被占用或免费...这在 90% 的情况下都可以正常工作...但有时,随机地,我不再从给定的路由中得到任何响应...在控制台日志中,该路由的所有新请求都丢失了,就好像我没有发送任何东西一样...但是其他路由似乎很好...
当这种情况发生时,如果我关闭 sinatra,它就会开始明显挂起。它说:
[2010-08-29 22:41:12] INFO going to shutdown ...
但在我关闭控制台窗口之前,该进程不会终止。
我检查了我的客户端代码 - 它工作正常......我还检查了路由本身的代码......(只有大约 7 行) - 它也很好(唯一的方法,访问数据库的方法,在所有其他情况下都能完美运行)
所以我想出的唯一解释是它一定是一个 Sinatra 错误......
有人经历过类似的事情吗?如果不是……你同意吗?我应该提交错误报告吗?我应该在报告中写些什么?这个bug太多了……随机……
UPDATE:
enable :lock unfortunately doesn'nt help...
I tried to use hijack... it doesn't seem to work on the process
(I used the pid given by WEBrick)
【问题讨论】:
-
你能发布导致这种情况的代码吗?可能是您的竞争条件导致某种锁定。在您的 sinatra 配置中尝试
enable :lock。 -
我不知道究竟是什么原因造成的...你可以在这里看到所有内容:github.com/apirogov/Aphorism 请参阅 ajax_funcs.rb 中的“check_nickname”和 login.js 中的对应项...
-
只是为了验证...您可以在浏览器中看到正在发出的请求,但您没有在您的 sinatra 应用程序上收到日志消息?或者你看到请求在服务器端进来,但它从不响应客户端?
-
第一件事 - 我看到正在发送的帖子(在 Firebug 中)......帖子完全没问题 - 只是等待回复......
-
在 jruby 上也一样吗?