[SERVER-12330] assert in distinct when query is on _id Created: 10/Jan/14  Updated: 11/Jul/16  Resolved: 22/Jan/14

Status: Closed
Project: Core Server
Component/s: Querying
Affects Version/s: 2.5.4
Fix Version/s: 2.5.5

Type: Bug Priority: Major - P3
Reporter: Bernie Hackett Assignee: David Storch
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Operating System: ALL
Participants:

 Description   

> db.test.find()
{ "_id" : BinData(3,"lL0HDD2KQEyLp3G2b83RHQ=="), "i" : 0 }
> db.test.distinct('i')
[ 0 ]
> _id = db.test.findOne()['_id']
BinData(3,"lL0HDD2KQEyLp3G2b83RHQ==")
> 
> db.test.distinct('i', {'_id': _id})
2014-01-10T15:20:05.068-0800 distinct failed: {
	"errmsg" : "exception: assertion src/mongo/db/query/type_explain.cpp:484",
	"code" : 0,
	"ok" : 0
} at src/mongo/shell/collection.js:987

mongod log:

2014-01-10T15:20:05.062-0800 [conn2291] test.test Assertion failure _isNSet src/mongo/db/query/type_explain.cpp 484
2014-01-10T15:20:05.068-0800 [conn2291] test.test 0xdf66d3 0xdb2940 0xd9c4cc 0xbbbab4 0x957f0d 0x9cfef9 0x9d0bdd 0x9d124a 0xb94407 0xa9c681 0x86dccb 0xdbf34c 0x7f773dd94f3a 0x7f773ca63dad 
 ./mongod(_ZN5mongo15printStackTraceERSo+0x23) [0xdf66d3]
 ./mongod(_ZN5mongo10logContextEPKc+0x190) [0xdb2940]
 ./mongod(_ZN5mongo12verifyFailedEPKcS1_j+0xec) [0xd9c4cc]
 ./mongod() [0xbbbab4]
 ./mongod(_ZN5mongo15DistinctCommand3runERKSsRNS_7BSONObjEiRSsRNS_14BSONObjBuilderEb+0x13dd) [0x957f0d]
 ./mongod(_ZN5mongo12_execCommandEPNS_7CommandERKSsRNS_7BSONObjEiRSsRNS_14BSONObjBuilderEb+0x39) [0x9cfef9]
 ./mongod(_ZN5mongo7Command11execCommandEPS0_RNS_6ClientEiPKcRNS_7BSONObjERNS_14BSONObjBuilderEb+0x8fd) [0x9d0bdd]
 ./mongod(_ZN5mongo12_runCommandsEPKcRNS_7BSONObjERNS_11_BufBuilderINS_16TrivialAllocatorEEERNS_14BSONObjBuilderEbi+0x23a) [0x9d124a]
 ./mongod(_ZN5mongo11newRunQueryERNS_7MessageERNS_12QueryMessageERNS_5CurOpES1_+0x177) [0xb94407]
 ./mongod(_ZN5mongo16assembleResponseERNS_7MessageERNS_10DbResponseERKNS_11HostAndPortE+0x751) [0xa9c681]
 ./mongod(_ZN5mongo16MyMessageHandler7processERNS_7MessageEPNS_21AbstractMessagingPortEPNS_9LastErrorE+0x8b) [0x86dccb]
 ./mongod(_ZN5mongo17PortMessageServer17handleIncomingMsgEPv+0x33c) [0xdbf34c]
 /lib64/libpthread.so.0(+0x8f3a) [0x7f773dd94f3a]
 /lib64/libc.so.6(clone+0x6d) [0x7f773ca63dad]



 Comments   
Comment by Githook User [ 22/Jan/14 ]

Author:

{u'username': u'dstorch', u'name': u'David Storch', u'email': u'david.storch@10gen.com'}

Message: SERVER-12330 fix assert for _id query with distinct
Branch: master
https://github.com/mongodb/mongo/commit/746249b843422e2e74ce0e524f8805799d53a3f7

Comment by Daniel Pasette (Inactive) [ 21/Jan/14 ]

This is happening because the IdHackRunner assumes explain won't be run and sets an empty TypeExplain.

Causes distinct on an _id query to blow up:
https://github.com/mongodb/mongo/blob/master/src/mongo/db/commands/distinct.cpp#L146

Generated at Thu Feb 08 03:28:14 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.