This fails with the code modifications to implicitly_shard_accessed_collections.js introduced by SERVER-26315. In that code, we are over-riding the DBCollection.prototype.drop() function to re-shard collections after they are dropped, in sharded cluster environments.
Note: This does not fail in non-sharded collections.
t = db.mr_undef; t.drop(); outname = "mr_undef_out"; out = db[outname]; out.drop(); t.insert({x: 0}); var m = function() { emit(undefined, this.x); // the key can be 'null' also }; var r = function(k, v) { total = 0; for (i in v) { total += v[i]; } return total; }; res = t.mapReduce(m, r, {out: outname}); printjson(res); printjson(out.find().toArray()); assert.eq(1, out.find({_id: {$type: 10}}).itcount(), "A2");
It fails because there are no documents in the out collection even though the res object shows there was an output document.
[js_test:mr_undef] 2017-03-15T03:59:11.699-0400 { [js_test:mr_undef] 2017-03-15T03:59:11.699-0400 "result" : "mr_undef_out", [js_test:mr_undef] 2017-03-15T03:59:11.699-0400 "counts" : { [js_test:mr_undef] 2017-03-15T03:59:11.700-0400 "input" : NumberLong(1), [js_test:mr_undef] 2017-03-15T03:59:11.700-0400 "emit" : NumberLong(1), [js_test:mr_undef] 2017-03-15T03:59:11.700-0400 "reduce" : NumberLong(0), [js_test:mr_undef] 2017-03-15T03:59:11.700-0400 "output" : NumberLong(0) [js_test:mr_undef] 2017-03-15T03:59:11.700-0400 }, [js_test:mr_undef] 2017-03-15T03:59:11.700-0400 "timeMillis" : 51, [js_test:mr_undef] 2017-03-15T03:59:11.700-0400 "timing" : { [js_test:mr_undef] 2017-03-15T03:59:11.700-0400 "shardProcessing" : 24, [js_test:mr_undef] 2017-03-15T03:59:11.700-0400 "postProcessing" : 26 [js_test:mr_undef] 2017-03-15T03:59:11.701-0400 }, [js_test:mr_undef] 2017-03-15T03:59:11.701-0400 "shardCounts" : { [js_test:mr_undef] 2017-03-15T03:59:11.701-0400 "huracan:20003" : { [js_test:mr_undef] 2017-03-15T03:59:11.702-0400 "input" : 1, [js_test:mr_undef] 2017-03-15T03:59:11.702-0400 "emit" : 1, [js_test:mr_undef] 2017-03-15T03:59:11.702-0400 "reduce" : 0, [js_test:mr_undef] 2017-03-15T03:59:11.702-0400 "output" : 1 <---------------this suggests there was an output document. [js_test:mr_undef] 2017-03-15T03:59:11.703-0400 } [js_test:mr_undef] 2017-03-15T03:59:11.703-0400 }, [js_test:mr_undef] 2017-03-15T03:59:11.703-0400 "postProcessCounts" : { [js_test:mr_undef] 2017-03-15T03:59:11.703-0400 "huracan:20003" : { [js_test:mr_undef] 2017-03-15T03:59:11.703-0400 "input" : NumberLong(0), [js_test:mr_undef] 2017-03-15T03:59:11.703-0400 "reduce" : NumberLong(0), [js_test:mr_undef] 2017-03-15T03:59:11.704-0400 "output" : NumberLong(0) [js_test:mr_undef] 2017-03-15T03:59:11.704-0400 } [js_test:mr_undef] 2017-03-15T03:59:11.704-0400 }, [js_test:mr_undef] 2017-03-15T03:59:11.704-0400 "ok" : 1 [js_test:mr_undef] 2017-03-15T03:59:11.704-0400 } [js_test:mr_undef] 2017-03-15T03:59:11.704-0400 [ ] <------- this is from the "printjson(out.find().toArray());" which shows no output document. .... [js_test:mr_undef] 2017-03-15T03:59:11.707-0400 assert: [1] != [0] are not equal : A2 [js_test:mr_undef] 2017-03-15T03:59:11.707-0400 doassert@src/mongo/shell/assert.js:18:14 [js_test:mr_undef] 2017-03-15T03:59:11.707-0400 assert.eq@src/mongo/shell/assert.js:54:5 [js_test:mr_undef] 2017-03-15T03:59:11.707-0400 @jstests/core/mr_undef.js:26:1 [js_test:mr_undef] 2017-03-15T03:59:11.707-0400 [js_test:mr_undef] 2017-03-15T03:59:11.707-0400 2017-03-15T03:59:11.707-0400 E QUERY [thread1] Error: [1] != [0] are not equal : A2 : [js_test:mr_undef] 2017-03-15T03:59:11.708-0400 doassert@src/mongo/shell/assert.js:18:14 [js_test:mr_undef] 2017-03-15T03:59:11.708-0400 assert.eq@src/mongo/shell/assert.js:54:5 [js_test:mr_undef] 2017-03-15T03:59:11.708-0400 @jstests/core/mr_undef.js:26:1 [js_test:mr_undef] 2017-03-15T03:59:11.708-0400 failed to load: jstests/core/mr_undef.js
- duplicates
-
SERVER-14324 MapReduce does not respect existing shard key on output:sharded
- Closed
- is related to
-
SERVER-26315 sharded_collections_jscore_passthrough should re-shard the collection after the test drops it
- Closed