From e21a59d53ffb6ebd0fe3194057d4850ff7f6c3f3 Mon Sep 17 00:00:00 2001 From: Dianna Hohensee Date: Mon, 26 Jul 2021 17:35:15 +0000 Subject: SERVER-49714 Specially support only a single oplog collection, local.oplog.rs, rather than local.oplog.* --- jstests/noPassthroughWithMongod/query_oplogreplay.js | 2 +- src/mongo/db/storage/record_store_test_oplog.cpp | 2 +- src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp | 10 ++-------- src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h | 3 +-- src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp | 3 ++- .../db/storage/wiredtiger/wiredtiger_record_store_test.cpp | 12 ++++++------ 6 files changed, 13 insertions(+), 19 deletions(-) diff --git a/jstests/noPassthroughWithMongod/query_oplogreplay.js b/jstests/noPassthroughWithMongod/query_oplogreplay.js index a8fb4c8477d..4b7d1ed64c1 100644 --- a/jstests/noPassthroughWithMongod/query_oplogreplay.js +++ b/jstests/noPassthroughWithMongod/query_oplogreplay.js @@ -7,7 +7,7 @@ load("jstests/libs/analyze_plan.js"); load("jstests/libs/storage_engine_utils.js"); -const t = db.getSiblingDB("local").oplog.jstests_query_oplogreplay; +const t = db.getSiblingDB("local").oplog.rs; function dropOplogAndCreateNew(oplog, newCollectionSpec) { if (storageEngineIsWiredTigerOrInMemory()) { diff --git a/src/mongo/db/storage/record_store_test_oplog.cpp b/src/mongo/db/storage/record_store_test_oplog.cpp index 1957ae409cb..31d11d09307 100644 --- a/src/mongo/db/storage/record_store_test_oplog.cpp +++ b/src/mongo/db/storage/record_store_test_oplog.cpp @@ -72,7 +72,7 @@ TEST(RecordStoreTestHarness, OplogHack) { // the test itself. const int64_t cappedMaxSize = 10 * 1024; // 10KB std::unique_ptr rs( - harnessHelper->newCappedRecordStore("local.oplog.foo", cappedMaxSize, -1)); + harnessHelper->newCappedRecordStore("local.oplog.rs", cappedMaxSize, -1)); { ServiceContext::UniqueOperationContext opCtx(harnessHelper->newOperationContext()); diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp index cffeef5e474..ca750c49f1b 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp @@ -2309,18 +2309,12 @@ bool WiredTigerKVEngine::supportsOplogStones() const { void WiredTigerKVEngine::startOplogManager(OperationContext* opCtx, WiredTigerRecordStore* oplogRecordStore) { stdx::lock_guard lock(_oplogManagerMutex); - if (_oplogManagerCount == 0) - _oplogManager->startVisibilityThread(opCtx, oplogRecordStore); - _oplogManagerCount++; + _oplogManager->startVisibilityThread(opCtx, oplogRecordStore); } void WiredTigerKVEngine::haltOplogManager() { stdx::unique_lock lock(_oplogManagerMutex); - invariant(_oplogManagerCount > 0); - _oplogManagerCount--; - if (_oplogManagerCount == 0) { - _oplogManager->haltVisibilityThread(); - } + _oplogManager->haltVisibilityThread(); } bool WiredTigerKVEngine::isCacheUnderPressure(OperationContext* opCtx) const { diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h index e438b37fd95..2c7093a2f41 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h @@ -419,9 +419,8 @@ private: std::unique_ptr _sessionCache; ClockSource* const _clockSource; - // Mutex to protect use of _oplogManagerCount by this instance of KV engine. + // Mutex to protect use of _oplogManager by this instance of KV engine. mutable Mutex _oplogManagerMutex = MONGO_MAKE_LATCH("::_oplogManagerMutex"); - std::size_t _oplogManagerCount = 0; std::unique_ptr _oplogManager; std::string _canonicalName; diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp index a60c6b15009..acf3ce2cce1 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store.cpp @@ -823,7 +823,8 @@ WiredTigerRecordStore::WiredTigerRecordStore(WiredTigerKVEngine* kvEngine, NamespaceString(ns()), getGlobalReplSettings().usingReplSets() || repl::ReplSettings::shouldRecoverFromOplogAsStandalone())), - _isOplog(NamespaceString::oplog(params.ns)), + // We will only provide special support to the local.oplog.rs collection. + _isOplog(NamespaceString::kRsOplogNamespace.toString() == params.ns), _cappedMaxSize(params.cappedMaxSize), _cappedMaxSizeSlack(std::min(params.cappedMaxSize / 10, int64_t(16 * 1024 * 1024))), _cappedMaxDocs(params.cappedMaxDocs), diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_test.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_test.cpp index cd914b61f68..b5449daa827 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_test.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_test.cpp @@ -440,7 +440,7 @@ TEST(WiredTigerRecordStoreTest, OplogStones_CreateNewStone) { const int64_t cappedMaxSize = 10 * 1024; // 10KB unique_ptr rs( - harnessHelper->newCappedRecordStore("local.oplog.stones", cappedMaxSize, -1)); + harnessHelper->newCappedRecordStore("local.oplog.rs", cappedMaxSize, -1)); WiredTigerRecordStore* wtrs = static_cast(rs.get()); WiredTigerRecordStore::OplogStones* oplogStones = wtrs->oplogStones(); @@ -496,7 +496,7 @@ TEST(WiredTigerRecordStoreTest, OplogStones_UpdateRecord) { const int64_t cappedMaxSize = 10 * 1024; // 10KB unique_ptr rs( - harnessHelper->newCappedRecordStore("local.oplog.stones", cappedMaxSize, -1)); + harnessHelper->newCappedRecordStore("local.oplog.rs", cappedMaxSize, -1)); WiredTigerRecordStore* wtrs = static_cast(rs.get()); WiredTigerRecordStore::OplogStones* oplogStones = wtrs->oplogStones(); @@ -571,7 +571,7 @@ TEST(WiredTigerRecordStoreTest, OplogStones_Truncate) { const int64_t cappedMaxSize = 10 * 1024; // 10KB unique_ptr rs( - harnessHelper->newCappedRecordStore("local.oplog.stones", cappedMaxSize, -1)); + harnessHelper->newCappedRecordStore("local.oplog.rs", cappedMaxSize, -1)); WiredTigerRecordStore* wtrs = static_cast(rs.get()); WiredTigerRecordStore::OplogStones* oplogStones = wtrs->oplogStones(); @@ -616,7 +616,7 @@ TEST(WiredTigerRecordStoreTest, OplogStones_CappedTruncateAfter) { const int64_t cappedMaxSize = 10 * 1024; // 10KB unique_ptr rs( - harnessHelper->newCappedRecordStore("local.oplog.stones", cappedMaxSize, -1)); + harnessHelper->newCappedRecordStore("local.oplog.rs", cappedMaxSize, -1)); WiredTigerRecordStore* wtrs = static_cast(rs.get()); WiredTigerRecordStore::OplogStones* oplogStones = wtrs->oplogStones(); @@ -725,7 +725,7 @@ TEST(WiredTigerRecordStoreTest, OplogStones_ReclaimStones) { const int64_t cappedMaxSize = 10 * 1024; // 10KB unique_ptr rs( - harnessHelper->newCappedRecordStore("local.oplog.stones", cappedMaxSize, -1)); + harnessHelper->newCappedRecordStore("local.oplog.rs", cappedMaxSize, -1)); WiredTigerRecordStore* wtrs = static_cast(rs.get()); WiredTigerRecordStore::OplogStones* oplogStones = wtrs->oplogStones(); @@ -826,7 +826,7 @@ TEST(WiredTigerRecordStoreTest, OplogStones_AscendingOrder) { const int64_t cappedMaxSize = 10 * 1024; // 10KB unique_ptr rs( - harnessHelper->newCappedRecordStore("local.oplog.stones", cappedMaxSize, -1)); + harnessHelper->newCappedRecordStore("local.oplog.rs", cappedMaxSize, -1)); WiredTigerRecordStore* wtrs = static_cast(rs.get()); WiredTigerRecordStore::OplogStones* oplogStones = wtrs->oplogStones(); -- cgit v1.2.1