MCPcopy Create free account
hub / github.com/XTXMarkets/ternfs / openForReadOnly

Method openForReadOnly

cpp/core/SharedRocksDB.cpp:94–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

92}
93
94void SharedRocksDB::openForReadOnly(rocksdb::Options options) {
95 std::unique_lock<std::shared_mutex> _(_stateMutex);
96 ALWAYS_ASSERT(_db.get() == nullptr);
97 options.create_if_missing = false;
98 options.create_missing_column_families = false;
99
100 std::vector<rocksdb::ColumnFamilyHandle*> cfHandles;
101 cfHandles.reserve(_cfDescriptors.size());
102 rocksdb::DB* db;
103 LOG_INFO(_env, "Opening RocksDB as readonly in %s", _path);
104 ROCKS_DB_CHECKED_MSG(
105 rocksdb::DB::OpenForReadOnly(options, _path, _cfDescriptors, &cfHandles, &db),
106 "could not open RocksDB %s", _path
107 );
108
109 _db = std::unique_ptr<rocksdb::DB, void (*)(rocksdb::DB*)>(db,closeDB);
110 ALWAYS_ASSERT(_cfDescriptors.size() == cfHandles.size());
111
112 for (auto i = 0; i < _cfDescriptors.size(); ++i) {
113 _cfs.insert(std::make_pair(_cfDescriptors[i].name, cfHandles[i]));
114 }
115
116 _cfDescriptors.clear();
117}
118
119void SharedRocksDB::close() {
120 std::unique_lock<std::shared_mutex> _(_stateMutex);

Callers 8

outputLogEntriesMethod · 0.80
verifyEqualMethod · 0.80
outputUnreleasedStateMethod · 0.80
outputLogEntriesMethod · 0.80
fsckMethod · 0.80
sampleFilesMethod · 0.80

Calls 4

getMethod · 0.80
sizeMethod · 0.45
insertMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected