diff options
87 files changed, 309 insertions, 303 deletions
diff --git a/src/mongo/SConscript b/src/mongo/SConscript index 833834c735c..6601b088db4 100644 --- a/src/mongo/SConscript +++ b/src/mongo/SConscript @@ -480,7 +480,7 @@ env.Library('mongocommon', commonFiles, 'clientdriver', 'fail_point', 'foundation', - 'global_environment_experiment', + 'service_context', 'lasterror', 'md5', 'mongohasher', @@ -696,10 +696,14 @@ else: env.Library('update_index_data', [ 'db/update_index_data.cpp' ], LIBDEPS=[ 'db/common' ]) -# Global Configuration. Used by both mongos and mongod. -env.Library('global_environment_experiment', - [ 'db/global_environment_experiment.cpp', - 'db/global_environment_noop.cpp' ]) +env.Library( + target='service_context', + source=[ + 'db/service_context.cpp', + 'db/service_context_noop.cpp', + ], + LIBDEPS=[ + ]) # Memory-mapped files support. Used by mongod and some tools. env.Library('mmap', ['util/mmap.cpp', 'util/mmap_${TARGET_OS_FAMILY}.cpp'], LIBDEPS=['foundation']) @@ -773,7 +777,7 @@ serverOnlyFiles = [ "db/background.cpp", "db/dbhelpers.cpp", "db/driverHelpers.cpp", "db/geo/haystack.cpp", - "db/global_environment_d.cpp", + "db/service_context_d.cpp", "db/index/2d_access_method.cpp", "db/index/btree_access_method.cpp", "db/index/fts_access_method.cpp", @@ -1029,7 +1033,7 @@ env.Library('range_deleter', '$BUILD_DIR/mongo/db/repl/repl_coordinator_global', 'base/base', 'bson', - 'global_environment_experiment', + 'service_context', 'range_arithmetic', 'synchronization' ]) diff --git a/src/mongo/db/auth/authz_manager_external_state_d.cpp b/src/mongo/db/auth/authz_manager_external_state_d.cpp index dfb37502332..2ff2b933fce 100644 --- a/src/mongo/db/auth/authz_manager_external_state_d.cpp +++ b/src/mongo/db/auth/authz_manager_external_state_d.cpp @@ -43,7 +43,7 @@ #include "mongo/db/db_raii.h" #include "mongo/db/dbdirectclient.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/jsobj.h" #include "mongo/db/operation_context.h" #include "mongo/db/storage/storage_engine.h" diff --git a/src/mongo/db/catalog/cursor_manager.cpp b/src/mongo/db/catalog/cursor_manager.cpp index e1a7c1193b3..f68c6cbc1ab 100644 --- a/src/mongo/db/catalog/cursor_manager.cpp +++ b/src/mongo/db/catalog/cursor_manager.cpp @@ -39,7 +39,7 @@ #include "mongo/db/catalog/database_holder.h" #include "mongo/db/client.h" #include "mongo/db/db_raii.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/operation_context.h" #include "mongo/db/query/plan_executor.h" #include "mongo/platform/random.h" diff --git a/src/mongo/db/catalog/database.cpp b/src/mongo/db/catalog/database.cpp index 9252d6417ab..814184ef694 100644 --- a/src/mongo/db/catalog/database.cpp +++ b/src/mongo/db/catalog/database.cpp @@ -48,8 +48,8 @@ #include "mongo/db/catalog/database_holder.h" #include "mongo/db/concurrency/write_conflict_exception.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_experiment.h" -#include "mongo/db/global_environment_d.h" +#include "mongo/db/service_context.h" +#include "mongo/db/service_context_d.h" #include "mongo/db/index/index_access_method.h" #include "mongo/db/instance.h" #include "mongo/db/introspect.h" @@ -221,7 +221,7 @@ namespace mongo { } vector<string> others; - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); storageEngine->listDatabases(&others); set<string> allShortNames; @@ -272,7 +272,7 @@ namespace mongo { continue; } - getGlobalEnvironment()->getOpObserver()->onDropCollection( + getGlobalServiceContext()->getOpObserver()->onDropCollection( txn, NamespaceString(ns)); wunit.commit(); } @@ -549,7 +549,7 @@ namespace mongo { Lock::GlobalWrite lk(txn->lockState()); vector<string> n; - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); storageEngine->listDatabases(&n); if( n.size() == 0 ) return; @@ -581,7 +581,7 @@ namespace mongo { dbHolder().close( txn, name ); db = NULL; // d is now deleted - getGlobalEnvironment()->getGlobalStorageEngine()->dropDatabase( txn, name ); + getGlobalServiceContext()->getGlobalStorageEngine()->dropDatabase( txn, name ); } /** { ..., capped: true, size: ..., max: ... } @@ -622,7 +622,7 @@ namespace mongo { invariant( db->createCollection( txn, ns, collectionOptions, true, createDefaultIndexes ) ); if ( logForReplication ) { - getGlobalEnvironment()->getOpObserver()->onCreateCollection(txn, + getGlobalServiceContext()->getOpObserver()->onCreateCollection(txn, NamespaceString(ns), collectionOptions); } diff --git a/src/mongo/db/catalog/database_holder.cpp b/src/mongo/db/catalog/database_holder.cpp index 68aca767abd..e8bb0138d88 100644 --- a/src/mongo/db/catalog/database_holder.cpp +++ b/src/mongo/db/catalog/database_holder.cpp @@ -39,7 +39,7 @@ #include "mongo/db/clientcursor.h" #include "mongo/db/catalog/database.h" #include "mongo/db/catalog/database_catalog_entry.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/operation_context.h" #include "mongo/db/storage/storage_engine.h" #include "mongo/util/file_allocator.h" @@ -122,7 +122,7 @@ namespace { uasserted(DatabaseDifferCaseCode, ss.str()); } - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); invariant(storageEngine); DatabaseCatalogEntry* entry = storageEngine->getDatabaseCatalogEntry(txn, dbname); @@ -166,7 +166,7 @@ namespace { delete it->second; _dbs.erase(it); - getGlobalEnvironment()->getGlobalStorageEngine()->closeDatabase(txn, dbName.toString()); + getGlobalServiceContext()->getGlobalStorageEngine()->closeDatabase(txn, dbName.toString()); } bool DatabaseHolder::closeAll(OperationContext* txn, BSONObjBuilder& result, bool force) { @@ -200,7 +200,7 @@ namespace { _dbs.erase( name ); - getGlobalEnvironment()->getGlobalStorageEngine()->closeDatabase( txn, name ); + getGlobalServiceContext()->getGlobalStorageEngine()->closeDatabase( txn, name ); bb.append( name ); } diff --git a/src/mongo/db/catalog/index_catalog.cpp b/src/mongo/db/catalog/index_catalog.cpp index cc8748cd279..647f9b8e17a 100644 --- a/src/mongo/db/catalog/index_catalog.cpp +++ b/src/mongo/db/catalog/index_catalog.cpp @@ -47,7 +47,7 @@ #include "mongo/db/clientcursor.h" #include "mongo/db/curop.h" #include "mongo/db/field_ref.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/index/index_access_method.h" #include "mongo/db/index/index_descriptor.h" #include "mongo/db/index_legacy.h" @@ -497,7 +497,7 @@ namespace { double v = vElt.Number(); // SERVER-16893 Forbid use of v0 indexes with non-mmapv1 engines - if (v == 0 && !getGlobalEnvironment()->getGlobalStorageEngine()->isMmapV1()) { + if (v == 0 && !getGlobalServiceContext()->getGlobalStorageEngine()->isMmapV1()) { return Status( ErrorCodes::CannotCreateIndex, str::stream() << "use of v0 indexes is only allowed with the " << "mmapv1 storage engine"); @@ -1300,7 +1300,7 @@ namespace { // immediately after it recovers from yield, such that no further work is done // on the index build. Thus this thread does not have to synchronize with the // bg index operation; we can just assume that it is safe to proceed. - getGlobalEnvironment()->killOperation(opNum); + getGlobalServiceContext()->killOperation(opNum); } if (indexes.size() > 0) { diff --git a/src/mongo/db/catalog/index_catalog_entry.cpp b/src/mongo/db/catalog/index_catalog_entry.cpp index 7ad596f0f50..ad4e3b31b3a 100644 --- a/src/mongo/db/catalog/index_catalog_entry.cpp +++ b/src/mongo/db/catalog/index_catalog_entry.cpp @@ -39,10 +39,10 @@ #include "mongo/db/concurrency/write_conflict_exception.h" #include "mongo/db/index/index_access_method.h" #include "mongo/db/index/index_descriptor.h" -#include "mongo/db/global_environment_experiment.h" #include "mongo/db/matcher/expression.h" #include "mongo/db/matcher/expression_parser.h" #include "mongo/db/operation_context.h" +#include "mongo/db/service_context.h" #include "mongo/util/file_allocator.h" #include "mongo/util/log.h" #include "mongo/util/scopeguard.h" @@ -210,7 +210,7 @@ namespace mongo { // setMultikey. The reason we need is to avoid artificial WriteConflicts, which happen // with snapshot isolation. { - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); RecoveryUnitSwap ruSwap(txn, storageEngine->newRecoveryUnit()); WriteUnitOfWork wuow(txn); diff --git a/src/mongo/db/clientlistplugin.cpp b/src/mongo/db/clientlistplugin.cpp index a8200a5c997..6f0a30efedc 100644 --- a/src/mongo/db/clientlistplugin.cpp +++ b/src/mongo/db/clientlistplugin.cpp @@ -38,7 +38,7 @@ #include "mongo/db/commands.h" #include "mongo/db/curop.h" #include "mongo/db/currentop_command.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/matcher/expression_parser.h" #include "mongo/db/operation_context.h" #include "mongo/db/dbwebserver.h" diff --git a/src/mongo/db/cloner.cpp b/src/mongo/db/cloner.cpp index 395e24baae6..fa69594e2fa 100644 --- a/src/mongo/db/cloner.cpp +++ b/src/mongo/db/cloner.cpp @@ -51,7 +51,7 @@ #include "mongo/db/commands/rename_collection.h" #include "mongo/db/dbdirectclient.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/index_builder.h" #include "mongo/db/jsobj.h" #include "mongo/db/namespace_string.h" @@ -152,7 +152,7 @@ namespace mongo { verify(collection); if (logForRepl) { - getGlobalEnvironment()->getOpObserver()->onCreateCollection( + getGlobalServiceContext()->getOpObserver()->onCreateCollection( txn, to_collection, CollectionOptions()); @@ -234,7 +234,7 @@ namespace mongo { } uassertStatusOK( loc.getStatus() ); if (logForRepl) - getGlobalEnvironment()->getOpObserver()->onInsert(txn, to_collection.ns(), js); + getGlobalServiceContext()->getOpObserver()->onInsert(txn, to_collection.ns(), js); wunit.commit(); @@ -341,7 +341,7 @@ namespace mongo { collection = db->createCollection( txn, to_collection.ns() ); invariant(collection); if (logForRepl) { - getGlobalEnvironment()->getOpObserver()->onCreateCollection(txn, + getGlobalServiceContext()->getOpObserver()->onCreateCollection(txn, to_collection, CollectionOptions()); } @@ -372,7 +372,7 @@ namespace mongo { const char* createIndexNs = targetSystemIndexesCollectionName.c_str(); for (vector<BSONObj>::const_iterator it = indexesToBuild.begin(); it != indexesToBuild.end(); ++it) { - getGlobalEnvironment()->getOpObserver()->onInsert(txn, createIndexNs, *it); + getGlobalServiceContext()->getOpObserver()->onInsert(txn, createIndexNs, *it); } } wunit.commit(); @@ -651,7 +651,7 @@ namespace mongo { c->deleteDocument(txn, *it, true, true, opts.logForRepl ? &id : NULL); if (opts.logForRepl) - getGlobalEnvironment()->getOpObserver()->onDelete(txn, + getGlobalServiceContext()->getOpObserver()->onDelete(txn, c->ns().ns(), id); wunit.commit(); @@ -664,7 +664,7 @@ namespace mongo { WriteUnitOfWork wunit(txn); indexer.commit(); if (opts.logForRepl) { - getGlobalEnvironment()->getOpObserver()->onCreateIndex( + getGlobalServiceContext()->getOpObserver()->onCreateIndex( txn, c->ns().getSystemIndexesCollection().c_str(), c->getIndexCatalog()->getDefaultIdIndexSpec()); diff --git a/src/mongo/db/commands/apply_ops.cpp b/src/mongo/db/commands/apply_ops.cpp index 2ab7f437c44..6551a5588fe 100644 --- a/src/mongo/db/commands/apply_ops.cpp +++ b/src/mongo/db/commands/apply_ops.cpp @@ -45,7 +45,7 @@ #include "mongo/db/db_raii.h" #include "mongo/db/concurrency/write_conflict_exception.h" #include "mongo/db/dbdirectclient.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/jsobj.h" #include "mongo/db/matcher/matcher.h" #include "mongo/db/operation_context_impl.h" @@ -224,7 +224,7 @@ namespace mongo { while (true) { try { WriteUnitOfWork wunit(txn); - getGlobalEnvironment()->getOpObserver()->onApplyOps(txn, + getGlobalServiceContext()->getOpObserver()->onApplyOps(txn, tempNS, cmdRewritten); wunit.commit(); diff --git a/src/mongo/db/commands/collection_to_capped.cpp b/src/mongo/db/commands/collection_to_capped.cpp index 9e2c33a9a87..b5a5aa90574 100644 --- a/src/mongo/db/commands/collection_to_capped.cpp +++ b/src/mongo/db/commands/collection_to_capped.cpp @@ -36,7 +36,7 @@ #include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/db/db_raii.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/index_builder.h" #include "mongo/db/op_observer.h" #include "mongo/db/operation_context_impl.h" @@ -126,7 +126,7 @@ namespace { WriteUnitOfWork wunit(txn); toCollection->insertDocument( txn, obj, true ); if ( logForReplication ) { - getGlobalEnvironment()->getOpObserver()->onInsert(txn, toNs, obj); + getGlobalServiceContext()->getOpObserver()->onInsert(txn, toNs, obj); } wunit.commit(); } @@ -300,7 +300,7 @@ namespace { return appendCommandStatus( result, status ); if (!fromRepl) { - getGlobalEnvironment()->getOpObserver()->onConvertToCapped( + getGlobalServiceContext()->getOpObserver()->onConvertToCapped( txn, NamespaceString(longSource), size); diff --git a/src/mongo/db/commands/create_indexes.cpp b/src/mongo/db/commands/create_indexes.cpp index eed2eb96a13..39db8afa3fe 100644 --- a/src/mongo/db/commands/create_indexes.cpp +++ b/src/mongo/db/commands/create_indexes.cpp @@ -42,7 +42,7 @@ #include "mongo/db/commands.h" #include "mongo/db/concurrency/write_conflict_exception.h" #include "mongo/db/curop.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/operation_context_impl.h" #include "mongo/db/op_observer.h" #include "mongo/db/ops/insert.h" @@ -162,7 +162,7 @@ namespace mongo { collection = db->createCollection( txn, ns.ns() ); invariant( collection ); if (!fromRepl) { - getGlobalEnvironment()->getOpObserver()->onCreateCollection( + getGlobalServiceContext()->getOpObserver()->onCreateCollection( txn, ns, CollectionOptions()); @@ -274,7 +274,7 @@ namespace mongo { if ( !fromRepl ) { for ( size_t i = 0; i < specs.size(); i++ ) { std::string systemIndexes = ns.getSystemIndexesCollection(); - getGlobalEnvironment()->getOpObserver()->onCreateIndex(txn, + getGlobalServiceContext()->getOpObserver()->onCreateIndex(txn, systemIndexes, specs[i]); } diff --git a/src/mongo/db/commands/drop_indexes.cpp b/src/mongo/db/commands/drop_indexes.cpp index fa555166966..d427e3a720f 100644 --- a/src/mongo/db/commands/drop_indexes.cpp +++ b/src/mongo/db/commands/drop_indexes.cpp @@ -48,7 +48,7 @@ #include "mongo/db/curop.h" #include "mongo/db/db_raii.h" #include "mongo/db/dbdirectclient.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/index/index_descriptor.h" #include "mongo/db/index_builder.h" #include "mongo/db/op_observer.h" @@ -132,7 +132,7 @@ namespace mongo { return false; } if (!fromRepl) { - getGlobalEnvironment()->getOpObserver()->onDropIndex(txn, + getGlobalServiceContext()->getOpObserver()->onDropIndex(txn, dbname + ".$cmd", jsobj); } diff --git a/src/mongo/db/commands/find_and_modify.cpp b/src/mongo/db/commands/find_and_modify.cpp index 86f155394de..88fe9647e6c 100644 --- a/src/mongo/db/commands/find_and_modify.cpp +++ b/src/mongo/db/commands/find_and_modify.cpp @@ -40,7 +40,7 @@ #include "mongo/db/dbhelpers.h" #include "mongo/db/exec/update.h" #include "mongo/db/exec/working_set_common.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/op_observer.h" #include "mongo/db/ops/delete.h" #include "mongo/db/ops/update.h" @@ -444,7 +444,7 @@ namespace mongo { // This is the last thing we do before the WriteUnitOfWork commits (except // for some BSON manipulation). - getGlobalEnvironment()->getOpObserver()->onInsert(txn, + getGlobalServiceContext()->getOpObserver()->onInsert(txn, collection->ns().ns(), newDoc); diff --git a/src/mongo/db/commands/find_cmd.cpp b/src/mongo/db/commands/find_cmd.cpp index 2995e118fce..30971083313 100644 --- a/src/mongo/db/commands/find_cmd.cpp +++ b/src/mongo/db/commands/find_cmd.cpp @@ -41,7 +41,7 @@ #include "mongo/db/commands.h" #include "mongo/db/db_raii.h" #include "mongo/db/exec/working_set_common.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/query/explain.h" #include "mongo/db/query/find.h" #include "mongo/db/query/get_executor.h" @@ -336,7 +336,7 @@ namespace mongo { // subsequent getMore requests. The calling OpCtx gets a fresh RecoveryUnit. txn->recoveryUnit()->commitAndRestart(); cursor->setOwnedRecoveryUnit(txn->releaseRecoveryUnit()); - StorageEngine* engine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* engine = getGlobalServiceContext()->getGlobalStorageEngine(); txn->setRecoveryUnit(engine->newRecoveryUnit()); } } diff --git a/src/mongo/db/commands/fsync.cpp b/src/mongo/db/commands/fsync.cpp index 7c0442f205e..8a2329c7f95 100644 --- a/src/mongo/db/commands/fsync.cpp +++ b/src/mongo/db/commands/fsync.cpp @@ -46,7 +46,7 @@ #include "mongo/db/auth/privilege.h" #include "mongo/db/concurrency/d_concurrency.h" #include "mongo/db/commands.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/storage/mmap_v1/dur.h" #include "mongo/db/storage/storage_engine.h" #include "mongo/db/client.h" @@ -152,7 +152,7 @@ namespace mongo { // Take a global IS lock to ensure the storage engine is not shutdown Lock::GlobalLock global(txn->lockState(), MODE_IS, UINT_MAX); - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); result.append( "numFiles" , storageEngine->flushAllFiles( sync ) ); } return 1; @@ -233,7 +233,7 @@ namespace mongo { txn.lockState()->downgradeGlobalXtoSForMMAPV1(); try { - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); storageEngine->flushAllFiles(true); } catch( std::exception& e ) { diff --git a/src/mongo/db/commands/getmore_cmd.cpp b/src/mongo/db/commands/getmore_cmd.cpp index 4a7578b9557..16a2eac4c13 100644 --- a/src/mongo/db/commands/getmore_cmd.cpp +++ b/src/mongo/db/commands/getmore_cmd.cpp @@ -41,7 +41,7 @@ #include "mongo/db/commands.h" #include "mongo/db/db_raii.h" #include "mongo/db/exec/working_set_common.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/query/find.h" #include "mongo/db/query/getmore_request.h" #include "mongo/db/stats/counters.h" @@ -184,7 +184,7 @@ namespace mongo { if (!cursor->hasRecoveryUnit()) { // Start using a new RecoveryUnit. cursor->setOwnedRecoveryUnit( - getGlobalEnvironment()->getGlobalStorageEngine()->newRecoveryUnit()); + getGlobalServiceContext()->getGlobalStorageEngine()->newRecoveryUnit()); } // Swap RecoveryUnit(s) between the ClientCursor and OperationContext. diff --git a/src/mongo/db/commands/list_collections.cpp b/src/mongo/db/commands/list_collections.cpp index f67a117dd0f..092822ba663 100644 --- a/src/mongo/db/commands/list_collections.cpp +++ b/src/mongo/db/commands/list_collections.cpp @@ -44,7 +44,7 @@ #include "mongo/db/db_raii.h" #include "mongo/db/exec/queued_data_stage.h" #include "mongo/db/exec/working_set.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/query/find_constants.h" #include "mongo/db/storage/storage_engine.h" diff --git a/src/mongo/db/commands/list_databases.cpp b/src/mongo/db/commands/list_databases.cpp index 603f340bddc..e5997e36d2c 100644 --- a/src/mongo/db/commands/list_databases.cpp +++ b/src/mongo/db/commands/list_databases.cpp @@ -33,7 +33,7 @@ #include "mongo/db/catalog/database_holder.h" #include "mongo/db/client.h" #include "mongo/db/commands.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/storage/storage_engine.h" namespace mongo { @@ -78,7 +78,7 @@ namespace mongo { bool /*fromRepl*/) { vector< string > dbNames; - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); storageEngine->listDatabases( &dbNames ); vector< BSONObj > dbInfos; diff --git a/src/mongo/db/commands/list_indexes.cpp b/src/mongo/db/commands/list_indexes.cpp index 41457ce9d20..fddf6cc6cba 100644 --- a/src/mongo/db/commands/list_indexes.cpp +++ b/src/mongo/db/commands/list_indexes.cpp @@ -42,7 +42,7 @@ #include "mongo/db/db_raii.h" #include "mongo/db/exec/queued_data_stage.h" #include "mongo/db/exec/working_set.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/query/find_constants.h" #include "mongo/db/storage/storage_engine.h" diff --git a/src/mongo/db/commands/mr.cpp b/src/mongo/db/commands/mr.cpp index 15918b1d28f..a3e0ec2d870 100644 --- a/src/mongo/db/commands/mr.cpp +++ b/src/mongo/db/commands/mr.cpp @@ -45,7 +45,7 @@ #include "mongo/db/db.h" #include "mongo/db/db_raii.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/index/index_descriptor.h" #include "mongo/db/instance.h" #include "mongo/db/matcher/matcher.h" @@ -441,7 +441,7 @@ namespace mongo { b.append( "create", nsToCollectionSubstring( _config.tempNamespace )); b.appendElements( options.toBSON() ); string logNs = nsToDatabase( _config.tempNamespace ) + ".$cmd"; - getGlobalEnvironment()->getOpObserver()->onCreateCollection( + getGlobalServiceContext()->getOpObserver()->onCreateCollection( _txn, NamespaceString(_config.tempNamespace), options); @@ -458,7 +458,7 @@ namespace mongo { } // Log the createIndex operation. string logNs = nsToDatabase( _config.tempNamespace ) + ".system.indexes"; - getGlobalEnvironment()->getOpObserver()->onInsert(_txn, logNs, *it); + getGlobalServiceContext()->getOpObserver()->onInsert(_txn, logNs, *it); } wuow.commit(); } @@ -695,7 +695,7 @@ namespace mongo { BSONObj bo = b.obj(); uassertStatusOK( coll->insertDocument( _txn, bo, true ).getStatus() ); - getGlobalEnvironment()->getOpObserver()->onInsert(_txn, ns, bo); + getGlobalServiceContext()->getOpObserver()->onInsert(_txn, ns, bo); wuow.commit(); } diff --git a/src/mongo/db/commands/oplog_note.cpp b/src/mongo/db/commands/oplog_note.cpp index bc41c2a1409..2dc3dd204fb 100644 --- a/src/mongo/db/commands/oplog_note.cpp +++ b/src/mongo/db/commands/oplog_note.cpp @@ -32,7 +32,7 @@ #include "mongo/db/auth/action_type.h" #include "mongo/db/auth/authorization_session.h" #include "mongo/db/auth/resource_pattern.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/commands.h" #include "mongo/db/jsobj.h" #include "mongo/db/operation_context.h" @@ -84,7 +84,7 @@ namespace mongo { Lock::GlobalWrite globalWrite(txn->lockState()); WriteUnitOfWork wuow(txn); - getGlobalEnvironment()->getOpObserver()->onOpMessage(txn, dataElement.Obj()); + getGlobalServiceContext()->getOpObserver()->onOpMessage(txn, dataElement.Obj()); wuow.commit(); return true; } diff --git a/src/mongo/db/commands/pipeline_command.cpp b/src/mongo/db/commands/pipeline_command.cpp index d3d9e1e288c..a67620e6343 100644 --- a/src/mongo/db/commands/pipeline_command.cpp +++ b/src/mongo/db/commands/pipeline_command.cpp @@ -41,7 +41,7 @@ #include "mongo/db/curop.h" #include "mongo/db/db_raii.h" #include "mongo/db/exec/pipeline_proxy.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/pipeline/accumulator.h" #include "mongo/db/pipeline/document.h" #include "mongo/db/pipeline/document_source.h" @@ -138,7 +138,7 @@ namespace mongo { // getMore requests. The calling OpCtx gets a fresh RecoveryUnit. txn->recoveryUnit()->commitAndRestart(); cursor->setOwnedRecoveryUnit(txn->releaseRecoveryUnit()); - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); txn->setRecoveryUnit(storageEngine->newRecoveryUnit()); } diff --git a/src/mongo/db/commands/rename_collection.cpp b/src/mongo/db/commands/rename_collection.cpp index 81e5f992f83..162208b73cf 100644 --- a/src/mongo/db/commands/rename_collection.cpp +++ b/src/mongo/db/commands/rename_collection.cpp @@ -39,7 +39,7 @@ #include "mongo/db/commands/rename_collection.h" #include "mongo/db/db_raii.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/index/index_descriptor.h" #include "mongo/db/index_builder.h" #include "mongo/db/namespace_string.h" @@ -247,7 +247,7 @@ namespace mongo { } if (!fromRepl) { - getGlobalEnvironment()->getOpObserver()->onRenameCollection( + getGlobalServiceContext()->getOpObserver()->onRenameCollection( txn, NamespaceString(source), NamespaceString(target), @@ -351,7 +351,7 @@ namespace mongo { indexer.commit(); if (!fromRepl) { - getGlobalEnvironment()->getOpObserver()->onRenameCollection( + getGlobalServiceContext()->getOpObserver()->onRenameCollection( txn, NamespaceString(source), NamespaceString(target), diff --git a/src/mongo/db/commands/test_commands.cpp b/src/mongo/db/commands/test_commands.cpp index 0db4eb08f90..eb6408e6d5b 100644 --- a/src/mongo/db/commands/test_commands.cpp +++ b/src/mongo/db/commands/test_commands.cpp @@ -38,7 +38,7 @@ #include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/db/db_raii.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/index_builder.h" #include "mongo/db/op_observer.h" #include "mongo/db/operation_context_impl.h" @@ -235,7 +235,7 @@ namespace mongo { IndexBuilder::restoreIndexes(txn, indexes); if (!fromRepl) { - getGlobalEnvironment()->getOpObserver()->onEmptyCapped(txn, collection->ns()); + getGlobalServiceContext()->getOpObserver()->onEmptyCapped(txn, collection->ns()); } wuow.commit(); diff --git a/src/mongo/db/commands/write_commands/batch_executor.cpp b/src/mongo/db/commands/write_commands/batch_executor.cpp index 21f024513c3..594a121c76c 100644 --- a/src/mongo/db/commands/write_commands/batch_executor.cpp +++ b/src/mongo/db/commands/write_commands/batch_executor.cpp @@ -45,7 +45,7 @@ #include "mongo/db/db_raii.h" #include "mongo/db/exec/delete.h" #include "mongo/db/exec/update.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/instance.h" #include "mongo/db/introspect.h" #include "mongo/db/lasterror.h" @@ -1072,7 +1072,7 @@ namespace mongo { request->getTargetingNS()))); return false; } - getGlobalEnvironment()->getOpObserver()->onCreateCollection( + getGlobalServiceContext()->getOpObserver()->onCreateCollection( txn, NamespaceString(request->getTargetingNS()), CollectionOptions()); @@ -1199,7 +1199,7 @@ namespace mongo { result->setError(toWriteError(status.getStatus())); } else { - getGlobalEnvironment()->getOpObserver()->onInsert(txn, insertNS, docToInsert); + getGlobalServiceContext()->getOpObserver()->onInsert(txn, insertNS, docToInsert); result->getStats().n = 1; wunit.commit(); } diff --git a/src/mongo/db/concurrency/SConscript b/src/mongo/db/concurrency/SConscript index 1687fa6ce04..d38a2032f98 100644 --- a/src/mongo/db/concurrency/SConscript +++ b/src/mongo/db/concurrency/SConscript @@ -21,10 +21,10 @@ env.Library( 'lock_stats.cpp', ], LIBDEPS=[ + "$BUILD_DIR/mongo/server_parameters", '$BUILD_DIR/mongo/base/base', '$BUILD_DIR/mongo/foundation', - '$BUILD_DIR/mongo/global_environment_experiment', - "$BUILD_DIR/mongo/server_parameters", + '$BUILD_DIR/mongo/service_context', '$BUILD_DIR/mongo/spin_lock', '$BUILD_DIR/third_party/shim_boost', ], diff --git a/src/mongo/db/concurrency/d_concurrency.cpp b/src/mongo/db/concurrency/d_concurrency.cpp index 73c4c89113b..5882c5a1950 100644 --- a/src/mongo/db/concurrency/d_concurrency.cpp +++ b/src/mongo/db/concurrency/d_concurrency.cpp @@ -32,7 +32,7 @@ #include <string> -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/namespace_string.h" #include "mongo/db/server_parameters.h" #include "mongo/util/assert_util.h" diff --git a/src/mongo/db/concurrency/lock_state.cpp b/src/mongo/db/concurrency/lock_state.cpp index ace5c26beee..2ceb854be1c 100644 --- a/src/mongo/db/concurrency/lock_state.cpp +++ b/src/mongo/db/concurrency/lock_state.cpp @@ -32,7 +32,7 @@ #include "mongo/db/concurrency/lock_state.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/namespace_string.h" #include "mongo/platform/compiler.h" #include "mongo/util/concurrency/synchronization.h" diff --git a/src/mongo/db/curop.cpp b/src/mongo/db/curop.cpp index 7379aa6bd7a..439e0c20921 100644 --- a/src/mongo/db/curop.cpp +++ b/src/mongo/db/curop.cpp @@ -36,7 +36,7 @@ #include "mongo/db/client.h" #include "mongo/db/commands/server_status_metric.h" #include "mongo/db/catalog/database.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/json.h" #include "mongo/db/stats/top.h" #include "mongo/util/fail_point_service.h" diff --git a/src/mongo/db/db.cpp b/src/mongo/db/db.cpp index 8f4480d5ef0..e490160ea2c 100644 --- a/src/mongo/db/db.cpp +++ b/src/mongo/db/db.cpp @@ -62,8 +62,8 @@ #include "mongo/db/dbdirectclient.h" #include "mongo/db/dbmessage.h" #include "mongo/db/dbwebserver.h" -#include "mongo/db/global_environment_d.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context_d.h" +#include "mongo/db/service_context.h" #include "mongo/db/index_names.h" #include "mongo/db/index_rebuilder.h" #include "mongo/db/initialize_server_global_state.h" @@ -347,7 +347,7 @@ namespace mongo { vector<string> dbNames; - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); storageEngine->listDatabases( &dbNames ); // Repair all databases first, so that we do not try to open them if they are in bad shape @@ -479,7 +479,7 @@ namespace mongo { } // Warn if field name matches non-active registered storage engine. - if (getGlobalEnvironment()->isRegisteredStorageEngine(e.fieldName())) { + if (getGlobalServiceContext()->isRegisteredStorageEngine(e.fieldName())) { warning() << "Detected configuration for non-active storage engine " << e.fieldName() << " when current storage engine is " @@ -488,8 +488,8 @@ namespace mongo { } } - getGlobalEnvironment()->setGlobalStorageEngine(storageGlobalParams.engine); - getGlobalEnvironment()->setOpObserver(stdx::make_unique<OpObserver>()); + getGlobalServiceContext()->setGlobalStorageEngine(storageGlobalParams.engine); + getGlobalServiceContext()->setOpObserver(stdx::make_unique<OpObserver>()); const repl::ReplSettings& replSettings = repl::getGlobalReplicationCoordinator()->getSettings(); @@ -818,7 +818,7 @@ MONGO_INITIALIZER_WITH_PREREQUISITES(CreateReplicationManager, ("SetGlobalEnviro static_cast<int64_t>(curTimeMillis64())); repl::setGlobalReplicationCoordinator(replCoord); repl::setOplogCollectionName(); - getGlobalEnvironment()->registerKillOpListener(replCoord); + getGlobalServiceContext()->registerKillOpListener(replCoord); return Status::OK(); } diff --git a/src/mongo/db/dbcommands.cpp b/src/mongo/db/dbcommands.cpp index b0e67cd1fc3..f0da12eeec7 100644 --- a/src/mongo/db/dbcommands.cpp +++ b/src/mongo/db/dbcommands.cpp @@ -59,8 +59,8 @@ #include "mongo/db/db_raii.h" #include "mongo/db/dbdirectclient.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_d.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context_d.h" +#include "mongo/db/service_context.h" #include "mongo/db/index_builder.h" #include "mongo/db/instance.h" #include "mongo/db/introspect.h" @@ -219,7 +219,7 @@ namespace mongo { WriteUnitOfWork wunit(txn); if (!fromRepl) { - getGlobalEnvironment()->getOpObserver()->onDropDatabase(txn, dbname + ".$cmd"); + getGlobalServiceContext()->getOpObserver()->onDropDatabase(txn, dbname + ".$cmd"); } wunit.commit(); @@ -299,7 +299,7 @@ namespace mongo { e = cmdObj.getField( "backupOriginalFiles" ); bool backupOriginalFiles = e.isBoolean() && e.boolean(); - StorageEngine* engine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* engine = getGlobalServiceContext()->getGlobalStorageEngine(); Status status = repairDatabase(txn, engine, dbname, preserveClonedFilesOnFailure, backupOriginalFiles ); @@ -529,7 +529,7 @@ namespace mongo { } if ( !fromRepl ) { - getGlobalEnvironment()->getOpObserver()->onDropCollection( + getGlobalServiceContext()->getOpObserver()->onDropCollection( txn, NamespaceString(nsToDrop)); } @@ -1173,7 +1173,7 @@ namespace mongo { } if (!fromRepl) { - getGlobalEnvironment()->getOpObserver()->onCollMod(txn, + getGlobalServiceContext()->getOpObserver()->onCollMod(txn, (dbname + ".$cmd").c_str(), jsobj); } diff --git a/src/mongo/db/dbhelpers.cpp b/src/mongo/db/dbhelpers.cpp index 74737b38d28..6833aa33dc9 100644 --- a/src/mongo/db/dbhelpers.cpp +++ b/src/mongo/db/dbhelpers.cpp @@ -43,7 +43,7 @@ #include "mongo/db/db.h" #include "mongo/db/db_raii.h" #include "mongo/db/exec/working_set_common.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/index/btree_access_method.h" #include "mongo/db/json.h" #include "mongo/db/keypattern.h" @@ -449,7 +449,7 @@ namespace mongo { BSONObj deletedId; collection->deleteDocument( txn, rloc, false, false, &deletedId ); // The above throws on failure, and so is not logged - getGlobalEnvironment()->getOpObserver()->onDelete(txn, ns, deletedId, fromMigrate); + getGlobalServiceContext()->getOpObserver()->onDelete(txn, ns, deletedId, fromMigrate); wuow.commit(); numDeleted++; } diff --git a/src/mongo/db/dbwebserver.cpp b/src/mongo/db/dbwebserver.cpp index 6c71a4f8cd5..a1de920ba2b 100644 --- a/src/mongo/db/dbwebserver.cpp +++ b/src/mongo/db/dbwebserver.cpp @@ -48,7 +48,7 @@ #include "mongo/db/background.h" #include "mongo/db/commands.h" #include "mongo/db/db.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/instance.h" #include "mongo/db/operation_context.h" #include "mongo/db/stats/snapshots.h" @@ -297,7 +297,7 @@ namespace { vector<string>& headers, const SockAddr &from) { - boost::scoped_ptr<OperationContext> txn(getGlobalEnvironment()->newOpCtx()); + boost::scoped_ptr<OperationContext> txn(getGlobalServiceContext()->newOpCtx()); if (url.size() > 1) { diff --git a/src/mongo/db/exec/delete.cpp b/src/mongo/db/exec/delete.cpp index a6d8a967704..b6bf7b03361 100644 --- a/src/mongo/db/exec/delete.cpp +++ b/src/mongo/db/exec/delete.cpp @@ -36,7 +36,7 @@ #include "mongo/db/concurrency/write_conflict_exception.h" #include "mongo/db/exec/scoped_timer.h" #include "mongo/db/exec/working_set_common.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/op_observer.h" #include "mongo/db/query/canonical_query.h" #include "mongo/db/repl/replication_coordinator_global.h" @@ -164,7 +164,7 @@ namespace mongo { << ", not logging."; } else { - getGlobalEnvironment()->getOpObserver()->onDelete( + getGlobalServiceContext()->getOpObserver()->onDelete( _txn, _collection->ns().ns(), deletedDoc, diff --git a/src/mongo/db/exec/update.cpp b/src/mongo/db/exec/update.cpp index 0da9981261f..d9f8e291662 100644 --- a/src/mongo/db/exec/update.cpp +++ b/src/mongo/db/exec/update.cpp @@ -36,7 +36,7 @@ #include "mongo/db/concurrency/write_conflict_exception.h" #include "mongo/db/exec/scoped_timer.h" #include "mongo/db/exec/working_set_common.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/op_observer.h" #include "mongo/db/ops/update_lifecycle.h" #include "mongo/db/query/explain.h" @@ -590,7 +590,7 @@ namespace mongo { // Call logOp if requested, and we're not an explain. if (request->shouldCallLogOp() && !logObj.isEmpty() && !request->isExplain()) { BSONObj idQuery = driver->makeOplogEntryQuery(newObj, request->isMulti()); - getGlobalEnvironment()->getOpObserver()->onUpdate( + getGlobalServiceContext()->getOpObserver()->onUpdate( _txn, request->getNamespaceString().ns().c_str(), logObj, @@ -742,7 +742,7 @@ namespace mongo { !request->isGod()/*enforceQuota*/); uassertStatusOK(newLoc.getStatus()); if (request->shouldCallLogOp()) { - getGlobalEnvironment()->getOpObserver()->onInsert(_txn, + getGlobalServiceContext()->getOpObserver()->onInsert(_txn, request->getNamespaceString().ns(), newObj, request->isFromMigration()); diff --git a/src/mongo/db/exec/working_set_common.cpp b/src/mongo/db/exec/working_set_common.cpp index b78bfaee632..16f1b25bc95 100644 --- a/src/mongo/db/exec/working_set_common.cpp +++ b/src/mongo/db/exec/working_set_common.cpp @@ -31,9 +31,9 @@ #include "mongo/db/exec/working_set_common.h" #include "mongo/db/catalog/collection.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/exec/working_set.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/index/index_access_method.h" #include "mongo/db/query/canonical_query.h" diff --git a/src/mongo/db/index_rebuilder.cpp b/src/mongo/db/index_rebuilder.cpp index d8d7ab5dfa5..b73d76acd3e 100644 --- a/src/mongo/db/index_rebuilder.cpp +++ b/src/mongo/db/index_rebuilder.cpp @@ -43,7 +43,7 @@ #include "mongo/db/catalog/index_create.h" #include "mongo/db/client.h" #include "mongo/db/db_raii.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/instance.h" #include "mongo/db/operation_context_impl.h" #include "mongo/db/storage/storage_engine.h" @@ -154,7 +154,7 @@ namespace { std::vector<std::string> dbNames; - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); storageEngine->listDatabases( &dbNames ); try { diff --git a/src/mongo/db/instance.cpp b/src/mongo/db/instance.cpp index a60b2714dd1..2ab4f1e58a3 100644 --- a/src/mongo/db/instance.cpp +++ b/src/mongo/db/instance.cpp @@ -58,7 +58,7 @@ #include "mongo/db/dbmessage.h" #include "mongo/db/exec/delete.h" #include "mongo/db/exec/update.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/global_optime.h" #include "mongo/db/instance.h" #include "mongo/db/introspect.h" @@ -174,7 +174,7 @@ namespace mongo { else { log() << "going to kill op: " << e << endl; obj = fromjson("{\"info\":\"attempting to kill op\"}"); - getGlobalEnvironment()->killOperation( (unsigned) e.number() ); + getGlobalServiceContext()->killOperation( (unsigned) e.number() ); } } replyToQuery(0, m, dbresponse, obj); @@ -978,7 +978,7 @@ namespace { if ( !collection ) { collection = ctx.db()->createCollection( txn, ns ); verify( collection ); - getGlobalEnvironment()->getOpObserver()->onCreateCollection( + getGlobalServiceContext()->getOpObserver()->onCreateCollection( txn, NamespaceString(ns), CollectionOptions()); @@ -986,7 +986,7 @@ namespace { StatusWith<RecordId> status = collection->insertDocument( txn, js, true ); uassertStatusOK( status.getStatus() ); - getGlobalEnvironment()->getOpObserver()->onInsert(txn, std::string(ns), js); + getGlobalServiceContext()->getOpObserver()->onInsert(txn, std::string(ns), js); wunit.commit(); break; } @@ -1201,7 +1201,7 @@ namespace { log(LogComponent::kNetwork) << "shutdown: going to close sockets..." << endl; boost::thread close_socket_thread( stdx::bind(MessagingPort::closeAllSockets, 0) ); - getGlobalEnvironment()->shutdownGlobalStorageEngineCleanly(); + getGlobalServiceContext()->shutdownGlobalStorageEngineCleanly(); } // shutdownLock @@ -1225,13 +1225,13 @@ namespace { boost::lock_guard<boost::mutex> lockguard(shutdownLock); // Global storage engine may not be started in all cases before we exit - if (getGlobalEnvironment()->getGlobalStorageEngine() == NULL) { + if (getGlobalServiceContext()->getGlobalStorageEngine() == NULL) { dbexit(code); // returns only under a windows service invariant(code == EXIT_WINDOWS_SERVICE_STOP); return; } - getGlobalEnvironment()->setKillAllOperations(); + getGlobalServiceContext()->setKillAllOperations(); repl::getGlobalReplicationCoordinator()->shutdown(); diff --git a/src/mongo/db/op_observer.cpp b/src/mongo/db/op_observer.cpp index 25aa20b35a7..eab851bcc0c 100644 --- a/src/mongo/db/op_observer.cpp +++ b/src/mongo/db/op_observer.cpp @@ -34,7 +34,7 @@ #include "mongo/db/catalog/collection_options.h" #include "mongo/db/commands/dbhash.h" #include "mongo/db/dbdirectclient.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/namespace_string.h" #include "mongo/db/repl/oplog.h" #include "mongo/db/repl/replication_coordinator_global.h" diff --git a/src/mongo/db/operation_context_impl.cpp b/src/mongo/db/operation_context_impl.cpp index 356db253596..47a04b191d5 100644 --- a/src/mongo/db/operation_context_impl.cpp +++ b/src/mongo/db/operation_context_impl.cpp @@ -35,7 +35,7 @@ #include "mongo/db/client.h" #include "mongo/db/concurrency/lock_state.h" #include "mongo/db/curop.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/namespace_string.h" #include "mongo/db/repl/replication_coordinator_global.h" #include "mongo/db/storage/storage_engine.h" @@ -53,7 +53,7 @@ namespace mongo { invariant(_locker); - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); _recovery.reset(storageEngine->newRecoveryUnit()); _client->setOperationContext(this); @@ -161,7 +161,7 @@ namespace mongo { } Status OperationContextImpl::checkForInterruptNoAssert() const { - if (getGlobalEnvironment()->getKillAllOperations()) { + if (getGlobalServiceContext()->getKillAllOperations()) { return Status(ErrorCodes::InterruptedAtShutdown, "interrupted at shutdown"); } diff --git a/src/mongo/db/ops/update.cpp b/src/mongo/db/ops/update.cpp index c2c42aaa0d4..2c828d164c3 100644 --- a/src/mongo/db/ops/update.cpp +++ b/src/mongo/db/ops/update.cpp @@ -41,7 +41,7 @@ #include "mongo/db/clientcursor.h" #include "mongo/db/concurrency/d_concurrency.h" #include "mongo/db/exec/update.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/operation_context_impl.h" #include "mongo/db/op_observer.h" #include "mongo/db/ops/update_driver.h" @@ -92,7 +92,7 @@ namespace mongo { invariant(collection); if (!request.isFromReplication()) { - getGlobalEnvironment()->getOpObserver()->onCreateCollection( + getGlobalServiceContext()->getOpObserver()->onCreateCollection( txn, NamespaceString(nsString), CollectionOptions()); diff --git a/src/mongo/db/query/find.cpp b/src/mongo/db/query/find.cpp index 800ecf6e1f1..9875b0c4a24 100644 --- a/src/mongo/db/query/find.cpp +++ b/src/mongo/db/query/find.cpp @@ -42,7 +42,7 @@ #include "mongo/db/db_raii.h" #include "mongo/db/exec/filter.h" #include "mongo/db/exec/working_set_common.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/keypattern.h" #include "mongo/db/query/explain.h" #include "mongo/db/query/find_constants.h" @@ -352,7 +352,7 @@ namespace mongo { if (!cc->hasRecoveryUnit()) { // Start using a new RecoveryUnit cc->setOwnedRecoveryUnit( - getGlobalEnvironment()->getGlobalStorageEngine()->newRecoveryUnit()); + getGlobalServiceContext()->getGlobalStorageEngine()->newRecoveryUnit()); } // Swap RecoveryUnit(s) between the ClientCursor and OperationContext. @@ -705,7 +705,7 @@ namespace mongo { // getMore requests. The calling OpCtx gets a fresh RecoveryUnit. txn->recoveryUnit()->commitAndRestart(); cc->setOwnedRecoveryUnit(txn->releaseRecoveryUnit()); - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); txn->setRecoveryUnit(storageEngine->newRecoveryUnit()); } diff --git a/src/mongo/db/query/get_executor.cpp b/src/mongo/db/query/get_executor.cpp index 7a17b0ca610..6e3af1c474b 100644 --- a/src/mongo/db/query/get_executor.cpp +++ b/src/mongo/db/query/get_executor.cpp @@ -50,26 +50,26 @@ #include "mongo/db/exec/shard_filter.h" #include "mongo/db/exec/subplan.h" #include "mongo/db/exec/update.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/index_names.h" #include "mongo/db/matcher/expression_algo.h" #include "mongo/db/ops/update_lifecycle.h" #include "mongo/db/query/canonical_query.h" #include "mongo/db/query/explain.h" -#include "mongo/db/query/query_settings.h" #include "mongo/db/query/index_bounds_builder.h" #include "mongo/db/query/internal_plans.h" #include "mongo/db/query/plan_cache.h" #include "mongo/db/query/plan_executor.h" -#include "mongo/db/query/planner_analysis.h" #include "mongo/db/query/planner_access.h" +#include "mongo/db/query/planner_analysis.h" #include "mongo/db/query/query_knobs.h" #include "mongo/db/query/query_planner.h" #include "mongo/db/query/query_planner_common.h" +#include "mongo/db/query/query_settings.h" #include "mongo/db/query/stage_builder.h" #include "mongo/db/repl/replication_coordinator_global.h" -#include "mongo/db/index_names.h" #include "mongo/db/server_options.h" #include "mongo/db/server_parameters.h" +#include "mongo/db/service_context.h" #include "mongo/db/storage/oplog_hack.h" #include "mongo/s/d_state.h" #include "mongo/scripting/engine.h" diff --git a/src/mongo/db/query/plan_executor.cpp b/src/mongo/db/query/plan_executor.cpp index 4e62046da81..0cbd507b780 100644 --- a/src/mongo/db/query/plan_executor.cpp +++ b/src/mongo/db/query/plan_executor.cpp @@ -41,7 +41,7 @@ #include "mongo/db/exec/subplan.h" #include "mongo/db/exec/working_set.h" #include "mongo/db/exec/working_set_common.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/query/plan_yield_policy.h" #include "mongo/db/storage/record_fetcher.h" diff --git a/src/mongo/db/range_deleter.cpp b/src/mongo/db/range_deleter.cpp index 8d14aef3a98..e754fb9fb02 100644 --- a/src/mongo/db/range_deleter.cpp +++ b/src/mongo/db/range_deleter.cpp @@ -35,7 +35,7 @@ #include <boost/date_time/posix_time/posix_time_duration.hpp> #include <memory> -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/repl/replication_coordinator_global.h" #include "mongo/db/write_concern_options.h" #include "mongo/util/concurrency/synchronization.h" @@ -445,7 +445,7 @@ namespace { while (!inShutdown() && !stopRequested()) { string errMsg; - boost::scoped_ptr<OperationContext> txn(getGlobalEnvironment()->newOpCtx()); + boost::scoped_ptr<OperationContext> txn(getGlobalServiceContext()->newOpCtx()); RangeDeleteEntry* nextTask = NULL; diff --git a/src/mongo/db/range_deleter.h b/src/mongo/db/range_deleter.h index 3cb478209c0..a1a9bb97a2c 100644 --- a/src/mongo/db/range_deleter.h +++ b/src/mongo/db/range_deleter.h @@ -71,7 +71,7 @@ namespace mongo { * RangeDeleter* deleter = new RangeDeleter(new ...); * deleter->startWorkers(); * ... - * getGlobalEnvironment()->killAllOperations(); // stop all deletes + * getGlobalServiceContext()->killAllOperations(); // stop all deletes * deleter->stopWorkers(); * delete deleter; */ diff --git a/src/mongo/db/range_deleter_mock_env.cpp b/src/mongo/db/range_deleter_mock_env.cpp index 7bff0c9dcc8..97786c83ee7 100644 --- a/src/mongo/db/range_deleter_mock_env.cpp +++ b/src/mongo/db/range_deleter_mock_env.cpp @@ -28,8 +28,9 @@ #include "mongo/db/range_deleter_mock_env.h" -#include "mongo/db/global_environment_experiment.h" -#include "mongo/db/global_environment_noop.h" +#include "mongo/db/service_context.h" +#include "mongo/db/service_context_noop.h" +#include "mongo/stdx/memory.h" namespace mongo { @@ -56,7 +57,7 @@ namespace mongo { _pausedCount(0), _getCursorsCallCount(0) { - setGlobalEnvironment(new GlobalEnvironmentNoop()); + setGlobalServiceContext(stdx::make_unique<ServiceContextNoop>()); } void RangeDeleterMockEnv::addCursorId(StringData ns, CursorId id) { diff --git a/src/mongo/db/repl/SConscript b/src/mongo/db/repl/SConscript index f8b89ef3bba..674cc75e8bc 100644 --- a/src/mongo/db/repl/SConscript +++ b/src/mongo/db/repl/SConscript @@ -84,13 +84,14 @@ env.Library('repl_coordinator_impl', 'replication_coordinator_impl_heartbeat.cpp', 'replica_set_config_checks.cpp', ], - LIBDEPS=['$BUILD_DIR/mongo/db/common', + LIBDEPS=[ + '$BUILD_DIR/mongo/db/common', '$BUILD_DIR/mongo/db/index/index_descriptor', '$BUILD_DIR/mongo/fail_point', '$BUILD_DIR/mongo/foundation', - '$BUILD_DIR/mongo/global_environment_experiment', '$BUILD_DIR/mongo/global_optime', '$BUILD_DIR/mongo/server_options_core', + '$BUILD_DIR/mongo/service_context', 'repl_coordinator_interface', 'replica_set_messages', 'replication_executor', diff --git a/src/mongo/db/repl/master_slave.cpp b/src/mongo/db/repl/master_slave.cpp index a8397987999..3c7c14d0ee8 100644 --- a/src/mongo/db/repl/master_slave.cpp +++ b/src/mongo/db/repl/master_slave.cpp @@ -56,7 +56,7 @@ #include "mongo/db/db_raii.h" #include "mongo/db/dbdirectclient.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/op_observer.h" #include "mongo/db/operation_context_impl.h" #include "mongo/db/ops/update.h" @@ -1284,7 +1284,7 @@ namespace repl { try { WriteUnitOfWork wuow(&txn); - getGlobalEnvironment()->getOpObserver()->onOpMessage(&txn, BSONObj()); + getGlobalServiceContext()->getOpObserver()->onOpMessage(&txn, BSONObj()); wuow.commit(); } catch (...) { diff --git a/src/mongo/db/repl/oplog.cpp b/src/mongo/db/repl/oplog.cpp index b1a6c783bce..8f3bbe52de5 100644 --- a/src/mongo/db/repl/oplog.cpp +++ b/src/mongo/db/repl/oplog.cpp @@ -51,7 +51,7 @@ #include "mongo/db/db_raii.h" #include "mongo/db/dbdirectclient.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/global_optime.h" #include "mongo/db/index_builder.h" #include "mongo/db/namespace_string.h" @@ -415,11 +415,11 @@ namespace { WriteUnitOfWork uow( txn ); invariant(ctx.db()->createCollection(txn, _oplogCollectionName, options)); if( !rs ) - getGlobalEnvironment()->getOpObserver()->onOpMessage(txn, BSONObj()); + getGlobalServiceContext()->getOpObserver()->onOpMessage(txn, BSONObj()); uow.commit(); /* sync here so we don't get any surprising lag later when we try to sync */ - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); storageEngine->flushAllFiles(true); log() << "******" << endl; } diff --git a/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp b/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp index a1b163b529b..824aac77634 100644 --- a/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp +++ b/src/mongo/db/repl/replication_coordinator_external_state_impl.cpp @@ -43,7 +43,7 @@ #include "mongo/db/client.h" #include "mongo/db/concurrency/d_concurrency.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/jsobj.h" #include "mongo/db/operation_context_impl.h" #include "mongo/db/op_observer.h" @@ -117,7 +117,7 @@ namespace { Lock::GlobalWrite globalWrite(txn->lockState()); WriteUnitOfWork wuow(txn); - getGlobalEnvironment()->getOpObserver()->onOpMessage(txn, BSON("msg" << "initiating set")); + getGlobalServiceContext()->getOpObserver()->onOpMessage(txn, BSON("msg" << "initiating set")); wuow.commit(); } @@ -237,7 +237,7 @@ namespace { } void ReplicationCoordinatorExternalStateImpl::killAllUserOperations(OperationContext* txn) { - GlobalEnvironmentExperiment* environment = getGlobalEnvironment(); + ServiceContext* environment = getGlobalServiceContext(); environment->killAllUserOperations(txn); } @@ -257,7 +257,7 @@ namespace { void ReplicationCoordinatorExternalStateImpl::dropAllTempCollections(OperationContext* txn) { std::vector<std::string> dbNames; - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); storageEngine->listDatabases(&dbNames); for (std::vector<std::string>::iterator it = dbNames.begin(); it != dbNames.end(); ++it) { diff --git a/src/mongo/db/repl/replication_coordinator_impl.h b/src/mongo/db/repl/replication_coordinator_impl.h index 210d4224012..a66043ac23e 100644 --- a/src/mongo/db/repl/replication_coordinator_impl.h +++ b/src/mongo/db/repl/replication_coordinator_impl.h @@ -36,7 +36,7 @@ #include "mongo/base/status.h" #include "mongo/bson/optime.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/repl/member_state.h" #include "mongo/db/repl/replica_set_config.h" #include "mongo/db/repl/replication_coordinator.h" diff --git a/src/mongo/db/repl/replset_commands.cpp b/src/mongo/db/repl/replset_commands.cpp index 9514c25218a..a86ee0e1379 100644 --- a/src/mongo/db/repl/replset_commands.cpp +++ b/src/mongo/db/repl/replset_commands.cpp @@ -39,7 +39,7 @@ #include "mongo/db/auth/authorization_session.h" #include "mongo/db/commands.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/op_observer.h" #include "mongo/db/repl/initial_sync.h" #include "mongo/db/repl/oplog.h" @@ -401,7 +401,7 @@ namespace { WriteUnitOfWork wuow(txn); if (status.isOK() && !parsedArgs.force) { - getGlobalEnvironment()->getOpObserver()->onOpMessage( + getGlobalServiceContext()->getOpObserver()->onOpMessage( txn, BSON("msg" << "Reconfig set" << "version" << parsedArgs.newConfigObj["version"])); @@ -634,7 +634,7 @@ namespace { */ bool replHasDatabases(OperationContext* txn) { std::vector<string> names; - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); storageEngine->listDatabases(&names); if( names.size() >= 2 ) return true; diff --git a/src/mongo/db/repl/rs_initialsync.cpp b/src/mongo/db/repl/rs_initialsync.cpp index cb4ea34f966..be6525bd850 100644 --- a/src/mongo/db/repl/rs_initialsync.cpp +++ b/src/mongo/db/repl/rs_initialsync.cpp @@ -41,7 +41,7 @@ #include "mongo/db/cloner.h" #include "mongo/db/db_raii.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/op_observer.h" #include "mongo/db/operation_context_impl.h" #include "mongo/db/operation_context_impl.h" diff --git a/src/mongo/db/repl/sync_tail.cpp b/src/mongo/db/repl/sync_tail.cpp index 5ea3e2e8c25..2a3e299a62c 100644 --- a/src/mongo/db/repl/sync_tail.cpp +++ b/src/mongo/db/repl/sync_tail.cpp @@ -46,7 +46,7 @@ #include "mongo/db/concurrency/write_conflict_exception.h" #include "mongo/db/curop.h" #include "mongo/db/db_raii.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/operation_context_impl.h" #include "mongo/db/prefetch.h" #include "mongo/db/repl/bgsync.h" @@ -267,7 +267,7 @@ namespace repl { // Doles out all the work to the writer pool threads and waits for them to complete OpTime SyncTail::multiApply(OperationContext* txn, std::deque<BSONObj>& ops) { - if (getGlobalEnvironment()->getGlobalStorageEngine()->isMmapV1()) { + if (getGlobalServiceContext()->getGlobalStorageEngine()->isMmapV1()) { // Use a ThreadPool to prefetch all the operations in a batch. prefetchOps(ops); } @@ -338,7 +338,7 @@ namespace repl { *mustAwaitCommit = true; } - if (getGlobalEnvironment()->getGlobalStorageEngine()->supportsDocLocking() && + if (getGlobalServiceContext()->getGlobalStorageEngine()->supportsDocLocking() && isCrudOpType(opType)) { BSONElement id; switch (opType[0]) { diff --git a/src/mongo/db/global_environment_experiment.cpp b/src/mongo/db/service_context.cpp index 8981a4104a2..64e24d33a27 100644 --- a/src/mongo/db/global_environment_experiment.cpp +++ b/src/mongo/db/service_context.cpp @@ -28,7 +28,7 @@ #include "mongo/platform/basic.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/bson/bsonobj.h" #include "mongo/db/operation_context.h" @@ -39,25 +39,23 @@ namespace mongo { namespace { - GlobalEnvironmentExperiment* globalEnvironmentExperiment = NULL; + ServiceContext* globalServiceContext = NULL; } // namespace - bool hasGlobalEnvironment() { return globalEnvironmentExperiment; } + bool hasGlobalServiceContext() { return globalServiceContext; } - GlobalEnvironmentExperiment* getGlobalEnvironment() { - fassert(17508, globalEnvironmentExperiment); - return globalEnvironmentExperiment; + ServiceContext* getGlobalServiceContext() { + fassert(17508, globalServiceContext); + return globalServiceContext; } - void setGlobalEnvironment(GlobalEnvironmentExperiment* newGlobalEnvironment) { - fassert(17509, newGlobalEnvironment); + void setGlobalServiceContext(std::unique_ptr<ServiceContext>&& serviceContext) { + fassert(17509, serviceContext.get()); - if (NULL != globalEnvironmentExperiment) { - delete globalEnvironmentExperiment; - } + delete globalServiceContext; - globalEnvironmentExperiment = newGlobalEnvironment; + globalServiceContext = serviceContext.release(); } bool _supportsDocLocking = false; @@ -67,8 +65,7 @@ namespace mongo { } bool isMMAPV1() { - invariant(hasGlobalEnvironment()); - StorageEngine* globalStorageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* globalStorageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); invariant(globalStorageEngine); return globalStorageEngine->isMmapV1(); @@ -87,7 +84,7 @@ namespace mongo { << "' has to be an embedded document."); } - boost::scoped_ptr<StorageFactoriesIterator> sfi(getGlobalEnvironment()-> + boost::scoped_ptr<StorageFactoriesIterator> sfi(getGlobalServiceContext()-> makeStorageFactoriesIterator()); invariant(sfi); bool found = false; diff --git a/src/mongo/db/global_environment_experiment.h b/src/mongo/db/service_context.h index 3c72a235aff..429327dc718 100644 --- a/src/mongo/db/global_environment_experiment.h +++ b/src/mongo/db/service_context.h @@ -67,10 +67,10 @@ namespace mongo { StorageFactoriesIterator() { } }; - class GlobalEnvironmentExperiment { - MONGO_DISALLOW_COPYING(GlobalEnvironmentExperiment); + class ServiceContext { + MONGO_DISALLOW_COPYING(ServiceContext); public: - virtual ~GlobalEnvironmentExperiment() { } + virtual ~ServiceContext() { } // // Storage @@ -149,7 +149,7 @@ namespace mongo { * Registers a listener to be notified each time an op is killed. * * listener does not become owned by the environment. As there is currently no way to - * unregister, the listener object must outlive this GlobalEnvironmentExperiment object. + * unregister, the listener object must outlive this ServiceContext object. */ virtual void registerKillOpListener(KillOpListenerInterface* listener) = 0; @@ -173,30 +173,30 @@ namespace mongo { virtual OpObserver* getOpObserver() = 0; protected: - GlobalEnvironmentExperiment() { } + ServiceContext() { } }; /** - * Returns true if there is a globalEnvironment. + * Returns true if there is a global ServiceContext. */ - bool hasGlobalEnvironment(); + bool hasGlobalServiceContext(); /** - * Returns the singleton GlobalEnvironmentExperiment for this server process. + * Returns the singleton ServiceContext for this server process. * - * Fatal if there is currently no globalEnvironment. + * Fatal if there is currently no global ServiceContext. * * Caller does not own pointer. */ - GlobalEnvironmentExperiment* getGlobalEnvironment(); + ServiceContext* getGlobalServiceContext(); /** - * Sets the GlobalEnvironmentExperiment. If 'globalEnvironment' is NULL, un-sets and deletes - * the current GlobalEnvironmentExperiment. + * Sets the global ServiceContext. If 'serviceContext' is NULL, un-sets and deletes + * the current global ServiceContext. * - * Takes ownership of 'globalEnvironment'. + * Takes ownership of 'serviceContext'. */ - void setGlobalEnvironment(GlobalEnvironmentExperiment* globalEnvironment); + void setGlobalServiceContext(std::unique_ptr<ServiceContext>&& serviceContext); /** * Shortcut for querying the storage engine about whether it supports document-level locking. diff --git a/src/mongo/db/global_environment_d.cpp b/src/mongo/db/service_context_d.cpp index 3cb18d9a3fe..4c3d30032df 100644 --- a/src/mongo/db/global_environment_d.cpp +++ b/src/mongo/db/service_context_d.cpp @@ -28,7 +28,7 @@ #define MONGO_LOG_DEFAULT_COMPONENT ::mongo::logger::LogComponent::kDefault -#include "mongo/db/global_environment_d.h" +#include "mongo/db/service_context_d.h" #include "mongo/base/init.h" #include "mongo/base/initializer.h" @@ -41,6 +41,7 @@ #include "mongo/db/storage/storage_engine_metadata.h" #include "mongo/db/storage_options.h" #include "mongo/scripting/engine.h" +#include "mongo/stdx/memory.h" #include "mongo/util/log.h" #include "mongo/util/mongoutils/str.h" #include "mongo/util/scopeguard.h" @@ -48,19 +49,19 @@ namespace mongo { MONGO_INITIALIZER(SetGlobalEnvironment)(InitializerContext* context) { - setGlobalEnvironment(new GlobalEnvironmentMongoD()); + setGlobalServiceContext(stdx::make_unique<ServiceContextMongoD>()); return Status::OK(); } - GlobalEnvironmentMongoD::GlobalEnvironmentMongoD() + ServiceContextMongoD::ServiceContextMongoD() : _globalKill(false), _storageEngine(NULL) { } - GlobalEnvironmentMongoD::~GlobalEnvironmentMongoD() { + ServiceContextMongoD::~ServiceContextMongoD() { } - StorageEngine* GlobalEnvironmentMongoD::getGlobalStorageEngine() { + StorageEngine* ServiceContextMongoD::getGlobalStorageEngine() { // We don't check that globalStorageEngine is not-NULL here intentionally. We can encounter // an error before it's initialized and proceed to exitCleanly which is equipped to deal // with a NULL storage engine. @@ -69,7 +70,7 @@ namespace mongo { extern bool _supportsDocLocking; - void GlobalEnvironmentMongoD::setGlobalStorageEngine(const std::string& name) { + void ServiceContextMongoD::setGlobalStorageEngine(const std::string& name) { // This should be set once. invariant(!_storageEngine); @@ -123,15 +124,15 @@ namespace mongo { _supportsDocLocking = _storageEngine->supportsDocLocking(); } - void GlobalEnvironmentMongoD::shutdownGlobalStorageEngineCleanly() { + void ServiceContextMongoD::shutdownGlobalStorageEngineCleanly() { invariant(_storageEngine); invariant(_lockFile.get()); _storageEngine->cleanShutdown(); _lockFile->clearPidAndUnlock(); } - void GlobalEnvironmentMongoD::registerStorageEngine(const std::string& name, - const StorageEngine::Factory* factory) { + void ServiceContextMongoD::registerStorageEngine(const std::string& name, + const StorageEngine::Factory* factory) { // No double-registering. invariant(0 == _storageFactories.count(name)); @@ -144,18 +145,18 @@ namespace mongo { _storageFactories[name] = factory; } - bool GlobalEnvironmentMongoD::isRegisteredStorageEngine(const std::string& name) { + bool ServiceContextMongoD::isRegisteredStorageEngine(const std::string& name) { return _storageFactories.count(name); } - StorageFactoriesIterator* GlobalEnvironmentMongoD::makeStorageFactoriesIterator() { + StorageFactoriesIterator* ServiceContextMongoD::makeStorageFactoriesIterator() { return new StorageFactoriesIteratorMongoD(_storageFactories.begin(), _storageFactories.end()); } StorageFactoriesIteratorMongoD::StorageFactoriesIteratorMongoD( - const GlobalEnvironmentMongoD::FactoryMap::const_iterator& begin, - const GlobalEnvironmentMongoD::FactoryMap::const_iterator& end) : + const ServiceContextMongoD::FactoryMap::const_iterator& begin, + const ServiceContextMongoD::FactoryMap::const_iterator& end) : _curr(begin), _end(end) { } @@ -167,7 +168,7 @@ namespace mongo { return _curr++->second; } - void GlobalEnvironmentMongoD::setKillAllOperations() { + void ServiceContextMongoD::setKillAllOperations() { boost::lock_guard<boost::mutex> clientLock(Client::clientsMutex); _globalKill = true; for (size_t i = 0; i < _killOpListeners.size(); i++) { @@ -180,11 +181,11 @@ namespace mongo { } } - bool GlobalEnvironmentMongoD::getKillAllOperations() { + bool ServiceContextMongoD::getKillAllOperations() { return _globalKill; } - bool GlobalEnvironmentMongoD::_killOperationsAssociatedWithClientAndOpId_inlock( + bool ServiceContextMongoD::_killOperationsAssociatedWithClientAndOpId_inlock( Client* client, unsigned int opId) { for( CurOp *k = client->curop(); k; k = k->parent() ) { if ( k->opNum() != opId ) @@ -208,7 +209,7 @@ namespace mongo { return false; } - bool GlobalEnvironmentMongoD::killOperation(unsigned int opId) { + bool ServiceContextMongoD::killOperation(unsigned int opId) { boost::lock_guard<boost::mutex> clientLock(Client::clientsMutex); for(ClientSet::const_iterator j = Client::clients.begin(); @@ -225,7 +226,7 @@ namespace mongo { return false; } - void GlobalEnvironmentMongoD::killAllUserOperations(const OperationContext* txn) { + void ServiceContextMongoD::killAllUserOperations(const OperationContext* txn) { boost::lock_guard<boost::mutex> scopedLock(Client::clientsMutex); for (ClientSet::const_iterator i = Client::clients.begin(); i != Client::clients.end(); i++) { @@ -250,24 +251,24 @@ namespace mongo { } } - void GlobalEnvironmentMongoD::unsetKillAllOperations() { + void ServiceContextMongoD::unsetKillAllOperations() { _globalKill = false; } - void GlobalEnvironmentMongoD::registerKillOpListener(KillOpListenerInterface* listener) { + void ServiceContextMongoD::registerKillOpListener(KillOpListenerInterface* listener) { boost::lock_guard<boost::mutex> clientLock(Client::clientsMutex); _killOpListeners.push_back(listener); } - OperationContext* GlobalEnvironmentMongoD::newOpCtx() { + OperationContext* ServiceContextMongoD::newOpCtx() { return new OperationContextImpl(); } - void GlobalEnvironmentMongoD::setOpObserver(std::unique_ptr<OpObserver> opObserver) { + void ServiceContextMongoD::setOpObserver(std::unique_ptr<OpObserver> opObserver) { _opObserver.reset(opObserver.get()); } - OpObserver* GlobalEnvironmentMongoD::getOpObserver() { + OpObserver* ServiceContextMongoD::getOpObserver() { return _opObserver.get(); } diff --git a/src/mongo/db/global_environment_d.h b/src/mongo/db/service_context_d.h index 6c94098b03d..cae5841ee7a 100644 --- a/src/mongo/db/global_environment_d.h +++ b/src/mongo/db/service_context_d.h @@ -31,7 +31,7 @@ #include <boost/scoped_ptr.hpp> #include <vector> -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/platform/unordered_set.h" #include "mongo/util/concurrency/mutex.h" @@ -40,13 +40,13 @@ namespace mongo { class Client; class StorageEngineLockFile; - class GlobalEnvironmentMongoD : public GlobalEnvironmentExperiment { + class ServiceContextMongoD : public ServiceContext { public: typedef std::map<std::string, const StorageEngine::Factory*> FactoryMap; - GlobalEnvironmentMongoD(); + ServiceContextMongoD(); - ~GlobalEnvironmentMongoD(); + ~ServiceContextMongoD(); StorageEngine* getGlobalStorageEngine(); @@ -103,7 +103,7 @@ namespace mongo { class StorageFactoriesIteratorMongoD : public StorageFactoriesIterator { public: - typedef GlobalEnvironmentMongoD::FactoryMap::const_iterator FactoryMapIterator; + typedef ServiceContextMongoD::FactoryMap::const_iterator FactoryMapIterator; StorageFactoriesIteratorMongoD(const FactoryMapIterator& begin, const FactoryMapIterator& end); diff --git a/src/mongo/db/global_environment_noop.cpp b/src/mongo/db/service_context_noop.cpp index 2170420a00e..8b43c4e1bbf 100644 --- a/src/mongo/db/global_environment_noop.cpp +++ b/src/mongo/db/service_context_noop.cpp @@ -28,34 +28,34 @@ #include "mongo/platform/basic.h" -#include "mongo/db/global_environment_noop.h" +#include "mongo/db/service_context_noop.h" #include "mongo/db/operation_context_noop.h" #include "mongo/db/op_observer.h" namespace mongo { - StorageEngine* GlobalEnvironmentNoop::getGlobalStorageEngine() { + StorageEngine* ServiceContextNoop::getGlobalStorageEngine() { return NULL; } - void GlobalEnvironmentNoop::setGlobalStorageEngine(const std::string& name) { + void ServiceContextNoop::setGlobalStorageEngine(const std::string& name) { } - void GlobalEnvironmentNoop::shutdownGlobalStorageEngineCleanly() { + void ServiceContextNoop::shutdownGlobalStorageEngineCleanly() { } - void GlobalEnvironmentNoop::registerStorageEngine(const std::string& name, - const StorageEngine::Factory* factory) { + void ServiceContextNoop::registerStorageEngine(const std::string& name, + const StorageEngine::Factory* factory) { // Takes ownership of 'factory' and deletes it because we don't need it. delete factory; } - bool GlobalEnvironmentNoop::isRegisteredStorageEngine(const std::string& name) { + bool ServiceContextNoop::isRegisteredStorageEngine(const std::string& name) { return false; } - StorageFactoriesIterator* GlobalEnvironmentNoop::makeStorageFactoriesIterator() { + StorageFactoriesIterator* ServiceContextNoop::makeStorageFactoriesIterator() { class EmptySFI : public StorageFactoriesIterator { public: virtual bool more() const { return false; } @@ -64,31 +64,31 @@ namespace mongo { return new EmptySFI(); } - void GlobalEnvironmentNoop::setKillAllOperations() { } + void ServiceContextNoop::setKillAllOperations() { } - void GlobalEnvironmentNoop::unsetKillAllOperations() { } + void ServiceContextNoop::unsetKillAllOperations() { } - bool GlobalEnvironmentNoop::getKillAllOperations() { + bool ServiceContextNoop::getKillAllOperations() { return false; } - bool GlobalEnvironmentNoop::killOperation(unsigned int opId) { + bool ServiceContextNoop::killOperation(unsigned int opId) { return false; } - void GlobalEnvironmentNoop::killAllUserOperations(const OperationContext* txn) {} + void ServiceContextNoop::killAllUserOperations(const OperationContext* txn) {} - void GlobalEnvironmentNoop::registerKillOpListener(KillOpListenerInterface* listener) { + void ServiceContextNoop::registerKillOpListener(KillOpListenerInterface* listener) { } - OperationContext* GlobalEnvironmentNoop::newOpCtx() { + OperationContext* ServiceContextNoop::newOpCtx() { return new OperationContextNoop(); } - void GlobalEnvironmentNoop::setOpObserver(std::unique_ptr<OpObserver> opObserver) { + void ServiceContextNoop::setOpObserver(std::unique_ptr<OpObserver> opObserver) { } - OpObserver* GlobalEnvironmentNoop::getOpObserver() { + OpObserver* ServiceContextNoop::getOpObserver() { return nullptr; } } // namespace mongo diff --git a/src/mongo/db/global_environment_noop.h b/src/mongo/db/service_context_noop.h index dc946f28b7d..679b683bb74 100644 --- a/src/mongo/db/global_environment_noop.h +++ b/src/mongo/db/service_context_noop.h @@ -26,11 +26,11 @@ * it in the license file. */ -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" namespace mongo { - class GlobalEnvironmentNoop : public GlobalEnvironmentExperiment { + class ServiceContextNoop : public ServiceContext { public: StorageEngine* getGlobalStorageEngine(); diff --git a/src/mongo/db/storage/devnull/devnull_init.cpp b/src/mongo/db/storage/devnull/devnull_init.cpp index 604df977d94..ad22a5ca25e 100644 --- a/src/mongo/db/storage/devnull/devnull_init.cpp +++ b/src/mongo/db/storage/devnull/devnull_init.cpp @@ -30,8 +30,8 @@ */ #include "mongo/base/init.h" -#include "mongo/db/global_environment_d.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context_d.h" +#include "mongo/db/service_context.h" #include "mongo/db/storage/devnull/devnull_kv_engine.h" #include "mongo/db/storage/kv/kv_storage_engine.h" #include "mongo/db/storage_options.h" @@ -67,7 +67,7 @@ namespace mongo { MONGO_INITIALIZER_WITH_PREREQUISITES(DevNullEngineInit, ("SetGlobalEnvironment")) (InitializerContext* context ) { - getGlobalEnvironment()->registerStorageEngine("devnull", new DevNullStorageEngineFactory() ); + getGlobalServiceContext()->registerStorageEngine("devnull", new DevNullStorageEngineFactory() ); return Status::OK(); } diff --git a/src/mongo/db/storage/in_memory/in_memory_init.cpp b/src/mongo/db/storage/in_memory/in_memory_init.cpp index 639c017dee1..bca7d60ef6c 100644 --- a/src/mongo/db/storage/in_memory/in_memory_init.cpp +++ b/src/mongo/db/storage/in_memory/in_memory_init.cpp @@ -30,7 +30,7 @@ */ #include "mongo/base/init.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/storage/in_memory/in_memory_engine.h" #include "mongo/db/storage/kv/kv_storage_engine.h" #include "mongo/db/storage_options.h" @@ -70,7 +70,7 @@ namespace mongo { ("SetGlobalEnvironment")) (InitializerContext* context) { - getGlobalEnvironment()->registerStorageEngine("inMemoryExperiment", new InMemoryFactory()); + getGlobalServiceContext()->registerStorageEngine("inMemoryExperiment", new InMemoryFactory()); return Status::OK(); } diff --git a/src/mongo/db/storage/kv/kv_database_catalog_entry_test.cpp b/src/mongo/db/storage/kv/kv_database_catalog_entry_test.cpp index 2408106144c..9a7eb87f0fb 100644 --- a/src/mongo/db/storage/kv/kv_database_catalog_entry_test.cpp +++ b/src/mongo/db/storage/kv/kv_database_catalog_entry_test.cpp @@ -32,11 +32,12 @@ #include "mongo/base/init.h" #include "mongo/db/catalog/collection_options.h" -#include "mongo/db/global_environment_experiment.h" -#include "mongo/db/global_environment_noop.h" +#include "mongo/db/service_context.h" +#include "mongo/db/service_context_noop.h" #include "mongo/db/operation_context_noop.h" #include "mongo/db/storage/devnull/devnull_kv_engine.h" #include "mongo/db/storage/kv/kv_storage_engine.h" +#include "mongo/stdx/memory.h" #include "mongo/unittest/unittest.h" namespace { @@ -44,7 +45,7 @@ namespace { using namespace mongo; MONGO_INITIALIZER(SetGlobalEnvironment)(InitializerContext* context) { - setGlobalEnvironment(new GlobalEnvironmentNoop()); + setGlobalServiceContext(stdx::make_unique<ServiceContextNoop>()); return Status::OK(); } diff --git a/src/mongo/db/storage/mmap_v1/data_file_sync.cpp b/src/mongo/db/storage/mmap_v1/data_file_sync.cpp index 3ba0dc7dc6f..cf1d1abca88 100644 --- a/src/mongo/db/storage/mmap_v1/data_file_sync.cpp +++ b/src/mongo/db/storage/mmap_v1/data_file_sync.cpp @@ -33,7 +33,7 @@ #include "mongo/db/storage/mmap_v1/data_file_sync.h" #include "mongo/db/commands/server_status_metric.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/instance.h" #include "mongo/db/storage/mmap_v1/mmap_v1_options.h" #include "mongo/db/storage_options.h" @@ -84,7 +84,7 @@ namespace mongo { } Date_t start = jsTime(); - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); int numFiles = storageEngine->flushAllFiles( true ); time_flushing = (int) (jsTime() - start); diff --git a/src/mongo/db/storage/mmap_v1/mmap_v1_extent_manager.cpp b/src/mongo/db/storage/mmap_v1/mmap_v1_extent_manager.cpp index cb481ec9835..17a72099531 100644 --- a/src/mongo/db/storage/mmap_v1/mmap_v1_extent_manager.cpp +++ b/src/mongo/db/storage/mmap_v1/mmap_v1_extent_manager.cpp @@ -37,7 +37,7 @@ #include "mongo/base/counter.h" #include "mongo/db/audit.h" #include "mongo/db/client.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/storage/mmap_v1/dur.h" #include "mongo/db/storage/mmap_v1/data_file.h" #include "mongo/db/storage/mmap_v1/record.h" @@ -114,7 +114,7 @@ namespace mongo { _path(path.toString()), _directoryPerDB(directoryPerDB), _rid(RESOURCE_METADATA, dbname) { - StorageEngine* engine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* engine = getGlobalServiceContext()->getGlobalStorageEngine(); invariant(engine->isMmapV1()); MMAPV1Engine* mmapEngine = static_cast<MMAPV1Engine*>(engine); _recordAccessTracker = &mmapEngine->getRecordAccessTracker(); diff --git a/src/mongo/db/storage/mmap_v1/mmap_v1_init.cpp b/src/mongo/db/storage/mmap_v1/mmap_v1_init.cpp index c16bf35cd1b..29fb1bc8c97 100644 --- a/src/mongo/db/storage/mmap_v1/mmap_v1_init.cpp +++ b/src/mongo/db/storage/mmap_v1/mmap_v1_init.cpp @@ -31,7 +31,7 @@ #include "mongo/base/init.h" #include "mongo/bson/bsonobjbuilder.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/storage/mmap_v1/mmap_v1_engine.h" #include "mongo/db/storage/storage_engine_metadata.h" #include "mongo/db/storage_options.h" @@ -76,7 +76,7 @@ namespace mongo { ("SetGlobalEnvironment")) (InitializerContext* context) { - getGlobalEnvironment()->registerStorageEngine("mmapv1", new MMAPV1Factory()); + getGlobalServiceContext()->registerStorageEngine("mmapv1", new MMAPV1Factory()); return Status::OK(); } diff --git a/src/mongo/db/storage/mmap_v1/mmap_v1_init_test.cpp b/src/mongo/db/storage/mmap_v1/mmap_v1_init_test.cpp index 6d490be951e..2fb752eab8e 100644 --- a/src/mongo/db/storage/mmap_v1/mmap_v1_init_test.cpp +++ b/src/mongo/db/storage/mmap_v1/mmap_v1_init_test.cpp @@ -30,7 +30,7 @@ #include <boost/scoped_ptr.hpp> -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/json.h" #include "mongo/db/storage/storage_engine_metadata.h" #include "mongo/db/storage_options.h" @@ -44,10 +44,10 @@ namespace { class MMAPV1FactoryTest : public mongo::unittest::Test { private: virtual void setUp() { - GlobalEnvironmentExperiment* globalEnv = getGlobalEnvironment(); + ServiceContext* globalEnv = getGlobalServiceContext(); ASSERT_TRUE(globalEnv); - ASSERT_TRUE(getGlobalEnvironment()->isRegisteredStorageEngine("mmapv1")); - boost::scoped_ptr<StorageFactoriesIterator> sfi(getGlobalEnvironment()-> + ASSERT_TRUE(getGlobalServiceContext()->isRegisteredStorageEngine("mmapv1")); + boost::scoped_ptr<StorageFactoriesIterator> sfi(getGlobalServiceContext()-> makeStorageFactoriesIterator()); ASSERT_TRUE(sfi); bool found = false; diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp index 148df9d9696..59391adf8b2 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp @@ -33,8 +33,8 @@ #include "mongo/base/init.h" #include "mongo/db/catalog/collection_options.h" -#include "mongo/db/global_environment_d.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context_d.h" +#include "mongo/db/service_context.h" #include "mongo/db/jsobj.h" #include "mongo/db/storage/kv/kv_storage_engine.h" #include "mongo/db/storage/storage_engine_lock_file.h" @@ -121,7 +121,7 @@ namespace mongo { ("SetGlobalEnvironment")) (InitializerContext* context ) { - getGlobalEnvironment()->registerStorageEngine(kWiredTigerEngineName, + getGlobalServiceContext()->registerStorageEngine(kWiredTigerEngineName, new WiredTigerFactory()); return Status::OK(); diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_init_test.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_init_test.cpp index 358397a5176..767e23d6c37 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_init_test.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_init_test.cpp @@ -30,7 +30,7 @@ #include <boost/scoped_ptr.hpp> -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/json.h" #include "mongo/db/storage/storage_engine_metadata.h" #include "mongo/db/storage/wiredtiger/wiredtiger_global_options.h" @@ -46,10 +46,10 @@ namespace { class WiredTigerFactoryTest : public mongo::unittest::Test { private: virtual void setUp() { - GlobalEnvironmentExperiment* globalEnv = getGlobalEnvironment(); + ServiceContext* globalEnv = getGlobalServiceContext(); ASSERT_TRUE(globalEnv); - ASSERT_TRUE(getGlobalEnvironment()->isRegisteredStorageEngine(kWiredTigerEngineName)); - boost::scoped_ptr<StorageFactoriesIterator> sfi(getGlobalEnvironment()-> + ASSERT_TRUE(getGlobalServiceContext()->isRegisteredStorageEngine(kWiredTigerEngineName)); + boost::scoped_ptr<StorageFactoriesIterator> sfi(getGlobalServiceContext()-> makeStorageFactoriesIterator()); ASSERT_TRUE(sfi); bool found = false; 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 dc9b5fc1e52..a8681ff2b61 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_mongod.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_record_store_mongod.cpp @@ -40,7 +40,7 @@ #include "mongo/db/client.h" #include "mongo/db/concurrency/d_concurrency.h" #include "mongo/db/db_raii.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/namespace_string.h" #include "mongo/db/operation_context_impl.h" #include "mongo/db/storage/wiredtiger/wiredtiger_kv_engine.h" @@ -72,7 +72,7 @@ namespace mongo { * @return Number of documents deleted. */ int64_t _deleteExcessDocuments() { - if (!getGlobalEnvironment()->getGlobalStorageEngine()) { + if (!getGlobalServiceContext()->getGlobalStorageEngine()) { LOG(1) << "no global storage engine yet"; return 0; } diff --git a/src/mongo/db/write_concern.cpp b/src/mongo/db/write_concern.cpp index a19629e96c9..8b1b7334813 100644 --- a/src/mongo/db/write_concern.cpp +++ b/src/mongo/db/write_concern.cpp @@ -33,7 +33,7 @@ #include "mongo/base/counter.h" #include "mongo/bson/util/bson_extract.h" #include "mongo/db/commands/server_status_metric.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/operation_context.h" #include "mongo/db/repl/replication_coordinator_global.h" #include "mongo/db/server_options.h" @@ -104,7 +104,7 @@ namespace mongo { } Status validateWriteConcern( const WriteConcernOptions& writeConcern ) { - const bool isJournalEnabled = getGlobalEnvironment()->getGlobalStorageEngine()->isDurable(); + const bool isJournalEnabled = getGlobalServiceContext()->getGlobalStorageEngine()->isDurable(); if ( writeConcern.syncMode == WriteConcernOptions::JOURNAL && !isJournalEnabled ) { return Status( ErrorCodes::BadValue, @@ -207,7 +207,7 @@ namespace mongo { case WriteConcernOptions::NONE: break; case WriteConcernOptions::FSYNC: { - StorageEngine* storageEngine = getGlobalEnvironment()->getGlobalStorageEngine(); + StorageEngine* storageEngine = getGlobalServiceContext()->getGlobalStorageEngine(); if ( !storageEngine->isDurable() ) { result->fsyncFiles = storageEngine->flushAllFiles( true ); } diff --git a/src/mongo/dbtests/dbtests.cpp b/src/mongo/dbtests/dbtests.cpp index 21d502f340b..52386fb7e83 100644 --- a/src/mongo/dbtests/dbtests.cpp +++ b/src/mongo/dbtests/dbtests.cpp @@ -40,11 +40,12 @@ #include "mongo/db/catalog/index_create.h" #include "mongo/db/commands.h" #include "mongo/db/db_raii.h" -#include "mongo/db/global_environment_d.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context_d.h" +#include "mongo/db/service_context.h" #include "mongo/db/repl/replication_coordinator_global.h" #include "mongo/db/repl/replication_coordinator_mock.h" #include "mongo/dbtests/framework.h" +#include "mongo/stdx/memory.h" #include "mongo/util/quick_exit.h" #include "mongo/util/signal_handlers_synchronous.h" #include "mongo/util/startup_test.h" @@ -104,7 +105,7 @@ namespace dbtests { int dbtestsMain( int argc, char** argv, char** envp ) { static StaticObserver StaticObserver; ::mongo::setupSynchronousSignalHandlers(); - setGlobalEnvironment(new GlobalEnvironmentMongoD()); + setGlobalServiceContext(stdx::make_unique<ServiceContextMongoD>()); repl::ReplSettings replSettings; replSettings.oplogSize = 10 * 1024 * 1024; repl::setGlobalReplicationCoordinator(new repl::ReplicationCoordinatorMock(replSettings)); diff --git a/src/mongo/dbtests/executor_registry.cpp b/src/mongo/dbtests/executor_registry.cpp index d05abef5323..a22187460be 100644 --- a/src/mongo/dbtests/executor_registry.cpp +++ b/src/mongo/dbtests/executor_registry.cpp @@ -38,7 +38,7 @@ #include "mongo/db/dbdirectclient.h" #include "mongo/db/exec/collection_scan.h" #include "mongo/db/exec/plan_stage.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/json.h" #include "mongo/db/matcher/expression_parser.h" #include "mongo/db/operation_context_impl.h" diff --git a/src/mongo/dbtests/framework.cpp b/src/mongo/dbtests/framework.cpp index 7054e70e503..04852b76037 100644 --- a/src/mongo/dbtests/framework.cpp +++ b/src/mongo/dbtests/framework.cpp @@ -41,8 +41,8 @@ #include "mongo/base/status.h" #include "mongo/db/client.h" #include "mongo/db/concurrency/lock_state.h" -#include "mongo/db/global_environment_d.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context_d.h" +#include "mongo/db/service_context.h" #include "mongo/db/ops/update.h" #include "mongo/dbtests/dbtests.h" #include "mongo/dbtests/framework_options.h" @@ -118,7 +118,7 @@ namespace mongo { printOpenSSLVersion(); printSysInfo(); - getGlobalEnvironment()->setGlobalStorageEngine(storageGlobalParams.engine); + getGlobalServiceContext()->setGlobalStorageEngine(storageGlobalParams.engine); TestWatchDog twd; twd.go(); diff --git a/src/mongo/dbtests/indexupdatetests.cpp b/src/mongo/dbtests/indexupdatetests.cpp index cf92968a55a..cf01a43a9b1 100644 --- a/src/mongo/dbtests/indexupdatetests.cpp +++ b/src/mongo/dbtests/indexupdatetests.cpp @@ -36,8 +36,8 @@ #include "mongo/db/db_raii.h" #include "mongo/db/dbdirectclient.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_d.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context_d.h" +#include "mongo/db/service_context.h" #include "mongo/db/index/index_descriptor.h" #include "mongo/db/operation_context_impl.h" #include "mongo/dbtests/dbtests.h" @@ -64,7 +64,7 @@ namespace IndexUpdateTests { } ~IndexBuildBase() { _client.dropCollection( _ns ); - getGlobalEnvironment()->unsetKillAllOperations(); + getGlobalServiceContext()->unsetKillAllOperations(); } Collection* collection() { return _ctx.getCollection(); @@ -485,12 +485,12 @@ namespace IndexUpdateTests { // Initialize curop. _txn.getCurOp()->reset(); // Request an interrupt. - getGlobalEnvironment()->setKillAllOperations(); + getGlobalServiceContext()->setKillAllOperations(); BSONObj indexInfo = BSON( "key" << BSON( "a" << 1 ) << "ns" << _ns << "name" << "a_1" ); // The call is interrupted because mayInterrupt == true. ASSERT_TRUE(buildIndexInterrupted(indexInfo, true)); // only want to interrupt the index build - getGlobalEnvironment()->unsetKillAllOperations(); + getGlobalServiceContext()->unsetKillAllOperations(); // The new index is not listed in the index catalog because the index build failed. ASSERT( !coll->getIndexCatalog()->findIndexByName( &_txn, "a_1" ) ); } @@ -518,12 +518,12 @@ namespace IndexUpdateTests { // Initialize curop. _txn.getCurOp()->reset(); // Request an interrupt. - getGlobalEnvironment()->setKillAllOperations(); + getGlobalServiceContext()->setKillAllOperations(); BSONObj indexInfo = BSON( "key" << BSON( "a" << 1 ) << "ns" << _ns << "name" << "a_1" ); // The call is not interrupted because mayInterrupt == false. ASSERT_FALSE(buildIndexInterrupted(indexInfo, false)); // only want to interrupt the index build - getGlobalEnvironment()->unsetKillAllOperations(); + getGlobalServiceContext()->unsetKillAllOperations(); // The new index is listed in the index catalog because the index build completed. ASSERT( coll->getIndexCatalog()->findIndexByName( &_txn, "a_1" ) ); } @@ -554,14 +554,14 @@ namespace IndexUpdateTests { // Initialize curop. _txn.getCurOp()->reset(); // Request an interrupt. - getGlobalEnvironment()->setKillAllOperations(); + getGlobalServiceContext()->setKillAllOperations(); BSONObj indexInfo = BSON( "key" << BSON( "_id" << 1 ) << "ns" << _ns << "name" << "_id_" ); // The call is interrupted because mayInterrupt == true. ASSERT_TRUE(buildIndexInterrupted(indexInfo, true)); // only want to interrupt the index build - getGlobalEnvironment()->unsetKillAllOperations(); + getGlobalServiceContext()->unsetKillAllOperations(); // The new index is not listed in the index catalog because the index build failed. ASSERT( !coll->getIndexCatalog()->findIndexByName( &_txn, "_id_" ) ); } @@ -592,14 +592,14 @@ namespace IndexUpdateTests { // Initialize curop. _txn.getCurOp()->reset(); // Request an interrupt. - getGlobalEnvironment()->setKillAllOperations(); + getGlobalServiceContext()->setKillAllOperations(); BSONObj indexInfo = BSON( "key" << BSON( "_id" << 1 ) << "ns" << _ns << "name" << "_id_" ); // The call is not interrupted because mayInterrupt == false. ASSERT_FALSE(buildIndexInterrupted(indexInfo, false)); // only want to interrupt the index build - getGlobalEnvironment()->unsetKillAllOperations(); + getGlobalServiceContext()->unsetKillAllOperations(); // The new index is listed in the index catalog because the index build succeeded. ASSERT( coll->getIndexCatalog()->findIndexByName( &_txn, "_id_" ) ); } @@ -619,11 +619,11 @@ namespace IndexUpdateTests { // Initialize curop. _txn.getCurOp()->reset(); // Request an interrupt. - getGlobalEnvironment()->setKillAllOperations(); + getGlobalServiceContext()->setKillAllOperations(); // The call is not interrupted. Helpers::ensureIndex( &_txn, collection(), BSON( "a" << 1 ), false, "a_1" ); // only want to interrupt the index build - getGlobalEnvironment()->unsetKillAllOperations(); + getGlobalServiceContext()->unsetKillAllOperations(); // The new index is listed in getIndexSpecs because the index build completed. ASSERT_EQUALS( 2U, _client.getIndexSpecs(_ns).size()); } @@ -867,7 +867,7 @@ namespace IndexUpdateTests { const std::string storageEngineName = "wiredTiger"; // Run 'wiredTiger' tests if the storage engine is supported. - if (getGlobalEnvironment()->isRegisteredStorageEngine(storageEngineName)) { + if (getGlobalServiceContext()->isRegisteredStorageEngine(storageEngineName)) { // Every field under "storageEngine" has to be an object. ASSERT_NOT_OK(createIndex("unittest", _createSpec(BSON(storageEngineName << 1)))); diff --git a/src/mongo/dbtests/mmaptests.cpp b/src/mongo/dbtests/mmaptests.cpp index 6f2cad63043..1c699360177 100644 --- a/src/mongo/dbtests/mmaptests.cpp +++ b/src/mongo/dbtests/mmaptests.cpp @@ -34,7 +34,7 @@ #include <iostream> #include "mongo/db/concurrency/lock_state.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/storage/mmap_v1/data_file.h" #include "mongo/db/storage/mmap_v1/durable_mapped_file.h" #include "mongo/db/storage/mmap_v1/extent.h" @@ -180,7 +180,7 @@ namespace MMapTests { public: All() : Suite( "mmap" ) {} void setupTests() { - if (!getGlobalEnvironment()->getGlobalStorageEngine()->isMmapV1()) + if (!getGlobalServiceContext()->getGlobalStorageEngine()->isMmapV1()) return; add< LeakTest >(); diff --git a/src/mongo/dbtests/oplogstarttests.cpp b/src/mongo/dbtests/oplogstarttests.cpp index 745bcfd3a01..98505db31dd 100644 --- a/src/mongo/dbtests/oplogstarttests.cpp +++ b/src/mongo/dbtests/oplogstarttests.cpp @@ -30,7 +30,7 @@ #include "mongo/db/dbdirectclient.h" #include "mongo/db/exec/oplogstart.h" #include "mongo/db/exec/working_set.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/operation_context_impl.h" #include "mongo/db/query/canonical_query.h" #include "mongo/db/repl/repl_settings.h" @@ -366,7 +366,7 @@ namespace OplogStartTests { // These tests rely on extent allocation details specific to mmapv1. // TODO figure out a way to generically test this. - if (getGlobalEnvironment()->getGlobalStorageEngine()->isMmapV1()) { + if (getGlobalServiceContext()->getGlobalStorageEngine()->isMmapV1()) { add< OplogStartIsNewestExtentHop >(); add< OplogStartOneEmptyExtent >(); add< OplogStartTwoEmptyExtents >(); diff --git a/src/mongo/dbtests/querytests.cpp b/src/mongo/dbtests/querytests.cpp index a860e6a9120..4ce39171757 100644 --- a/src/mongo/dbtests/querytests.cpp +++ b/src/mongo/dbtests/querytests.cpp @@ -38,8 +38,8 @@ #include "mongo/db/db_raii.h" #include "mongo/db/dbdirectclient.h" #include "mongo/db/dbhelpers.h" -#include "mongo/db/global_environment_d.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context_d.h" +#include "mongo/db/service_context.h" #include "mongo/db/global_optime.h" #include "mongo/db/json.h" #include "mongo/db/lasterror.h" @@ -298,7 +298,7 @@ namespace QueryTests { class GetMoreKillOp : public ClientBase { public: ~GetMoreKillOp() { - getGlobalEnvironment()->unsetKillAllOperations(); + getGlobalServiceContext()->unsetKillAllOperations(); _client.dropCollection( "unittests.querytests.GetMoreKillOp" ); } void run() { @@ -321,13 +321,13 @@ namespace QueryTests { // Set the killop kill all flag, forcing the next get more to fail with a kill op // exception. - getGlobalEnvironment()->setKillAllOperations(); + getGlobalServiceContext()->setKillAllOperations(); while( cursor->more() ) { cursor->next(); } // Revert the killop kill all flag. - getGlobalEnvironment()->unsetKillAllOperations(); + getGlobalServiceContext()->unsetKillAllOperations(); // Check that the cursor has been removed. { @@ -350,7 +350,7 @@ namespace QueryTests { class GetMoreInvalidRequest : public ClientBase { public: ~GetMoreInvalidRequest() { - getGlobalEnvironment()->unsetKillAllOperations(); + getGlobalServiceContext()->unsetKillAllOperations(); _client.dropCollection( "unittests.querytests.GetMoreInvalidRequest" ); } void run() { diff --git a/src/mongo/s/d_migrate.cpp b/src/mongo/s/d_migrate.cpp index 80bbb875304..9138dc201fc 100644 --- a/src/mongo/s/d_migrate.cpp +++ b/src/mongo/s/d_migrate.cpp @@ -61,7 +61,7 @@ #include "mongo/db/dbhelpers.h" #include "mongo/db/exec/plan_stage.h" #include "mongo/db/field_parser.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/hasher.h" #include "mongo/db/jsobj.h" #include "mongo/db/op_observer.h" @@ -2060,7 +2060,7 @@ namespace mongo { for (size_t i = 0; i < indexSpecs.size(); i++) { // make sure to create index on secondaries as well - getGlobalEnvironment()->getOpObserver()->onCreateIndex( + getGlobalServiceContext()->getOpObserver()->onCreateIndex( txn, db->getSystemIndexesName(), indexSpecs[i], diff --git a/src/mongo/s/server.cpp b/src/mongo/s/server.cpp index 18b7b5d156d..2f702bef0a3 100644 --- a/src/mongo/s/server.cpp +++ b/src/mongo/s/server.cpp @@ -51,8 +51,8 @@ #include "mongo/db/auth/user_cache_invalidator_job.h" #include "mongo/db/client_basic.h" #include "mongo/db/dbwebserver.h" -#include "mongo/db/global_environment_experiment.h" -#include "mongo/db/global_environment_noop.h" +#include "mongo/db/service_context.h" +#include "mongo/db/service_context_noop.h" #include "mongo/db/initialize_server_global_state.h" #include "mongo/db/instance.h" #include "mongo/db/lasterror.h" @@ -71,6 +71,7 @@ #include "mongo/s/request.h" #include "mongo/s/version_mongos.h" #include "mongo/scripting/engine.h" +#include "mongo/stdx/memory.h" #include "mongo/util/admin_access.h" #include "mongo/util/cmdline_utils/censor_cmdline.h" #include "mongo/util/concurrency/task.h" @@ -412,7 +413,7 @@ MONGO_INITIALIZER_GENERAL(CreateAuthorizationManager, } MONGO_INITIALIZER(SetGlobalEnvironment)(InitializerContext* context) { - setGlobalEnvironment(new GlobalEnvironmentNoop()); + setGlobalServiceContext(stdx::make_unique<ServiceContextNoop>()); return Status::OK(); } diff --git a/src/mongo/scripting/engine.cpp b/src/mongo/scripting/engine.cpp index 3f56ee467b3..a3178880ea5 100644 --- a/src/mongo/scripting/engine.cpp +++ b/src/mongo/scripting/engine.cpp @@ -41,7 +41,7 @@ #include "mongo/client/dbclientcursor.h" #include "mongo/client/dbclientinterface.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/operation_context.h" #include "mongo/platform/unordered_set.h" #include "mongo/util/file.h" diff --git a/src/mongo/scripting/engine.h b/src/mongo/scripting/engine.h index 17717455588..e970f82b4e7 100644 --- a/src/mongo/scripting/engine.h +++ b/src/mongo/scripting/engine.h @@ -29,7 +29,7 @@ #pragma once -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/jsobj.h" #include "mongo/platform/atomic_word.h" diff --git a/src/mongo/scripting/engine_v8-3.25.cpp b/src/mongo/scripting/engine_v8-3.25.cpp index df5299f30ce..2e8142da771 100644 --- a/src/mongo/scripting/engine_v8-3.25.cpp +++ b/src/mongo/scripting/engine_v8-3.25.cpp @@ -34,7 +34,7 @@ #include <iostream> #include "mongo/base/init.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/operation_context.h" #include "mongo/platform/unordered_set.h" #include "mongo/scripting/v8-3.25_db.h" @@ -383,8 +383,8 @@ namespace mongo { if (!globalScriptEngine) { globalScriptEngine = new V8ScriptEngine(); - if (hasGlobalEnvironment()) { - getGlobalEnvironment()->registerKillOpListener(globalScriptEngine); + if (hasGlobalServiceContext()) { + getGlobalServiceContext()->registerKillOpListener(globalScriptEngine); } } } diff --git a/src/mongo/scripting/engine_v8.cpp b/src/mongo/scripting/engine_v8.cpp index 5c5f503f4c9..64386b0deaa 100644 --- a/src/mongo/scripting/engine_v8.cpp +++ b/src/mongo/scripting/engine_v8.cpp @@ -36,7 +36,7 @@ #include <iostream> #include "mongo/base/init.h" -#include "mongo/db/global_environment_experiment.h" +#include "mongo/db/service_context.h" #include "mongo/db/operation_context.h" #include "mongo/platform/unordered_set.h" #include "mongo/scripting/v8_db.h" @@ -362,8 +362,8 @@ namespace mongo { if (!globalScriptEngine) { globalScriptEngine = new V8ScriptEngine(); - if (hasGlobalEnvironment()) { - getGlobalEnvironment()->registerKillOpListener(globalScriptEngine); + if (hasGlobalServiceContext()) { + getGlobalServiceContext()->registerKillOpListener(globalScriptEngine); } } } diff --git a/src/mongo/util/version_reporting.cpp b/src/mongo/util/version_reporting.cpp index f0dadcaa7ce..1c4d219a054 100644 --- a/src/mongo/util/version_reporting.cpp +++ b/src/mongo/util/version_reporting.cpp @@ -39,14 +39,13 @@ #include "mongo/bson/bsonobjbuilder.h" #include "mongo/config.h" -#include "mongo/db/global_environment_experiment.h" #include "mongo/db/jsobj.h" +#include "mongo/db/service_context.h" #include "mongo/util/debug_util.h" #include "mongo/util/log.h" #include "mongo/util/net/ssl_manager.h" #include "mongo/util/version.h" - namespace mongo { using std::endl; @@ -66,11 +65,11 @@ namespace mongo { } BSONArray storageEngineList() { - if (!hasGlobalEnvironment()) + if (!hasGlobalServiceContext()) return BSONArray(); boost::scoped_ptr<StorageFactoriesIterator> sfi( - getGlobalEnvironment()->makeStorageFactoriesIterator()); + getGlobalServiceContext()->makeStorageFactoriesIterator()); if (!sfi) return BSONArray(); |