diff options
author | Jason Rassi <rassi@10gen.com> | 2014-08-20 22:16:00 -0400 |
---|---|---|
committer | Jason Rassi <rassi@10gen.com> | 2014-08-24 21:11:16 -0400 |
commit | 08883b2312a524722d37dc28ce91c6abf801bb2e (patch) | |
tree | a6e8fc3f5acb85f7c66754ca1ec8d3cae22b0fa3 /jstests | |
parent | 06e03e2201b0b2a46a277e52a674fd5d6f861c9e (diff) | |
download | mongo-08883b2312a524722d37dc28ce91c6abf801bb2e.tar.gz |
SERVER-14969 CollectionCursorCache::invalidateAll() kill agg exec
(cherry picked from commit 71e2312d2ad6d418ea223d6e003a065122c926d8)
Diffstat (limited to 'jstests')
-rw-r--r-- | jstests/aggregation/bugs/server14969.js | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/jstests/aggregation/bugs/server14969.js b/jstests/aggregation/bugs/server14969.js new file mode 100644 index 00000000000..4d169586d11 --- /dev/null +++ b/jstests/aggregation/bugs/server14969.js @@ -0,0 +1,32 @@ +// Test dropping an index that is being used by an agg pipeline. +var coll = db.server14969; +var docsPerBatch = 3; +coll.drop(); + +// Initialize collection with eight 1M documents, and index on field "a". +var longString = new Array(1024*1024).join('x'); +for (var i = 0; i < 100; ++i) { + assert.writeOK(coll.insert({a: 1, bigField: longString})); +} +assert.commandWorked(coll.ensureIndex({a: 1})); + +// Create pipeline that uses index "a", with a small initial batch size. +var cursor = coll.aggregate([{$match: {a: 1}}], {cursor: {batchSize: docsPerBatch}}); +for (var i = 0; i < docsPerBatch; ++i) { + assert(cursor.hasNext()); + assert.eq(1, cursor.next().a); +} + +// Drop index "a". +assert.commandWorked(coll.dropIndex({a:1})); + +// Issue a getmore against agg cursor. Note that it is not defined whether the server continues to +// generate further results for the cursor. +try { + cursor.hasNext(); + cursor.next(); +} +catch (e) {} + +// Verify that the server hasn't crashed. +assert.commandWorked(db.adminCommand({ping: 1})); |