-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Aggregation Framework
-
Labels:None
-
Fully Compatible
-
ALL
-
Query 2018-05-07
The parser for a $changeStream stage does not correctly check that its argument is a nested object. The following command trips a verify(), causing a stack trace to be logged, and causing the process to shutdown for debug builds:
> db.c.aggregate([{$changeStream: 1}]) assert: command failed: { "ok" : 0, "errmsg" : "assertion src/mongo/bson/bsonelement.cpp:557", "code" : 8, "codeName" : "UnknownError" } : aggregate failed _getErrorWithCode@src/mongo/shell/utils.js:25:13 doassert@src/mongo/shell/assert.js:16:14 _assertCommandWorked@src/mongo/shell/assert.js:510:17 assert.commandWorked@src/mongo/shell/assert.js:594:16 DB.prototype._runAggregate@src/mongo/shell/db.js:260:9 DBCollection.prototype.aggregate@src/mongo/shell/collection.js:1057:12 @(shell):1:1
Instead, DocumentSourceChangeStream::createFromBson() should throw a UserException with a more useful error message.