Storage Engine API
devnull_kv_engine.h
Go to the documentation of this file.
1 // devnull_kv_engine.h
2 
31 #pragma once
32 
33 #include <memory>
34 
37 
38 namespace mongo {
39 
40 class JournalListener;
41 
45 class DevNullKVEngine : public KVEngine {
46 public:
47  virtual ~DevNullKVEngine() {}
48 
50  return new RecoveryUnitNoop();
51  }
52 
53  virtual Status createRecordStore(OperationContext* opCtx,
54  StringData ns,
55  StringData ident,
56  const CollectionOptions& options) {
57  return Status::OK();
58  }
59 
60  virtual std::unique_ptr<RecordStore> getRecordStore(OperationContext* opCtx,
61  StringData ns,
62  StringData ident,
63  const CollectionOptions& options);
64 
65  virtual Status createSortedDataInterface(OperationContext* opCtx,
66  StringData ident,
67  const IndexDescriptor* desc) {
68  return Status::OK();
69  }
70 
71  virtual SortedDataInterface* getSortedDataInterface(OperationContext* opCtx,
72  StringData ident,
73  const IndexDescriptor* desc);
74 
75  virtual Status dropIdent(OperationContext* opCtx, StringData ident) {
76  return Status::OK();
77  }
78 
79  virtual bool supportsDocLocking() const {
80  return true;
81  }
82 
83  virtual bool supportsDirectoryPerDB() const {
84  return false;
85  }
86 
90  virtual bool isDurable() const {
91  return false;
92  }
93 
94  virtual bool isEphemeral() const {
95  return true;
96  }
97 
98  virtual bool isCacheUnderPressure(OperationContext* opCtx) const override;
99 
100  virtual void setCachePressureForTest(int pressure) override;
101 
102  virtual int64_t getIdentSize(OperationContext* opCtx, StringData ident) {
103  return 1;
104  }
105 
106  virtual Status repairIdent(OperationContext* opCtx, StringData ident) {
107  return Status::OK();
108  }
109 
110  virtual bool hasIdent(OperationContext* opCtx, StringData ident) const {
111  return true;
112  }
113 
114  std::vector<std::string> getAllIdents(OperationContext* opCtx) const {
115  return std::vector<std::string>();
116  }
117 
118  virtual void cleanShutdown(){};
119 
121 
122  virtual Timestamp getAllCommittedTimestamp() const override {
123  return Timestamp();
124  }
125 
126 private:
127  std::shared_ptr<void> _catalogInfo;
128 
130 };
131 }
virtual Status repairIdent(OperationContext *opCtx, StringData ident)
Definition: devnull_kv_engine.h:106
Definition: recovery_unit_noop.h:40
virtual bool isCacheUnderPressure(OperationContext *opCtx) const override
See StorageEngine::isCacheUnderPressure()
Definition: devnull_kv_engine.cpp:263
Definition: kv_engine.h:53
virtual Timestamp getAllCommittedTimestamp() const override
See StorageEngine::getAllCommittedTimestamp
Definition: devnull_kv_engine.h:122
Collection *const const NamespaceString & ns
Definition: collection_info_cache_impl.cpp:53
virtual bool supportsDirectoryPerDB() const
Returns true if storage engine supports –directoryperdb.
Definition: devnull_kv_engine.h:83
Definition: collection_options.h:57
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
std::shared_ptr< void > _catalogInfo
Definition: devnull_kv_engine.h:127
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
virtual bool isDurable() const
devnull does no journaling, so don&#39;t report the engine as durable.
Definition: devnull_kv_engine.h:90
virtual ~DevNullKVEngine()
Definition: devnull_kv_engine.h:47
virtual Status createSortedDataInterface(OperationContext *opCtx, StringData ident, const IndexDescriptor *desc)
Definition: devnull_kv_engine.h:65
void setJournalListener(JournalListener *jl) final
Sets a new JournalListener, which is used to alert the rest of the system about journaled write progr...
Definition: devnull_kv_engine.h:120
std::vector< std::string > getAllIdents(OperationContext *opCtx) const
Definition: devnull_kv_engine.h:114
virtual int64_t getIdentSize(OperationContext *opCtx, StringData ident)
Definition: devnull_kv_engine.h:102
virtual Status dropIdent(OperationContext *opCtx, StringData ident)
Definition: devnull_kv_engine.h:75
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: devnull_kv_engine.cpp:247
int _cachePressureForTest
Definition: devnull_kv_engine.h:129
A RecoveryUnit is responsible for ensuring that data is persisted.
Definition: recovery_unit.h:51
virtual RecoveryUnit * newRecoveryUnit()
Definition: devnull_kv_engine.h:49
virtual void setCachePressureForTest(int pressure) override
See &#39;StorageEngine::setCachePressureForTest()&#39;.
Definition: devnull_kv_engine.cpp:267
OperationContext Database StringData BSONObj options
Definition: database_impl.cpp:949
virtual bool hasIdent(OperationContext *opCtx, StringData ident) const
Definition: devnull_kv_engine.h:110
virtual Status createRecordStore(OperationContext *opCtx, StringData ns, StringData ident, const CollectionOptions &options)
The create and drop methods on KVEngine are not transactional.
Definition: devnull_kv_engine.h:53
virtual bool supportsDocLocking() const
This must not change over the lifetime of the engine.
Definition: devnull_kv_engine.h:79
virtual SortedDataInterface * getSortedDataInterface(OperationContext *opCtx, StringData ident, const IndexDescriptor *desc)
Definition: devnull_kv_engine.cpp:257
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
The devnull storage engine is intended for unit and performance testing.
Definition: devnull_kv_engine.h:45
OperationContext const IndexDescriptor * desc
Definition: index_catalog_impl.cpp:97
This interface is a work in progress.
Definition: sorted_data_interface.h:64
virtual void cleanShutdown()
This method will be called before there is a clean shutdown.
Definition: devnull_kv_engine.h:118
virtual bool isEphemeral() const
Returns true if the KVEngine is ephemeral – that is, it is NOT persistent and all data is lost after...
Definition: devnull_kv_engine.h:94