void RocksSnapshotManager::setCommittedSnapshot(const SnapshotName& name) { stdx::lock_guard<stdx::mutex> lock(_mutex); uint64_t nameU64 = name.asU64(); invariant(!_committedSnapshot || *_committedSnapshot < nameU64); _committedSnapshot = nameU64; }
Status RocksSnapshotManager::createSnapshot(OperationContext* txn, const SnapshotName& name) { stdx::lock_guard<stdx::mutex> lock(_mutex); uint64_t nameU64 = name.asU64(); _snapshotMap[nameU64] = std::make_shared<SnapshotHolder>(txn, nameU64); _snapshots.push_back(nameU64); return Status::OK(); }
void WiredTigerSnapshotManager::beginTransactionAtTimestamp(SnapshotName pointInTime, WT_SESSION* session) const { char readTSConfigString[15 /* read_timestamp= */ + (8 * 2) /* 8 hexadecimal characters */ + 1 /* trailing null */]; auto size = std::snprintf(readTSConfigString, sizeof(readTSConfigString), "read_timestamp=%llx", static_cast<unsigned long long>(pointInTime.asU64())); invariant(static_cast<std::size_t>(size) < sizeof(readTSConfigString)); invariantWTOK(session->begin_transaction(session, readTSConfigString)); }
Status NarkDbSnapshotManager::createSnapshot(OperationContext* txn, const SnapshotName& name) { auto session = NarkDbRecoveryUnit::get(txn)->getSession(txn)->getSession(); const std::string config = str::stream() << "name=" << name.asU64(); return narkDbRCToStatus(session->snapshot(session, config.c_str())); }
Status WiredTigerSnapshotManager::createSnapshot(OperationContext* opCtx, const SnapshotName& name) { auto session = WiredTigerRecoveryUnit::get(opCtx)->getSession(opCtx)->getSession(); const std::string config = str::stream() << "name=" << name.asU64(); return wtRCToStatus(session->snapshot(session, config.c_str())); }