【问题标题】:Sinatra hangs seemingly without a reason西纳特拉似乎无缘无故地挂起
【发布时间】: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 上也一样吗?

标签: ruby ajax sinatra


【解决方案1】:

嗯,肯定是activerecords的错,毕竟……

我切换到 DataMapper 并且错误消失了..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2014-11-02
    相关资源
    最近更新 更多