diff options
author | Mindaugas Malinauskas <mindaugas.malinauskas@mongodb.com> | 2023-04-12 10:27:13 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-04-12 11:06:27 +0000 |
commit | ed0d55f7e8686c7c71fe113554e7e2782d7ea6d8 (patch) | |
tree | ff325fdcf9bd26e86cfd78f8d483f41d46d77183 /jstests/serverless | |
parent | e72720dda5265d438837d8d6028c665f7bbe6c58 (diff) | |
download | mongo-ed0d55f7e8686c7c71fe113554e7e2782d7ea6d8.tar.gz |
SERVER-66715 Add tenant lock
Diffstat (limited to 'jstests/serverless')
3 files changed, 22 insertions, 0 deletions
diff --git a/jstests/serverless/change_stream_state_commands.js b/jstests/serverless/change_stream_state_commands.js index c7196e7a104..f6fdcb6eb61 100644 --- a/jstests/serverless/change_stream_state_commands.js +++ b/jstests/serverless/change_stream_state_commands.js @@ -9,6 +9,10 @@ load("jstests/libs/fail_point_util.js"); // For configureFailPoint. load('jstests/libs/parallel_shell_helpers.js'); // For funWithArgs. +// Disable implicit sessions since dropping "config" database for a tenant must be done not in a +// session. +TestData.disableImplicitSessions = true; + const replSetTest = new ReplSetTest({nodes: 2, name: "change-stream-state-commands", serverless: true}); @@ -104,6 +108,12 @@ const secondOrgTenantId = ObjectId(); setChangeStreamState(firstOrgTenantId, false); setChangeStreamState(firstOrgTenantId, false); assertChangeStreamState(firstOrgTenantId, false); + + // Verify that dropping "config" database works and effectively disables change streams. + setChangeStreamState(firstOrgTenantId, true); + assert.commandWorked(replSetTest.getPrimary().getDB("config").runCommand( + {dropDatabase: 1, $tenant: firstOrgTenantId})); + assertChangeStreamState(firstOrgTenantId, false); })(); // Tests that the 'setChangeStreamState' command tolerates the primary step-down and can @@ -302,4 +312,5 @@ const secondOrgTenantId = ObjectId(); })(); replSetTest.stopSet(); +TestData.disableImplicitSessions = false; }()); diff --git a/jstests/serverless/change_streams/multitenant_read_from_change_collection.js b/jstests/serverless/change_streams/multitenant_read_from_change_collection.js index 47872e89d71..1f8eabbd640 100644 --- a/jstests/serverless/change_streams/multitenant_read_from_change_collection.js +++ b/jstests/serverless/change_streams/multitenant_read_from_change_collection.js @@ -67,6 +67,15 @@ assertDropAndRecreateCollection( assert(secondTenantTestDb.getCollectionInfos({name: "stockPrice"})[0] .options.changeStreamPreAndPostImages.enabled); +// Verify that while the change streams are disabled for the tenant, performing update and delete +// operations on a collection with change stream pre- and post-images enabled succeeds. The +// pre-images collection shouldn't be affected either. +replSetTest.setChangeStreamState(firstTenantConn, false); +assert.commandWorked(firstTenantTestDb.stockPrice.insert({_id: "mdb", price: 350})); +assert.commandWorked(firstTenantTestDb.stockPrice.updateOne({_id: "mdb"}, {$set: {price: 450}})); +assert.commandWorked(firstTenantTestDb.stockPrice.deleteOne({_id: "mdb"})); +assert(!firstTenantConn.getDB("config").getCollectionNames().includes("system.preimages")); + // Create a new incarnation of the change collection for the first tenant. replSetTest.setChangeStreamState(firstTenantConn, false); replSetTest.setChangeStreamState(firstTenantConn, true); diff --git a/jstests/serverless/change_streams_cluster_parameter.js b/jstests/serverless/change_streams_cluster_parameter.js index 05e071d7da5..474f481d172 100644 --- a/jstests/serverless/change_streams_cluster_parameter.js +++ b/jstests/serverless/change_streams_cluster_parameter.js @@ -5,6 +5,8 @@ // requires_sharding, // featureFlagServerlessChangeStreams, // requires_fcv_63, +// # TODO SERVER-74811: Re-enable this test. +// __TEMPORARILY_DISABLED__, // ] (function() { "use strict"; |