origin icon indicating copy to clipboard operation
origin copied to clipboard

`NoMethodError: undefined method `[]' for nil:NilClass` on Origin::Selectable#where

Open fancyremarker opened this issue 12 years ago • 1 comments

This exception has been appearing for us frequently, but not deterministically. I'm having a very hard time pinpointing what's going wrong, but am happy to debug further if you have any hints or intuition about what might be causing the bug.

The full backtrace is as follows. This is on Origin 1.1.0, Mongoid 3.1.4 and Ruby 1.9.3-p448.

#<NoMethodError: undefined method `[]' for nil:NilClass>
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/smash.rb:81:in `storage_pair'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/selector.rb:43:in `store'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/smash.rb:22:in `block (2 levels) in __deep_copy__'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/smash.rb:21:in `each_pair'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/smash.rb:21:in `block in __deep_copy__'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/smash.rb:42:in `initialize'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/smash.rb:20:in `new'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/smash.rb:20:in `__deep_copy__'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/queryable.rb:74:in `initialize_copy'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/mongoid-3.1.4/lib/mongoid/criteria.rb:489:in `initialize_copy'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/selectable.rb:603:in `initialize_clone'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/selectable.rb:603:in `clone'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/selectable.rb:603:in `selection'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/selectable.rb:545:in `expr_query'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/origin-1.1.0/lib/origin/selectable.rb:451:in `where'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/mongoid-3.1.4/lib/mongoid/criteria.rb:390:in `where'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/mongoid-3.1.4/lib/mongoid/criterion/findable.rb:125:in `from_database'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/mongoid-3.1.4/lib/mongoid/criterion/findable.rb:93:in `multiple_from_map_or_db'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/mongoid-3.1.4/lib/mongoid/criterion/findable.rb:19:in `execute_or_raise'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/mongoid-3.1.4/lib/mongoid/criterion/findable.rb:40:in `find'
$HOME/.rvm/gems/ruby-1.9.3-p448@rails-heat/gems/mongoid-3.1.4/lib/mongoid/finders.rb:85:in `find'
$HOME/webapp/app/controllers/thing_controller.rb:34:in `show'

fancyremarker avatar Aug 07 '13 20:08 fancyremarker

I should add that when I wrap the above Thing.find call in a begin ; rescue ; end block, I'm able to call Thing.find within the rescue and it works as expected. So I feel like there's some thread safety issue whereby @aliases is not properly set on the cloned object.

fancyremarker avatar Aug 07 '13 21:08 fancyremarker