Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-11744

Assert on $mod query with an invalid argument instead of a proper error

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Minor - P4 Minor - P4
    • 2.5.5
    • Affects Version/s: 2.4.8
    • Component/s: Internal Code
    • Labels:
      None
    • ALL

      The query {$mod : 1} is not valid, indeed. It is expected that MongoDB does not process it and returns a proper error. Instead, an assertion failure happens there and an unfriendly error is returned.

      MongoDB shell version: 2.4.8
      Example command invoked on a test.test:

      > db.test.find({foo : {$mod : 1}})
      error: {
              "$err" : "assertion d:\\slave\\windows_32bit_v2.4\\mongo\\src\\mongo\\db\\../bson/bson-inl.h:183"
      }
      

      Log:

      Sat Nov 16 17:14:15.235 [conn200]  test.test Assertion failure isABSONObj() d:\slave\windows_32bit_v2.4\mongo\src\mongo\db\../bson/bson-inl.h 183
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\util\assert_util.cpp(113)                               mongo::verifyFailed+0x128
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\bson\bson-inl.h(184)                                    mongo::BSONElement::embeddedObject+0x4f
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\matcher.cpp(144)                                     mongo::ElementMatcher::ElementMatcher+0x84
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\matcher.cpp(330)                                     mongo::Matcher::addOp+0x642
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\matcher.cpp(504)                                     mongo::Matcher::parseMatchExpressionElement+0x24c
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\matcher.cpp(544)                                     mongo::Matcher::Matcher+0x126
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\matcher_covered.cpp(34)                              mongo::CoveredIndexMatcher::CoveredIndexMatcher+0x50
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\queryoptimizer.cpp(510)                              mongo::QueryPlan::matcher+0x99
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\queryoptimizercursorimpl.cpp(497)                    mongo::CursorGenerator::singlePlanCursor+0x121
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\queryoptimizercursorimpl.cpp(525)                    mongo::CursorGenerator::generate+0x80
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\queryoptimizercursorimpl.cpp(400)                    mongo::NamespaceDetailsTransient::getCursor+0x5d
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\ops\query.cpp(698)                                   mongo::queryWithQueryOptimizer+0x1f6
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\ops\query.cpp(1047)                                  mongo::runQuery+0xb2c
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\instance.cpp(262)                                    mongo::receivedQuery+0x2e2
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\instance.cpp(401)                                    mongo::assembleResponse+0x351
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\db\db.cpp(194)                                          mongo::MyMessageHandler::process+0xe8
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\mongo\util\net\message_server_port.cpp(207)                   mongo::PortMessageServer::handleIncomingMsg+0x457
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\third_party\boost\boost\thread\detail\thread.hpp(62)          boost::detail::thread_data<boost::_bi::bind_t<void *,void * (__cdecl*)(void *),boost::_bi::list1<boost::_bi::value<mongo::PortMessageServer::HandleIncomingMsgParam *> > > >::run+0x9
      Sat Nov 16 17:14:16.096 [conn200] mongod.exe  ...\src\third_party\boost\libs\thread\src\win32\thread.cpp(16707566)  boost::`anonymous namespace'::thread_start_function+0x47
      Sat Nov 16 17:14:16.097 [conn200] mongod.exe  f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c(314)                _callthreadstartex+0x1b
      Sat Nov 16 17:14:16.097 [conn200] assertion 0 assertion d:\slave\windows_32bit_v2.4\mongo\src\mongo\db\../bson/bson-inl.h:183 ns:test.test query:{ foo: { $mod: 1.0 } }
      Sat Nov 16 17:14:16.097 [conn200] query test.test query: { foo: { $mod: 1.0 } } ntoreturn:0 keyUpdates:0 exception: assertion d:\slave\windows_32bit_v2.4\mongo\src\mongo\db\../bson/bson-inl.h:183 locks(micros) r:861847 reslen:115 861ms
      

            Assignee:
            Unassigned Unassigned
            Reporter:
            nightroman Roman Kuzmin
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: