-
Type:
Bug
-
Resolution: Done
-
Priority:
Minor - P4
-
Affects Version/s: 2.4.8
-
Component/s: Internal Code
-
None
-
ALL
-
None
-
3
-
None
-
None
-
None
-
None
-
None
-
None
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