Details
Description
The test spawns a parallel shell with the following jstest code evaluated as a --eval argument. (Note the excessive quote escaping is due to this code itself being a string.)
TestData = {
|
\"minPort\" : 20020,
|
\"maxPort\" : 20249,
|
\"peerPids\" : [ ],
|
\"alwaysUseLogFiles\" : false,
|
\"failIfUnterminatedProcesses\" : true,
|
\"isMainTest\" : true,
|
\"numTestClients\" : 1,
|
\"backupOnRestartDir\" : null,
|
\"enableMajorityReadConcern\" : true,
|
\"mixedBinVersions\" : \"\",
|
\"noJournal\" : false,
|
\"storageEngine\" : \"wiredTiger\",
|
\"storageEngineCacheSizeGB\" : \"1\",
|
\"testName\" : \"merge_stale_on_fields\",
|
\"transportLayer\" : \"\",
|
\"wiredTigerCollectionConfigString\" : \"\",
|
\"wiredTigerEngineConfigString\" : \"\",
|
\"wiredTigerIndexConfigString\" : \"\",
|
\"inEvergreen\" : true,
|
\"setParameters\" : {
|
\"featureFlagSBE\" : \"true\",
|
\"featureFlagTimeseriesCollection\" : \"true\",
|
\"logComponentVerbosity\" : {
|
\"replication\" : {
|
\"election\" : 4,
|
\"heartbeats\" : 2,
|
\"initialSync\" : 2,
|
\"rollback\" : 2
|
},
|
\"sharding\" : {
|
\"migration\" : 2
|
},
|
\"storage\" : {
|
\"recovery\" : 2
|
},
|
\"transaction\" : 4,
|
\"tenantMigration\" : 4
|
},
|
\"reshardingMinimumOperationDurationMillis\" : 5000
|
},
|
\"setParametersMongos\" : {
|
\"featureFlagSBE\" : \"true\",
|
\"featureFlagTimeseriesCollection\" : \"true\",
|
\"logComponentVerbosity\" : {
|
\"transaction\" : 3
|
}
|
},
|
\"setParametersMongocryptd\" : {
|
|
},
|
\"undoRecorderPath\" : null,
|
\"transactionLifetimeLimitSeconds\" : 86400,
|
\"traceExceptions\" : undefined
|
};
|
const source = db.getSiblingDB(\"merge_stale_unique_key\").source;
|
const error = assert.throws(() => source.aggregate([
|
{$addFields: {sk: \"$_id\"}},
|
{$merge: { \"into\" : \"target\", \"whenMatched\" : \"replace\", \"whenNotMatched\" : \"discard\" }} // <---- does not throw
|
]));
|
assert.eq(error.code, ErrorCodes.StaleEpoch);
|
We don't get the expected exception with ErrorCodes.StaleEpoch:
[js_test:merge_stale_on_fields] sh2371| uncaught exception: Error: did not throw exception :
|
[js_test:merge_stale_on_fields] sh2371| doassert@src/mongo/shell/assert.js:20:14
|
[js_test:merge_stale_on_fields] sh2371| assert.throws@src/mongo/shell/assert.js:577:13
|
[js_test:merge_stale_on_fields] sh2371| @(shell eval):57:31
|
[js_test:merge_stale_on_fields] sh2371| exiting with code -4
|