diff options
-rw-r--r-- | jstests/core/apply_ops1.js | 11 | ||||
-rw-r--r-- | src/mongo/db/repl/oplog.cpp | 4 |
2 files changed, 15 insertions, 0 deletions
diff --git a/jstests/core/apply_ops1.js b/jstests/core/apply_ops1.js index 430af6b62a3..4bc1171b2e7 100644 --- a/jstests/core/apply_ops1.js +++ b/jstests/core/apply_ops1.js @@ -86,6 +86,17 @@ 73, // ErrorCodes.InvalidNamespace 'applyOps should fail on system.indexes insert operation with invalid index namespace'); + // Inconsistent database name in index spec namespace. + assert.commandFailedWithCode( + db.adminCommand({applyOps: [{op: 'i', ns: db.getName() + '.system.indexes', o: { + ns: 'baddbprefix' + t.getFullName(), + key: {a: 1}, + name: 'a_1', + }}]}), + 73, // ErrorCodes.InvalidNamespace + 'applyOps should fail on system.indexes insert operation with index namespace containing ' + + 'inconsistent database name'); + // Valid 'ns' field value in unknown operation type 'x'. assert.commandFailed( db.adminCommand({applyOps: [{op: 'x', ns: t.getFullName()}]}), diff --git a/src/mongo/db/repl/oplog.cpp b/src/mongo/db/repl/oplog.cpp index 1688a5be578..620e103d4c7 100644 --- a/src/mongo/db/repl/oplog.cpp +++ b/src/mongo/db/repl/oplog.cpp @@ -647,6 +647,10 @@ bool applyOperation_inlock(OperationContext* txn, uassert(ErrorCodes::InvalidNamespace, str::stream() << "Invalid namespace in index spec: " << op, indexNss.isValid()); + uassert(ErrorCodes::InvalidNamespace, + str::stream() << "Database name mismatch for database (" + << nsToDatabaseSubstring(ns) << ") while creating index: " << op, + nsToDatabaseSubstring(ns) == indexNss.db()); if (o["background"].trueValue()) { Lock::TempRelease release(txn->lockState()); |