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 =
81 virtual void finishInit();
85 virtual void listDatabases(std::vector<std::string>* out)
const;
88 StringData
db)
override;
95 return _supportsDBLocking;
99 return _supportsCappedCollections;
102 virtual Status closeDatabase(OperationContext* opCtx, StringData db);
106 virtual int flushAllFiles(OperationContext* opCtx,
bool sync);
108 virtual Status beginBackup(OperationContext* opCtx);
110 virtual void endBackup(OperationContext* opCtx);
112 virtual bool isDurable()
const;
114 virtual bool isEphemeral()
const;
116 virtual Status repairRecordStore(OperationContext* opCtx,
const std::string&
ns);
118 virtual void cleanShutdown();
120 virtual void setStableTimestamp(Timestamp stableTimestamp)
override;
122 virtual void setInitialDataTimestamp(Timestamp initialDataTimestamp)
override;
124 virtual void setOldestTimestampFromStable()
override;
126 virtual void setOldestTimestamp(Timestamp newOldestTimestamp)
override;
128 virtual bool isCacheUnderPressure(OperationContext* opCtx)
const override;
130 virtual void setCachePressureForTest(
int pressure)
override;
132 virtual bool supportsRecoverToStableTimestamp()
const override;
136 virtual boost::optional<Timestamp> getRecoveryTimestamp()
const override;
138 virtual boost::optional<Timestamp> getLastStableCheckpointTimestamp()
const override;
140 virtual Timestamp getAllCommittedTimestamp()
const override;
142 bool supportsReadConcernSnapshot()
const final;
144 virtual void replicationBatchIsComplete()
const override;
170 OperationContext* opCtx)
override;
176 void loadCatalog(OperationContext* opCtx)
final;
183 Status _dropCollectionsNoTimestamp(OperationContext* opCtx,
188 Status _dropCollectionsWithTimestamp(OperationContext* opCtx,
190 std::list<std::string>& toDrop,
194 void _dumpCatalog(OperationContext* opCtx);
208 Timestamp _initialDataTimestamp = Timestamp::kAllowUnstableCheckpointsSentinel;
213 typedef std::map<std::string, KVDatabaseCatalogEntryBase*>
DBMap;
218 bool _inBackupMode =
false;
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
Definition: kv_engine.h:53
KVEngine * engine
Definition: kv_engine_test_timestamps.cpp:205
const bool _supportsDBLocking
Definition: kv_storage_engine.h:206
void setJournalListener(JournalListener *jl)
Definition: dur.cpp:906
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
const KVEngine * getEngine() const
Definition: kv_storage_engine.h:155
void closeCatalog(OperationContext *opCtx)
Closes the catalog, destroying all associated in-memory data structures for all databases.
Definition: catalog_control.cpp:46
Collection *const const NamespaceString & ns
Definition: collection_info_cache_impl.cpp:53
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
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
stdx::function< KVDatabaseCatalogEntryFactory > _databaseCatalogEntryFactory
Definition: kv_storage_engine.h:196
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
decltype(defaultDatabaseCatalogEntryFactory) KVDatabaseCatalogEntryFactory
Definition: kv_storage_engine.h:67
std::unique_ptr< EphemeralForTestEngine > _engine
Definition: ephemeral_for_test_engine_test.cpp:53
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
KVStorageEngineOptions _options
Definition: kv_storage_engine.h:200
virtual bool supportsDocLocking() const
Returns whether the storage engine supports its own locking locking below the collection level...
Definition: kv_storage_engine.h:90
Definition: index_key_validate.h:40
A RecoveryUnit is responsible for ensuring that data is persisted.
Definition: recovery_unit.h:51
stdx::mutex _dbsLock
Definition: kv_storage_engine.h:215
DBMap _dbs
Definition: kv_storage_engine.h:214
std::unique_ptr< KVEngine > _engine
Definition: kv_storage_engine.h:203
Status dropDatabase(OperationContext *opCtx, const std::string &dbName)
Drops the database "dbName".
Definition: drop_database.cpp:85
OperationContext Database * db
Definition: database_impl.cpp:949
OperationContext Database StringData BSONObj options
Definition: database_impl.cpp:949
const KVCatalog * getCatalog() const
Definition: kv_storage_engine.h:162
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
std::unique_ptr< KVCatalog > _catalog
Definition: kv_catalog_feature_tracker_test.cpp:103
Manages snapshots that can be read from at a later time.
Definition: snapshot_manager.h:47
Definition: kv_storage_engine.cpp:59
Database *const OperationContext *const const StringData name
Definition: database_impl.cpp:82
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
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 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
bool _supportsDocLocking
A RAII object that temporarily forces setting of the _supportsDocLocking global variable (defined in ...
Definition: lock_manager_test_help.h:77
bool directoryForIndexes
Definition: kv_storage_engine.h:53