summaryrefslogtreecommitdiff
path: root/src/mongo/embedded
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/embedded')
-rw-r--r--src/mongo/embedded/SConscript1
-rw-r--r--src/mongo/embedded/embedded.cpp21
-rw-r--r--src/mongo/embedded/service_context_embedded.cpp87
-rw-r--r--src/mongo/embedded/service_context_embedded.h48
4 files changed, 5 insertions, 152 deletions
diff --git a/src/mongo/embedded/SConscript b/src/mongo/embedded/SConscript
index 172c215cb87..913bc6e0380 100644
--- a/src/mongo/embedded/SConscript
+++ b/src/mongo/embedded/SConscript
@@ -34,7 +34,6 @@ env.Library(
'embedded_options_parser_init.cpp',
'periodic_runner_embedded.cpp',
'replication_coordinator_embedded.cpp',
- 'service_context_embedded.cpp',
'service_entry_point_embedded.cpp',
],
LIBDEPS=[
diff --git a/src/mongo/embedded/embedded.cpp b/src/mongo/embedded/embedded.cpp
index 9849aa0a151..f712e3a749b 100644
--- a/src/mongo/embedded/embedded.cpp
+++ b/src/mongo/embedded/embedded.cpp
@@ -51,7 +51,6 @@
#include "mongo/db/op_observer_registry.h"
#include "mongo/db/repair_database_and_check_version.h"
#include "mongo/db/repl/storage_interface_impl.h"
-#include "mongo/db/service_context_registrar.h"
#include "mongo/db/session_catalog.h"
#include "mongo/db/session_killer.h"
#include "mongo/db/storage/encryption_hooks.h"
@@ -59,7 +58,6 @@
#include "mongo/db/ttl.h"
#include "mongo/embedded/periodic_runner_embedded.h"
#include "mongo/embedded/replication_coordinator_embedded.h"
-#include "mongo/embedded/service_context_embedded.h"
#include "mongo/embedded/service_entry_point_embedded.h"
#include "mongo/logger/log_component.h"
#include "mongo/scripting/dbdirectclient_factory.h"
@@ -100,11 +98,10 @@ MONGO_INITIALIZER_GENERAL(ForkServer, ("EndStartupOptionHandling"), ("default"))
// Create a minimalistic replication coordinator to provide a limited interface for users. Not
// functional to provide any replication logic.
-GlobalInitializerRegisterer replicationManagerInitializer(
+ServiceContext::ConstructorActionRegisterer replicationManagerInitializer(
"CreateReplicationManager",
- {"SSLManager", "ServiceContext", "default"},
- [](InitializerContext* context) {
- auto serviceContext = getGlobalServiceContext();
+ {"SSLManager", "default"},
+ [](ServiceContext* serviceContext) {
repl::StorageInterface::set(serviceContext, std::make_unique<repl::StorageInterfaceImpl>());
auto logicalClock = stdx::make_unique<LogicalClock>(serviceContext);
@@ -113,16 +110,6 @@ GlobalInitializerRegisterer replicationManagerInitializer(
auto replCoord = std::make_unique<ReplicationCoordinatorEmbedded>(serviceContext);
repl::ReplicationCoordinator::set(serviceContext, std::move(replCoord));
repl::setOplogCollectionName(serviceContext);
- return Status::OK();
- },
- [](DeinitializerContext* context) {
- auto serviceContext = getGlobalServiceContext();
-
- repl::ReplicationCoordinator::set(serviceContext, nullptr);
- LogicalClock::set(serviceContext, nullptr);
- repl::StorageInterface::set(serviceContext, nullptr);
-
- return Status::OK();
});
MONGO_INITIALIZER(fsyncLockedForWriting)(InitializerContext* context) {
@@ -197,12 +184,14 @@ ServiceContext* initialize(const char* yaml_config) {
Status status = mongo::runGlobalInitializers(yaml_config ? 1 : 0, argv, nullptr);
uassertStatusOKWithContext(status, "Global initilization failed");
+ setGlobalServiceContext(ServiceContext::make());
Client::initThread("initandlisten");
initWireSpec();
auto serviceContext = getGlobalServiceContext();
+ serviceContext->setServiceEntryPoint(std::make_unique<ServiceEntryPointEmbedded>());
auto opObserverRegistry = std::make_unique<OpObserverRegistry>();
opObserverRegistry->addObserver(std::make_unique<OpObserverImpl>());
diff --git a/src/mongo/embedded/service_context_embedded.cpp b/src/mongo/embedded/service_context_embedded.cpp
deleted file mode 100644
index cc90580fb04..00000000000
--- a/src/mongo/embedded/service_context_embedded.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * Copyright (C) 2018 MongoDB Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, the copyright holders give permission to link the
- * code of portions of this program with the OpenSSL library under certain
- * conditions as described in each individual source file and distribute
- * linked combinations including the program with the OpenSSL library. You
- * must comply with the GNU Affero General Public License in all respects for
- * all of the code used other than as permitted herein. If you modify file(s)
- * with this exception, you may extend this exception to your version of the
- * file(s), but you are not obligated to do so. If you do not wish to do so,
- * delete this exception statement from your version. If you delete this
- * exception statement from all source files in the program, then also delete
- * it in the license file.
- */
-
-#define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kStorage
-
-#include "mongo/platform/basic.h"
-
-#include "mongo/base/init.h"
-#include "mongo/base/initializer.h"
-#include "mongo/db/client.h"
-#include "mongo/db/concurrency/lock_state.h"
-#include "mongo/db/operation_context.h"
-#include "mongo/db/service_context_registrar.h"
-#include "mongo/db/storage/storage_engine.h"
-#include "mongo/db/storage/storage_engine_lock_file.h"
-#include "mongo/db/storage/storage_engine_metadata.h"
-#include "mongo/db/storage/storage_options.h"
-#include "mongo/embedded/service_context_embedded.h"
-#include "mongo/embedded/service_entry_point_embedded.h"
-#include "mongo/stdx/memory.h"
-#include "mongo/util/log.h"
-#include "mongo/util/map_util.h"
-#include "mongo/util/mongoutils/str.h"
-#include "mongo/util/scopeguard.h"
-#include "mongo/util/system_clock_source.h"
-#include "mongo/util/system_tick_source.h"
-
-namespace mongo {
-namespace {
-ServiceContextRegistrar serviceContextCreator([]() {
- auto service = std::make_unique<ServiceContextMongoEmbedded>();
- service->setServiceEntryPoint(std::make_unique<ServiceEntryPointEmbedded>());
- service->setTickSource(std::make_unique<SystemTickSource>());
- service->setFastClockSource(std::make_unique<SystemClockSource>());
- service->setPreciseClockSource(std::make_unique<SystemClockSource>());
- return service;
-});
-} // namespace
-
-extern bool _supportsDocLocking;
-
-ServiceContextMongoEmbedded::ServiceContextMongoEmbedded() = default;
-
-ServiceContextMongoEmbedded::~ServiceContextMongoEmbedded() = default;
-
-std::unique_ptr<OperationContext> ServiceContextMongoEmbedded::_newOpCtx(Client* client,
- unsigned opId) {
- invariant(&cc() == client);
- auto opCtx = stdx::make_unique<OperationContext>(client, opId);
-
- if (isMMAPV1()) {
- opCtx->setLockState(stdx::make_unique<MMAPV1LockerImpl>());
- } else {
- opCtx->setLockState(stdx::make_unique<DefaultLockerImpl>());
- }
-
- opCtx->setRecoveryUnit(getStorageEngine()->newRecoveryUnit(),
- WriteUnitOfWork::RecoveryUnitState::kNotInUnitOfWork);
- return opCtx;
-}
-
-} // namespace mongo
diff --git a/src/mongo/embedded/service_context_embedded.h b/src/mongo/embedded/service_context_embedded.h
deleted file mode 100644
index 3f697ec9a91..00000000000
--- a/src/mongo/embedded/service_context_embedded.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * Copyright (C) 2018 MongoDB Inc.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License, version 3,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * As a special exception, the copyright holders give permission to link the
- * code of portions of this program with the OpenSSL library under certain
- * conditions as described in each individual source file and distribute
- * linked combinations including the program with the OpenSSL library. You
- * must comply with the GNU Affero General Public License in all respects for
- * all of the code used other than as permitted herein. If you modify file(s)
- * with this exception, you may extend this exception to your version of the
- * file(s), but you are not obligated to do so. If you do not wish to do so,
- * delete this exception statement from your version. If you delete this
- * exception statement from all source files in the program, then also delete
- * it in the license file.
- */
-
-#pragma once
-
-#include "mongo/db/service_context.h"
-
-namespace mongo {
-
-class Client;
-class StorageEngineLockFile;
-
-class ServiceContextMongoEmbedded final : public ServiceContext {
-public:
- ServiceContextMongoEmbedded();
-
- ~ServiceContextMongoEmbedded();
-
-private:
- std::unique_ptr<OperationContext> _newOpCtx(Client* client, unsigned opId) override;
-};
-
-} // namespace mongo