summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/wiredtiger
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/storage/wiredtiger')
-rw-r--r--src/mongo/db/storage/wiredtiger/SConscript1
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_customization_hooks.cpp15
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_extensions.cpp21
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_extensions.h2
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp14
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_init_test.cpp3
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp2
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine_test.cpp5
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_record_store_mock.cpp5
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_record_store_mongod.cpp1
-rw-r--r--src/mongo/db/storage/wiredtiger/wiredtiger_standard_record_store_test.cpp16
11 files changed, 30 insertions, 55 deletions
diff --git a/src/mongo/db/storage/wiredtiger/SConscript b/src/mongo/db/storage/wiredtiger/SConscript
index aee0fb5d8a5..25bd55e1bb1 100644
--- a/src/mongo/db/storage/wiredtiger/SConscript
+++ b/src/mongo/db/storage/wiredtiger/SConscript
@@ -127,6 +127,7 @@ if wiredtiger:
'$BUILD_DIR/mongo/db/serveronly',
'$BUILD_DIR/mongo/db/service_context',
'$BUILD_DIR/mongo/db/service_context_d',
+ '$BUILD_DIR/mongo/db/service_context_test_fixture',
'$BUILD_DIR/mongo/db/storage/storage_engine_metadata',
'$BUILD_DIR/mongo/db/storage/storage_options',
'$BUILD_DIR/mongo/db/storage/wiredtiger/storage_wiredtiger_core',
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_customization_hooks.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_customization_hooks.cpp
index 3d4d7ccb3cf..edc40080909 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_customization_hooks.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_customization_hooks.cpp
@@ -37,17 +37,14 @@
#include "mongo/stdx/memory.h"
namespace mongo {
+namespace {
-/* Make a WiredTigerCustomizationHooks pointer a decoration on the global ServiceContext */
-MONGO_INITIALIZER_WITH_PREREQUISITES(SetWiredTigerCustomizationHooks, ("ServiceContext"))
-(InitializerContext* context) {
- auto customizationHooks = stdx::make_unique<WiredTigerCustomizationHooks>();
- WiredTigerCustomizationHooks::set(getGlobalServiceContext(), std::move(customizationHooks));
-
- return Status::OK();
-}
+ServiceContext::ConstructorActionRegisterer setWiredTigerCustomizationHooks{
+ "SetWiredTigerCustomizationHooks", [](ServiceContext* service) {
+ auto customizationHooks = stdx::make_unique<WiredTigerCustomizationHooks>();
+ WiredTigerCustomizationHooks::set(service, std::move(customizationHooks));
+ }};
-namespace {
const auto getCustomizationHooks =
ServiceContext::declareDecoration<std::unique_ptr<WiredTigerCustomizationHooks>>();
} // namespace
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_extensions.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_extensions.cpp
index b2df3f8c99c..c6e04dc0483 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_extensions.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_extensions.cpp
@@ -31,35 +31,18 @@
#include "mongo/db/storage/wiredtiger/wiredtiger_extensions.h"
-#include "mongo/base/init.h"
#include "mongo/base/string_data.h"
#include "mongo/db/service_context.h"
#include "mongo/stdx/memory.h"
namespace mongo {
-MONGO_INITIALIZER_WITH_PREREQUISITES(SetWiredTigerExtensions, ("ServiceContext"))
-(InitializerContext* context) {
- auto configHooks = stdx::make_unique<WiredTigerExtensions>();
- WiredTigerExtensions::set(getGlobalServiceContext(), std::move(configHooks));
-
- return Status::OK();
-}
-
namespace {
-const auto getConfigHooks =
- ServiceContext::declareDecoration<std::unique_ptr<WiredTigerExtensions>>();
+const auto getConfigHooks = ServiceContext::declareDecoration<WiredTigerExtensions>();
} // namespace
-void WiredTigerExtensions::set(ServiceContext* service,
- std::unique_ptr<WiredTigerExtensions> configHooks) {
- auto& hooks = getConfigHooks(service);
- invariant(configHooks);
- hooks = std::move(configHooks);
-}
-
WiredTigerExtensions* WiredTigerExtensions::get(ServiceContext* service) {
- return getConfigHooks(service).get();
+ return &getConfigHooks(service);
}
std::string WiredTigerExtensions::getOpenExtensionsConfig() const {
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_extensions.h b/src/mongo/db/storage/wiredtiger/wiredtiger_extensions.h
index ba73a7ff060..94767a08c9b 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_extensions.h
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_extensions.h
@@ -39,8 +39,6 @@ class ServiceContext;
class WiredTigerExtensions {
public:
- static void set(ServiceContext* service, std::unique_ptr<WiredTigerExtensions> custHooks);
-
static WiredTigerExtensions* get(ServiceContext* service);
/**
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp
index 9408642b210..9290b113405 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp
@@ -39,7 +39,6 @@
#include "mongo/db/catalog/collection_options.h"
#include "mongo/db/jsobj.h"
#include "mongo/db/service_context.h"
-#include "mongo/db/service_context_d.h"
#include "mongo/db/storage/kv/kv_storage_engine.h"
#include "mongo/db/storage/storage_engine_init.h"
#include "mongo/db/storage/storage_engine_lock_file.h"
@@ -179,11 +178,10 @@ public:
return true;
}
};
-} // namespace
-MONGO_INITIALIZER_WITH_PREREQUISITES(WiredTigerEngineInit, ("ServiceContext"))
-(InitializerContext* context) {
- registerStorageEngine(getGlobalServiceContext(), std::make_unique<WiredTigerFactory>());
- return Status::OK();
-}
-}
+ServiceContext::ConstructorActionRegisterer registerWiredTiger(
+ "WiredTigerEngineInit", [](ServiceContext* service) {
+ registerStorageEngine(service, std::make_unique<WiredTigerFactory>());
+ });
+} // namespace
+} // namespace
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_init_test.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_init_test.cpp
index 164d52013dd..0815bcf0bc8 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_init_test.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_init_test.cpp
@@ -31,6 +31,7 @@
#include "mongo/db/json.h"
#include "mongo/db/service_context.h"
+#include "mongo/db/service_context_test_fixture.h"
#include "mongo/db/storage/storage_engine_init.h"
#include "mongo/db/storage/storage_engine_metadata.h"
#include "mongo/db/storage/storage_options.h"
@@ -43,7 +44,7 @@ namespace {
using namespace mongo;
-class WiredTigerFactoryTest : public mongo::unittest::Test {
+class WiredTigerFactoryTest : public ServiceContextTest {
private:
virtual void setUp() {
ServiceContext* globalEnv = getGlobalServiceContext();
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
index e598b0e926a..1fb14fecf3b 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
@@ -215,6 +215,7 @@ public:
virtual void run() {
Client::initThread(name().c_str());
+ ON_BLOCK_EXIT([] { Client::destroy(); });
LOG(1) << "starting " << name() << " thread";
@@ -262,6 +263,7 @@ public:
virtual void run() {
Client::initThread(name().c_str());
+ ON_BLOCK_EXIT([] { Client::destroy(); });
LOG(1) << "starting " << name() << " thread";
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine_test.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine_test.cpp
index 4b1a9c28e15..074fa37ab55 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine_test.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine_test.cpp
@@ -53,6 +53,8 @@ class WiredTigerKVHarnessHelper : public KVHarnessHelper {
public:
WiredTigerKVHarnessHelper(bool forRepair = false)
: _dbpath("wt-kv-harness"), _forRepair(forRepair) {
+ if (!hasGlobalServiceContext())
+ setGlobalServiceContext(ServiceContext::make());
_engine.reset(makeEngine());
repl::ReplicationCoordinator::set(
getGlobalServiceContext(),
@@ -101,7 +103,7 @@ private:
class WiredTigerKVEngineTest : public unittest::Test {
public:
void setUp() override {
-
+ setGlobalServiceContext(ServiceContext::make());
Client::initThread(getThreadName());
_helper = makeHelper();
@@ -111,6 +113,7 @@ public:
void tearDown() override {
_helper.reset(nullptr);
Client::destroy();
+ setGlobalServiceContext({});
}
std::unique_ptr<OperationContext> makeOperationContext() {
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_mock.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_mock.cpp
index 118471655ad..2eb689e642d 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_mock.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_mock.cpp
@@ -34,8 +34,6 @@
#include "mongo/base/init.h"
#include "mongo/db/namespace_string.h"
#include "mongo/db/service_context.h"
-#include "mongo/db/service_context_noop.h"
-#include "mongo/db/service_context_registrar.h"
#include "mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h"
#include <memory>
@@ -52,8 +50,5 @@ MONGO_INITIALIZER(SetInitRsOplogBackgroundThreadCallback)(InitializerContext* co
return Status::OK();
}
-ServiceContextRegistrar serviceContextCreator([]() {
- return std::make_unique<ServiceContextNoop>();
-});
} // namespace
} // namespace mongo
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_mongod.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_mongod.cpp
index ac4ecfce606..c73e6d949b3 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_mongod.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_mongod.cpp
@@ -128,6 +128,7 @@ public:
virtual void run() {
Client::initThread(_name.c_str());
+ ON_BLOCK_EXIT([] { Client::destroy(); });
while (!globalInShutdownDeprecated()) {
if (!_deleteExcessDocuments()) {
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_standard_record_store_test.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_standard_record_store_test.cpp
index 5433a581a02..479bd470bf5 100644
--- a/src/mongo/db/storage/wiredtiger/wiredtiger_standard_record_store_test.cpp
+++ b/src/mongo/db/storage/wiredtiger/wiredtiger_standard_record_store_test.cpp
@@ -69,14 +69,7 @@ using std::stringstream;
class WiredTigerHarnessHelper final : public RecordStoreHarnessHelper {
public:
- WiredTigerHarnessHelper()
- : _dbpath("wt_test"),
- _engine(kWiredTigerEngineName, _dbpath.path(), &_cs, "", 1, false, false, false, false) {
- repl::ReplicationCoordinator::set(
- getGlobalServiceContext(),
- std::unique_ptr<repl::ReplicationCoordinator>(new repl::ReplicationCoordinatorMock(
- getGlobalServiceContext(), repl::ReplSettings())));
- }
+ WiredTigerHarnessHelper() : WiredTigerHarnessHelper(""_sd) {}
WiredTigerHarnessHelper(StringData extraStrings)
: _dbpath("wt_test"),
@@ -88,8 +81,11 @@ public:
false,
false,
false,
- false) {}
-
+ false) {
+ repl::ReplicationCoordinator::set(serviceContext(),
+ std::make_unique<repl::ReplicationCoordinatorMock>(
+ serviceContext(), repl::ReplSettings()));
+ }
~WiredTigerHarnessHelper() {}