(function() { 'use strict'; var st = new ShardingTest({name: 'rename_across_mongos', shards: 1, mongos: 2}); var dbName = 'RenameDB'; st.s0.getDB(dbName).dropDatabase(); st.s1.getDB(dbName).dropDatabase(); // Create collection on first mongos and insert a document assert.commandWorked(st.s0.getDB(dbName).runCommand({create: 'CollNameBeforeRename'})); assert.commandWorked(st.s0.getDB(dbName).CollNameBeforeRename.insert({Key: 1, Value: 1})); if (st.configRS) { // Ensure that the second mongos will see the newly created database metadata when // it tries to do the collection rename. st.configRS.awaitLastOpCommitted(); } // Rename collection on second mongos and ensure the document is found assert.commandWorked( st.s1.getDB(dbName).CollNameBeforeRename.renameCollection('CollNameAfterRename')); assert.eq([{Key: 1, Value: 1}], st.s1.getDB(dbName).CollNameAfterRename.find({}, {_id: false}).toArray()); st.stop(); })();