Files
mongo/jstests/sharding/query/map_reduce/mr_single_reduce_split.js
Zac 591928c619 SERVER-108478 JS formatted by prettier and remove clang-format (#39656)
GitOrigin-RevId: 6c8f6aded47f260aa4f7c231b17dae3302cb1e04
2025-08-21 17:27:09 +00:00

58 lines
1.9 KiB
JavaScript

/**
* This jstest verifies that the mrEnableSingleReduceOptimization flag works properly in a sharded
* cluster when there are documents on multiple chunks that need to be merged.
* @tags: [
* backport_required_multiversion,
* requires_scripting
* ]
*/
import {ShardingTest} from "jstests/libs/shardingtest.js";
const st = new ShardingTest({
shards: 2,
mongos: 1,
other: {
mongosOptions: {setParameter: {mrEnableSingleReduceOptimization: true}},
rsOptions: {setParameter: {mrEnableSingleReduceOptimization: true}},
},
});
const mongosDB = st.s0.getDB(jsTestName());
const mongosColl = mongosDB[jsTestName()];
assert.commandWorked(mongosDB.dropDatabase());
assert.commandWorked(mongosDB.adminCommand({enableSharding: mongosDB.getName(), primaryShard: st.shard0.shardName}));
assert.commandWorked(mongosDB.adminCommand({shardCollection: mongosColl.getFullName(), key: {_id: 1}}));
// Split the collection into 2 chunks: [minKey, 0) and [0, maxKey].
assert.commandWorked(mongosDB.adminCommand({split: mongosColl.getFullName(), middle: {_id: 0}}));
// Move the [0, MaxKey) chunk to the second shard.
assert.commandWorked(
mongosDB.adminCommand({moveChunk: mongosColl.getFullName(), find: {_id: 50}, to: st.shard1.shardName}),
);
assert.commandWorked(mongosColl.insert({_id: -1}));
const map = function () {
emit(0, {val: "mapped value"});
};
const reduce = function (key, values) {
return {val: "reduced value"};
};
let res = assert.commandWorked(
mongosDB.runCommand({mapReduce: mongosColl.getName(), map: map, reduce: reduce, out: {inline: 1}}),
);
assert.eq(res.results[0], {_id: 0, value: {val: "mapped value"}});
assert.commandWorked(mongosColl.insert({_id: 1}));
res = assert.commandWorked(
mongosDB.runCommand({mapReduce: mongosColl.getName(), map: map, reduce: reduce, out: {inline: 1}}),
);
assert.eq(res.results[0], {_id: 0, value: {val: "reduced value"}});
st.stop();