Bignum to Fixnum ClassCastException under JRUBY

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Gone away
    • Priority: Major - P3
    • None
    • Affects Version/s: 5.1.5
    • Component/s: None
    • None
    • Environment:
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      I am having trouble with using Mongoid in a Rails app under JRuby. I can insert records and count records, but any attempt to query results in the following:

      irb(main):004:0> ConnectionErrorLog.first
      
      D, [2017-01-24T19:08:13.236000 #278] DEBUG -- : MONGODB | Adding mongo:27017 to the cluster.
      D, [2017-01-24T19:08:13.341000 #278] DEBUG -- : MONGODB | mongo:27017 | mongoid.find | STARTED | {"find"=>"connection_error_logs", "filter"=>{}, "limit"=>1, "singleBatch"=>true}
      D, [2017-01-24T19:08:13.389000 #278] DEBUG -- : MONGODB | mongo:27017 | mongoid.find | SUCCEEDED | 0.004s
      
      Java::JavaLang::ClassCastException: org.jruby.RubyBignum cannot be cast to org.jruby.RubyFixnum
      
      from org.jruby.RubyBasicObject.addFinalizer(RubyBasicObject.java:1217)
      from org.jruby.runtime.ObjectSpace.addFinalizer(ObjectSpace.java:118)
      from org.jruby.RubyObjectSpace.define_finalizer(RubyObjectSpace.java:83)
      from org.jruby.RubyObjectSpace$INVOKER$s$0$1$define_finalizer.call(RubyObjectSpace$INVOKER$s$0$1$define_finalizer.gen)
      from org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:218)
      from org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:214)
      from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
      from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
      from org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
      from org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
      from org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
      from org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
      from org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:290)
      from org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:243)
      from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:376)
      from org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:247)
      ... 291 levels...
      from org.jruby.RubyKernel$INVOKER$s$1$0$require19.call(RubyKernel$INVOKER$s$1$0$require19.gen)
      from org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:350)
      from org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
      from org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
      from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
      from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
      from script.rails.__file__(script/rails:6)
      from script.rails.load(script/rails)
      from org.jruby.Ruby.runScript(Ruby.java:857)
      from org.jruby.Ruby.runScript(Ruby.java:850)
      from org.jruby.Ruby.runNormally(Ruby.java:729)
      from org.jruby.Ruby.runFromMain(Ruby.java:578)
      from org.jruby.Main.doRunFromMain(Main.java:393)
      from org.jruby.Main.internalRun(Main.java:288)
      from org.jruby.Main.run(Main.java:217)
      from org.jruby.Main.main(Main.java:197)irb(main)
      

      I am having trouble with using Mongoid in a Rails app under JRuby. I can insert records and count records, but any attempt to query results in the following:

      irb(main):004:0> ConnectionErrorLog.first

      D, 2017-01-24T19:08:13.236000 #278 DEBUG – : MONGODB | Adding mongo:27017 to the cluster.
      D, 2017-01-24T19:08:13.341000 #278 DEBUG – : MONGODB | mongo:27017 | mongoid.find | STARTED | {"find"=>"connection_error_logs", "filter"=>{}, "limit"=>1, "singleBatch"=>true}
      D, 2017-01-24T19:08:13.389000 #278 DEBUG – : MONGODB | mongo:27017 | mongoid.find | SUCCEEDED | 0.004s

      Java::JavaLang::ClassCastException: org.jruby.RubyBignum cannot be cast to org.jruby.RubyFixnum

      from org.jruby.RubyBasicObject.addFinalizer(RubyBasicObject.java:1217)
      from org.jruby.runtime.ObjectSpace.addFinalizer(ObjectSpace.java:118)
      from org.jruby.RubyObjectSpace.define_finalizer(RubyObjectSpace.java:83)
      from org.jruby.RubyObjectSpace$INVOKER$s$0$1$define_finalizer.call(RubyObjectSpace$INVOKER$s$0$1$define_finalizer.gen)
      from org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:218)
      from org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:214)
      from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
      from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
      from org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
      from org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
      from org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
      from org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
      from org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:290)
      from org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:243)
      from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:376)
      from org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:247)
      ... 291 levels...
      from org.jruby.RubyKernel$INVOKER$s$1$0$require19.call(RubyKernel$INVOKER$s$1$0$require19.gen)
      from org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:350)
      from org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
      from org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
      from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
      from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
      from script.rails._file_(script/rails:6)
      from script.rails.load(script/rails)
      from org.jruby.Ruby.runScript(Ruby.java:857)
      from org.jruby.Ruby.runScript(Ruby.java:850)
      from org.jruby.Ruby.runNormally(Ruby.java:729)
      from org.jruby.Ruby.runFromMain(Ruby.java:578)
      from org.jruby.Main.doRunFromMain(Main.java:393)
      from org.jruby.Main.internalRun(Main.java:288)
      from org.jruby.Main.run(Main.java:217)
      from org.jruby.Main.main(Main.java:197)irb(main)
      I am using the following versions:

      Rails 4.1.13
      JRUBY 1.7.23
      Mongoid Gem 5.1.5
      Mongo Gem 2.3.1
      Mongodb server 3.2.11
      I am somewhat at a loss as to how to debug this further. I have stripped my model down to the minimum:

      class ConnectionErrorLog
        include Mongoid::Document
      end
      
      development_docker:
        clients:
          default:
            database: mongoid
            hosts:
              - mongo:27017
      

            Assignee:
            Emily Stolfo (Inactive)
            Reporter:
            Byron Appelt
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: