diff options
-rw-r--r-- | jstests/noPassthroughWithMongod/coll_mod_takes_collection_x_lock.js (renamed from jstests/noPassthroughWithMongod/coll_mod_takes_database_x_lock.js) | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/jstests/noPassthroughWithMongod/coll_mod_takes_database_x_lock.js b/jstests/noPassthroughWithMongod/coll_mod_takes_collection_x_lock.js index b7fba31017e..46b055209db 100644 --- a/jstests/noPassthroughWithMongod/coll_mod_takes_database_x_lock.js +++ b/jstests/noPassthroughWithMongod/coll_mod_takes_collection_x_lock.js @@ -1,26 +1,30 @@ /** - * Ensures that the 'collMod' command takes a database MODE_X lock during a no-op. + * Ensures that the 'collMod' command takes a Collection MODE_X lock during a no-op. */ (function() { 'use strict'; +// Note: failpoint name may not be changed due to backwards compatibility problem in +// multiversion suites running JS tests using the failpoint. +// In reality this hangs after acquiring a collection MODE_X lock (w/ database MODE_IX)." const failpoint = 'hangAfterDatabaseLock'; assert.commandWorked(db.adminCommand({configureFailPoint: failpoint, mode: "alwaysOn"})); const conn = db.getMongo(); -db.createCollection('foo'); +assert.commandWorked(db.createCollection('foo')); // Run a no-op collMod command. const awaitParallelShell = startParallelShell(() => { assert.commandWorked(db.runCommand({collMod: 'foo'})); }, conn.port); -// Check that the database MODE_X lock is being held by checking in lockInfo. +// Check that the Collection MODE_X lock is being held by checking in lockInfo. assert.soon(() => { let lockInfo = assert.commandWorked(db.adminCommand({lockInfo: 1})).lockInfo; for (let i = 0; i < lockInfo.length; i++) { let resourceId = lockInfo[i].resourceId; - if (resourceId.includes("Database") && resourceId.includes("test")) { + const mode = lockInfo[i].granted[0].mode; + if (resourceId.includes("Collection") && resourceId.includes("test.foo") && mode === "X") { return true; } } |