34 #include "mongo/base/status_with.h" 35 #include "mongo/base/string_data.h" 36 #include "mongo/bson/timestamp.h" 42 #include "mongo/stdx/functional.h" 43 #include "mongo/stdx/memory.h" 44 #include "mongo/stdx/mutex.h" 76 stdx::function<KVDatabaseCatalogEntryFactory> databaseCatalogEntryFactory =
85 virtual void listDatabases(std::vector<std::string>* out)
const;
88 StringData
db)
override;
170 OperationContext*
opCtx)
override;
190 std::list<std::string>& toDrop,
213 typedef std::map<std::string, KVDatabaseCatalogEntryBase*>
DBMap;
const bool _supportsCappedCollections
Definition: kv_storage_engine.h:207
std::list< std::string >::iterator CollIter
Definition: kv_storage_engine.h:181
Definition: kv_storage_engine.h:51
virtual Status beginBackup(OperationContext *opCtx)
Transitions the storage engine into backup mode.
Definition: kv_storage_engine.cpp:462
Definition: kv_engine.h:53
virtual void cleanShutdown()
This method will be called before there is a clean shutdown.
Definition: kv_storage_engine.cpp:346
virtual void replicationBatchIsComplete() const override
Notifies the storage engine that a replication batch has completed.
Definition: kv_storage_engine.cpp:571
KVEngine * engine
Definition: kv_engine_test_timestamps.cpp:205
virtual void setCachePressureForTest(int pressure) override
For unit tests only.
Definition: kv_storage_engine.cpp:525
const bool _supportsDBLocking
Definition: kv_storage_engine.h:206
void loadCatalog(OperationContext *opCtx) final
When loading after an unclean shutdown, this performs cleanup on the KVCatalog and unsets the startin...
Definition: kv_storage_engine.cpp:96
bool supportsReadConcernSnapshot() const final
Returns true if the storage engine supports the readConcern level "snapshot".
Definition: kv_storage_engine.cpp:567
virtual bool supportsDBLocking() const
Returns whether the storage engine supports locking at a database level.
Definition: kv_storage_engine.h:94
std::unique_ptr< KVDatabaseCatalogEntryBase > defaultDatabaseCatalogEntryFactory(const StringData name, KVStorageEngine *const engine)
Definition: kv_database_catalog_entry.cpp:49
void _dumpCatalog(OperationContext *opCtx)
Definition: kv_storage_engine.cpp:579
const KVEngine * getEngine() const
Definition: kv_storage_engine.h:155
Collection *const const NamespaceString & ns
Definition: collection_info_cache_impl.cpp:53
virtual Status dropDatabase(OperationContext *opCtx, StringData db)
Deletes all data and metadata for a database.
Definition: kv_storage_engine.cpp:396
virtual ~KVStorageEngine()
Definition: kv_storage_engine.cpp:359
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
Definition: kv_database_catalog_entry_base.h:42
std::unique_ptr< RecordStore > _catalogRecordStore
Definition: kv_storage_engine.h:210
Status _dropCollectionsWithTimestamp(OperationContext *opCtx, KVDatabaseCatalogEntryBase *dbce, std::list< std::string > &toDrop, CollIter begin, CollIter end)
bool _inBackupMode
Definition: kv_storage_engine.h:218
stdx::function< KVDatabaseCatalogEntryFactory > _databaseCatalogEntryFactory
Definition: kv_storage_engine.h:196
void setJournalListener(JournalListener *jl) final
Sets a new JournalListener, which is used by the storage engine to alert the rest of the system about...
Definition: kv_storage_engine.cpp:500
StatusWith< std::vector< StorageEngine::CollectionIndexNamePair > > reconcileCatalogAndIdents(OperationContext *opCtx) override
Drop abandoned idents.
Definition: kv_storage_engine.cpp:215
virtual bool isEphemeral() const
Returns true if the engine does not persist data to disk; false otherwise.
Definition: kv_storage_engine.cpp:483
virtual bool supportsRecoverToStableTimestamp() const override
Returns whether the storage engine supports "recover to stable timestamp".
Definition: kv_storage_engine.cpp:529
Collection *const OperationContext *const const StringData OptionalCollectionUUID CollectionCatalogEntry *const RecordStore *const DatabaseCatalogEntry *const dbce
Definition: collection_impl.cpp:80
bool directoryPerDB
Definition: kv_storage_engine.h:52
const bool _supportsDocLocking
Definition: kv_storage_engine.h:205
KVStorageEngine(KVEngine *engine, const KVStorageEngineOptions &options=KVStorageEngineOptions(), stdx::function< KVDatabaseCatalogEntryFactory > databaseCatalogEntryFactory=defaultDatabaseCatalogEntryFactory)
Definition: kv_storage_engine.cpp:78
decltype(defaultDatabaseCatalogEntryFactory) KVDatabaseCatalogEntryFactory
Definition: kv_storage_engine.h:67
Definition: kv_storage_engine.h:69
This class allows for the storageEngine to alert the rest of the system about journaled write progres...
Definition: journal_listener.h:48
Definition: kv_catalog.h:49
OperationContext Database StringData CollectionOptions bool const BSONObj &idIndex Status
Definition: database_impl.cpp:955
KVStorageEngineOptions _options
Definition: kv_storage_engine.h:200
virtual void setOldestTimestamp(Timestamp newOldestTimestamp) override
Sets the oldest timestamp for which the storage engine must maintain snapshot history through.
Definition: kv_storage_engine.cpp:517
virtual StatusWith< Timestamp > recoverToStableTimestamp(OperationContext *opCtx) override
Recovers the storage engine state to the last stable timestamp.
Definition: kv_storage_engine.cpp:533
virtual bool supportsDocLocking() const
Returns whether the storage engine supports its own locking locking below the collection level.
Definition: kv_storage_engine.h:90
virtual Status repairRecordStore(OperationContext *opCtx, const std::string &ns)
Recover as much data as possible from a potentially corrupt RecordStore.
Definition: kv_storage_engine.cpp:491
Definition: index_key_validate.h:40
A RecoveryUnit is responsible for ensuring that data is persisted.
Definition: recovery_unit.h:51
virtual int flushAllFiles(OperationContext *opCtx, bool sync)
Definition: kv_storage_engine.cpp:458
virtual void listDatabases(std::vector< std::string > *out) const
List the databases stored in this storage engine.
Definition: kv_storage_engine.cpp:371
stdx::mutex _dbsLock
Definition: kv_storage_engine.h:215
virtual void setOldestTimestampFromStable() override
Uses the current stable timestamp to set the oldest timestamp for which the storage engine must maint...
Definition: kv_storage_engine.cpp:513
DBMap _dbs
Definition: kv_storage_engine.h:214
void closeCatalog(OperationContext *opCtx) final
Definition: kv_storage_engine.cpp:184
SnapshotManager * getSnapshotManager() const final
Returns the SnapshotManager for this StorageEngine or NULL if not supported.
Definition: kv_storage_engine.cpp:487
virtual bool isDurable() const
Returns whether the engine supports a journalling concept or not.
Definition: kv_storage_engine.cpp:479
std::unique_ptr< KVEngine > _engine
Definition: kv_storage_engine.h:203
virtual bool isCacheUnderPressure(OperationContext *opCtx) const override
Indicates whether the storage engine cache is under pressure.
Definition: kv_storage_engine.cpp:521
Timestamp _initialDataTimestamp
Definition: kv_storage_engine.h:208
virtual void setStableTimestamp(Timestamp stableTimestamp) override
Sets the highest timestamp at which the storage engine is allowed to take a checkpoint.
Definition: kv_storage_engine.cpp:504
OperationContext Database * db
Definition: database_impl.cpp:949
const KVCatalog * getCatalog() const
Definition: kv_storage_engine.h:162
virtual Status closeDatabase(OperationContext *opCtx, StringData db)
Closes all file handles associated with a database.
Definition: kv_storage_engine.cpp:391
virtual void endBackup(OperationContext *opCtx)
Transitions the storage engine out of backup mode.
Definition: kv_storage_engine.cpp:472
std::map< std::string, KVDatabaseCatalogEntryBase * > DBMap
Definition: kv_storage_engine.h:213
KVEngine * getEngine()
Definition: kv_storage_engine.h:152
bool forRepair
Definition: kv_storage_engine.h:54
Manages snapshots that can be read from at a later time.
Definition: snapshot_manager.h:47
Definition: kv_storage_engine.cpp:59
virtual boost::optional< Timestamp > getRecoveryTimestamp() const override
Returns the stable timestamp that the storage engine recovered to on startup.
Definition: kv_storage_engine.cpp:559
KVDatabaseCatalogEntryBase * getDatabaseCatalogEntry(OperationContext *opCtx, StringData db) override
Return the DatabaseCatalogEntry that describes the database indicated by 'db'.
Definition: kv_storage_engine.cpp:380
Database *const OperationContext *const const StringData name
Definition: database_impl.cpp:82
virtual void setInitialDataTimestamp(Timestamp initialDataTimestamp) override
Tells the storage engine the timestamp of the data at startup.
Definition: kv_storage_engine.cpp:508
virtual void finishInit()
Called after the globalStorageEngine pointer has been set up, before any other methods are called.
Definition: kv_storage_engine.cpp:361
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
virtual RecoveryUnit * newRecoveryUnit()
Returns a new interface to the storage engine's recovery unit.
Definition: kv_storage_engine.cpp:363
std::unique_ptr< KVCatalog > _catalog
Definition: kv_storage_engine.h:211
The StorageEngine class is the top level interface for creating a new storage engine.
Definition: storage_engine.h:57
virtual Timestamp getAllCommittedTimestamp() const override
Returns the all committed timestamp.
Definition: kv_storage_engine.cpp:575
virtual bool supportsCappedCollections() const
Returns whether the storage engine supports capped collections.
Definition: kv_storage_engine.h:98
KVCatalog * getCatalog()
Definition: kv_storage_engine.h:159
virtual boost::optional< Timestamp > getLastStableCheckpointTimestamp() const override
Returns a timestamp that is guaranteed to be persisted to disk in a checkpoint.
Definition: kv_storage_engine.cpp:563
Status _dropCollectionsNoTimestamp(OperationContext *opCtx, KVDatabaseCatalogEntryBase *dbce, CollIter begin, CollIter end)
Returns the first dropCollection error that this method encounters.
Definition: kv_storage_engine.cpp:419
bool directoryForIndexes
Definition: kv_storage_engine.h:53