Skip to content

用 Mongoid 遇到一个奇怪的问题,不知道是不是谁引起的 #36

@huacnlee

Description

@huacnlee

这个错误是偶尔发生的,并且好像只有在 production 环境下面才会有

Errno::EBADF: Bad file descriptor
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/sockets/connectable.rb:16:in `select'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/sockets/connectable.rb:16:in `alive?'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/connection.rb:201:in `with_connection'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/connection.rb:155:in `write'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/node.rb:583:in `block (2 levels) in flush'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/node.rb:150:in `ensure_connected'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/node.rb:582:in `block in flush'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/node.rb:597:in `logging'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/node.rb:581:in `flush'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/node.rb:570:in `process'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/node.rb:370:in `query'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/session/context.rb:44:in `block in query'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/session/context.rb:105:in `block in with_node'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/cluster.rb:251:in `with_secondary'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/session/context.rb:104:in `with_node'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/session/context.rb:43:in `query'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/moped-1.5.0/lib/moped/query.rb:115:in `first'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/mongoid-3.1.4/lib/mongoid/contextual/mongo.rb:196:in `block in first'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/mongoid-3.1.4/lib/mongoid/contextual/mongo.rb:506:in `with_sorting'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/mongoid-3.1.4/lib/mongoid/contextual/mongo.rb:195:in `first'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/gems/mongoid-3.1.4/lib/mongoid/contextual.rb:19:in `first'
/home/huacnlee/www/iPress/app/controllers/application_controller.rb:7:in `current_user'
layouts/application.erb:41:in `render'
(eval):2:in `call'
(eval):2:in `layout'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/bundler/gems/nyara-86ddc80c7203/lib/nyara/view.rb:323:in `call'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/bundler/gems/nyara-86ddc80c7203/lib/nyara/view.rb:323:in `render'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/bundler/gems/nyara-86ddc80c7203/lib/nyara/controller.rb:609:in `render'
/home/huacnlee/www/iPress/app/controllers/posts_controller.rb:15:in `block in <class:PostsController>'
(eval):2:in `__nyara_tmp_action'
/home/huacnlee/.rvm/gems/ruby-2.0.0-p247/bundler/gems/nyara-86ddc80c7203/lib/nyara/controller.rb:223:in `dispatch'

application_controller.rb

def current_user
  @current_user ||= User.where(:_id => session[:user_id]).first
end

moped 里面出错的行 Kernel::select([ self ], nil, [ self ], 0)

def alive?
  if Kernel::select([ self ], nil, [ self ], 0)
    !eof? rescue false
  else
    true
  end
rescue IOError
  false
end

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions