diff options
Diffstat (limited to 'src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp')
-rw-r--r-- | src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp | 129 |
1 files changed, 61 insertions, 68 deletions
diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp index 23d69d934c2..45888019c49 100644 --- a/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp +++ b/src/mongo/db/storage/wiredtiger/wiredtiger_init.cpp @@ -52,81 +52,74 @@ namespace mongo { - namespace { - class WiredTigerFactory : public StorageEngine::Factory { - public: - virtual ~WiredTigerFactory(){} - virtual StorageEngine* create(const StorageGlobalParams& params, - const StorageEngineLockFile& lockFile) const { - if (lockFile.createdByUncleanShutdown()) { - warning() << "Recovering data from the last clean checkpoint."; - } - WiredTigerKVEngine* kv = new WiredTigerKVEngine( params.dbpath, - wiredTigerGlobalOptions.engineConfig, - params.dur, - params.repair ); - kv->setRecordStoreExtraOptions( wiredTigerGlobalOptions.collectionConfig ); - kv->setSortedDataInterfaceExtraOptions( wiredTigerGlobalOptions.indexConfig ); - // Intentionally leaked. - new WiredTigerServerStatusSection(kv); - new WiredTigerEngineRuntimeConfigParameter(kv); - - KVStorageEngineOptions options; - options.directoryPerDB = params.directoryperdb; - options.directoryForIndexes = wiredTigerGlobalOptions.directoryForIndexes; - options.forRepair = params.repair; - return new KVStorageEngine( kv, options ); - } - - virtual StringData getCanonicalName() const { - return kWiredTigerEngineName; - } - - virtual Status validateCollectionStorageOptions(const BSONObj& options) const { - return WiredTigerRecordStore::parseOptionsField(options).getStatus(); - } - - virtual Status validateIndexStorageOptions(const BSONObj& options) const { - return WiredTigerIndex::parseIndexOptions(options).getStatus(); - } - - virtual Status validateMetadata(const StorageEngineMetadata& metadata, - const StorageGlobalParams& params) const { - Status status = metadata.validateStorageEngineOption( - "directoryPerDB", params.directoryperdb); - if (!status.isOK()) { - return status; - } - - status = metadata.validateStorageEngineOption( - "directoryForIndexes", wiredTigerGlobalOptions.directoryForIndexes); - if (!status.isOK()) { - return status; - } +namespace { +class WiredTigerFactory : public StorageEngine::Factory { +public: + virtual ~WiredTigerFactory() {} + virtual StorageEngine* create(const StorageGlobalParams& params, + const StorageEngineLockFile& lockFile) const { + if (lockFile.createdByUncleanShutdown()) { + warning() << "Recovering data from the last clean checkpoint."; + } + WiredTigerKVEngine* kv = new WiredTigerKVEngine( + params.dbpath, wiredTigerGlobalOptions.engineConfig, params.dur, params.repair); + kv->setRecordStoreExtraOptions(wiredTigerGlobalOptions.collectionConfig); + kv->setSortedDataInterfaceExtraOptions(wiredTigerGlobalOptions.indexConfig); + // Intentionally leaked. + new WiredTigerServerStatusSection(kv); + new WiredTigerEngineRuntimeConfigParameter(kv); + + KVStorageEngineOptions options; + options.directoryPerDB = params.directoryperdb; + options.directoryForIndexes = wiredTigerGlobalOptions.directoryForIndexes; + options.forRepair = params.repair; + return new KVStorageEngine(kv, options); + } - return Status::OK(); - } + virtual StringData getCanonicalName() const { + return kWiredTigerEngineName; + } - virtual BSONObj createMetadataOptions(const StorageGlobalParams& params) const { - BSONObjBuilder builder; - builder.appendBool("directoryPerDB", params.directoryperdb); - builder.appendBool("directoryForIndexes", - wiredTigerGlobalOptions.directoryForIndexes); - WiredTigerCustomizationHooks::get(getGlobalServiceContext())->appendUID(&builder); - return builder.obj(); - } + virtual Status validateCollectionStorageOptions(const BSONObj& options) const { + return WiredTigerRecordStore::parseOptionsField(options).getStatus(); + } - }; - } // namespace + virtual Status validateIndexStorageOptions(const BSONObj& options) const { + return WiredTigerIndex::parseIndexOptions(options).getStatus(); + } - MONGO_INITIALIZER_WITH_PREREQUISITES(WiredTigerEngineInit, - ("SetGlobalEnvironment")) - (InitializerContext* context ) { + virtual Status validateMetadata(const StorageEngineMetadata& metadata, + const StorageGlobalParams& params) const { + Status status = + metadata.validateStorageEngineOption("directoryPerDB", params.directoryperdb); + if (!status.isOK()) { + return status; + } - getGlobalServiceContext()->registerStorageEngine(kWiredTigerEngineName, - new WiredTigerFactory()); + status = metadata.validateStorageEngineOption("directoryForIndexes", + wiredTigerGlobalOptions.directoryForIndexes); + if (!status.isOK()) { + return status; + } return Status::OK(); } + virtual BSONObj createMetadataOptions(const StorageGlobalParams& params) const { + BSONObjBuilder builder; + builder.appendBool("directoryPerDB", params.directoryperdb); + builder.appendBool("directoryForIndexes", wiredTigerGlobalOptions.directoryForIndexes); + WiredTigerCustomizationHooks::get(getGlobalServiceContext())->appendUID(&builder); + return builder.obj(); + } +}; +} // namespace + +MONGO_INITIALIZER_WITH_PREREQUISITES(WiredTigerEngineInit, ("SetGlobalEnvironment")) +(InitializerContext* context) { + getGlobalServiceContext()->registerStorageEngine(kWiredTigerEngineName, + new WiredTigerFactory()); + + return Status::OK(); +} } |