Storage Engine API
ephemeral_for_test_engine.h
Go to the documentation of this file.
1 // ephemeral_for_test_engine.h
2 
31 #pragma once
32 
33 #include <memory>
34 
37 #include "mongo/stdx/mutex.h"
38 #include "mongo/util/string_map.h"
39 
40 namespace mongo {
41 
42 class JournalListener;
43 
45 public:
46  virtual RecoveryUnit* newRecoveryUnit();
47 
48  virtual Status createRecordStore(OperationContext* opCtx,
49  StringData ns,
50  StringData ident,
51  const CollectionOptions& options);
52 
53  virtual std::unique_ptr<RecordStore> getRecordStore(OperationContext* opCtx,
54  StringData ns,
55  StringData ident,
56  const CollectionOptions& options);
57 
58  virtual Status createSortedDataInterface(OperationContext* opCtx,
59  StringData ident,
60  const IndexDescriptor* desc);
61 
62  virtual SortedDataInterface* getSortedDataInterface(OperationContext* opCtx,
63  StringData ident,
64  const IndexDescriptor* desc);
65 
66  virtual Status beginBackup(OperationContext* opCtx) {
67  return Status::OK();
68  }
69 
70  virtual void endBackup(OperationContext* opCtx) {}
71 
72  virtual Status dropIdent(OperationContext* opCtx, StringData ident);
73 
74  virtual bool supportsDocLocking() const {
75  return false;
76  }
77 
78  virtual bool supportsDirectoryPerDB() const {
79  return false;
80  }
81 
85  virtual bool isDurable() const {
86  return false;
87  }
88 
89  virtual bool isEphemeral() const {
90  return true;
91  }
92 
93  virtual int64_t getIdentSize(OperationContext* opCtx, StringData ident);
94 
95  virtual Status repairIdent(OperationContext* opCtx, StringData ident) {
96  return Status::OK();
97  }
98 
99  virtual void cleanShutdown(){};
100 
101  virtual bool hasIdent(OperationContext* opCtx, StringData ident) const {
102  return _dataMap.find(ident) != _dataMap.end();
103  ;
104  }
105 
106  std::vector<std::string> getAllIdents(OperationContext* opCtx) const;
107 
109  stdx::unique_lock<stdx::mutex> lk(_mutex);
110  _journalListener = jl;
111  }
112 
113  virtual Timestamp getAllCommittedTimestamp() const override {
114  MONGO_UNREACHABLE;
115  }
116 
117 private:
118  typedef StringMap<std::shared_ptr<void>> DataMap;
119 
120  mutable stdx::mutex _mutex;
121  DataMap _dataMap; // All actual data is owned in here
122 
123  // Notified when we write as everything is considered "journalled" since repl depends on it.
125 };
126 }
void setJournalListener(JournalListener *jl) final
Sets a new JournalListener, which is used to alert the rest of the system about journaled write progr...
Definition: ephemeral_for_test_engine.h:108
static NoOpJournalListener instance
Definition: journal_listener.h:70
virtual bool isDurable() const
Data stored in memory is not durable.
Definition: ephemeral_for_test_engine.h:85
virtual Status createRecordStore(OperationContext *opCtx, StringData ns, StringData ident, const CollectionOptions &options)
The create and drop methods on KVEngine are not transactional.
Definition: ephemeral_for_test_engine.cpp:52
Definition: kv_engine.h:53
virtual int64_t getIdentSize(OperationContext *opCtx, StringData ident)
Definition: ephemeral_for_test_engine.cpp:102
virtual Status repairIdent(OperationContext *opCtx, StringData ident)
Definition: ephemeral_for_test_engine.h:95
virtual bool supportsDocLocking() const
This must not change over the lifetime of the engine.
Definition: ephemeral_for_test_engine.h:74
virtual RecoveryUnit * newRecoveryUnit()
Definition: ephemeral_for_test_engine.cpp:44
Collection *const const NamespaceString & ns
Definition: collection_info_cache_impl.cpp:53
Definition: ephemeral_for_test_engine.h:44
Definition: collection_options.h:57
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
virtual Status beginBackup(OperationContext *opCtx)
See StorageEngine::beginBackup for details.
Definition: ephemeral_for_test_engine.h:66
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
virtual Status createSortedDataInterface(OperationContext *opCtx, StringData ident, const IndexDescriptor *desc)
Definition: ephemeral_for_test_engine.cpp:78
virtual SortedDataInterface * getSortedDataInterface(OperationContext *opCtx, StringData ident, const IndexDescriptor *desc)
Definition: ephemeral_for_test_engine.cpp:88
stdx::mutex _mutex
Definition: ephemeral_for_test_engine.h:120
DataMap _dataMap
Definition: ephemeral_for_test_engine.h:121
StringMap< std::shared_ptr< void > > DataMap
Definition: ephemeral_for_test_engine.h:118
virtual bool supportsDirectoryPerDB() const
Returns true if storage engine supports –directoryperdb.
Definition: ephemeral_for_test_engine.h:78
This class allows for the storageEngine to alert the rest of the system about journaled write progres...
Definition: journal_listener.h:48
virtual std::unique_ptr< RecordStore > getRecordStore(OperationContext *opCtx, StringData ns, StringData ident, const CollectionOptions &options)
Having multiple out for the same ns is a rules violation; Calling on a non-created ident is invalid a...
Definition: ephemeral_for_test_engine.cpp:63
virtual void endBackup(OperationContext *opCtx)
See StorageEngine::endBackup for details.
Definition: ephemeral_for_test_engine.h:70
A RecoveryUnit is responsible for ensuring that data is persisted.
Definition: recovery_unit.h:51
JournalListener * _journalListener
Definition: ephemeral_for_test_engine.h:124
virtual Timestamp getAllCommittedTimestamp() const override
See StorageEngine::getAllCommittedTimestamp
Definition: ephemeral_for_test_engine.h:113
virtual bool hasIdent(OperationContext *opCtx, StringData ident) const
Definition: ephemeral_for_test_engine.h:101
OperationContext Database StringData BSONObj options
Definition: database_impl.cpp:949
virtual void cleanShutdown()
This method will be called before there is a clean shutdown.
Definition: ephemeral_for_test_engine.h:99
std::vector< std::string > getAllIdents(OperationContext *opCtx) const
Definition: ephemeral_for_test_engine.cpp:106
virtual Status dropIdent(OperationContext *opCtx, StringData ident)
Definition: ephemeral_for_test_engine.cpp:96
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
OperationContext const IndexDescriptor * desc
Definition: index_catalog_impl.cpp:97
virtual bool isEphemeral() const
Returns true if the KVEngine is ephemeral – that is, it is NOT persistent and all data is lost after...
Definition: ephemeral_for_test_engine.h:89
This interface is a work in progress.
Definition: sorted_data_interface.h:64