Optional sequence number exporting during checkpoint creation (#5528)
Summary: Add sequence_number_ptr to the checkpoint interface to expose the sequence number during taking the checkpoint. The number will be consistent with the seq # in rocksdb log. Pull Request resolved: https://github.com/facebook/rocksdb/pull/5528 Test Plan: make check -j64 Reviewed By: Winger1994 Differential Revision: D16080209 fbshipit-source-id: 6dc3c7680287ee97d673c5e61f89aae1f43e33df
This commit is contained in:
parent
fd1da22111
commit
4028eba67b
@ -37,8 +37,12 @@ class Checkpoint {
|
|||||||
// away from the default, the checkpoint may not contain up-to-date data
|
// away from the default, the checkpoint may not contain up-to-date data
|
||||||
// if WAL writing is not always enabled.
|
// if WAL writing is not always enabled.
|
||||||
// Flush will always trigger if it is 2PC.
|
// Flush will always trigger if it is 2PC.
|
||||||
|
// sequence_number_ptr: if it is not nullptr, the value it points to will be
|
||||||
|
// set to the DB's sequence number. The default value of this parameter is
|
||||||
|
// nullptr.
|
||||||
virtual Status CreateCheckpoint(const std::string& checkpoint_dir,
|
virtual Status CreateCheckpoint(const std::string& checkpoint_dir,
|
||||||
uint64_t log_size_for_flush = 0);
|
uint64_t log_size_for_flush = 0,
|
||||||
|
uint64_t* sequence_number_ptr = nullptr);
|
||||||
|
|
||||||
// Exports all live SST files of a specified Column Family onto export_dir,
|
// Exports all live SST files of a specified Column Family onto export_dir,
|
||||||
// returning SST files information in metadata.
|
// returning SST files information in metadata.
|
||||||
|
@ -35,7 +35,8 @@ Status Checkpoint::Create(DB* db, Checkpoint** checkpoint_ptr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Status Checkpoint::CreateCheckpoint(const std::string& /*checkpoint_dir*/,
|
Status Checkpoint::CreateCheckpoint(const std::string& /*checkpoint_dir*/,
|
||||||
uint64_t /*log_size_for_flush*/) {
|
uint64_t /*log_size_for_flush*/,
|
||||||
|
uint64_t* /*sequence_number_ptr*/) {
|
||||||
return Status::NotSupported("");
|
return Status::NotSupported("");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,7 +70,8 @@ Status Checkpoint::ExportColumnFamily(
|
|||||||
|
|
||||||
// Builds an openable snapshot of RocksDB
|
// Builds an openable snapshot of RocksDB
|
||||||
Status CheckpointImpl::CreateCheckpoint(const std::string& checkpoint_dir,
|
Status CheckpointImpl::CreateCheckpoint(const std::string& checkpoint_dir,
|
||||||
uint64_t log_size_for_flush) {
|
uint64_t log_size_for_flush,
|
||||||
|
uint64_t* sequence_number_ptr) {
|
||||||
DBOptions db_options = db_->GetDBOptions();
|
DBOptions db_options = db_->GetDBOptions();
|
||||||
|
|
||||||
Status s = db_->GetEnv()->FileExists(checkpoint_dir);
|
Status s = db_->GetEnv()->FileExists(checkpoint_dir);
|
||||||
@ -145,6 +147,9 @@ Status CheckpointImpl::CreateCheckpoint(const std::string& checkpoint_dir,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (s.ok()) {
|
if (s.ok()) {
|
||||||
|
if (sequence_number_ptr != nullptr) {
|
||||||
|
*sequence_number_ptr = sequence_number;
|
||||||
|
}
|
||||||
// here we know that we succeeded and installed the new snapshot
|
// here we know that we succeeded and installed the new snapshot
|
||||||
ROCKS_LOG_INFO(db_options.info_log, "Snapshot DONE. All is good");
|
ROCKS_LOG_INFO(db_options.info_log, "Snapshot DONE. All is good");
|
||||||
ROCKS_LOG_INFO(db_options.info_log, "Snapshot sequence number: %" PRIu64,
|
ROCKS_LOG_INFO(db_options.info_log, "Snapshot sequence number: %" PRIu64,
|
||||||
|
@ -28,7 +28,8 @@ class CheckpointImpl : public Checkpoint {
|
|||||||
// The directory will be an absolute path
|
// The directory will be an absolute path
|
||||||
using Checkpoint::CreateCheckpoint;
|
using Checkpoint::CreateCheckpoint;
|
||||||
virtual Status CreateCheckpoint(const std::string& checkpoint_dir,
|
virtual Status CreateCheckpoint(const std::string& checkpoint_dir,
|
||||||
uint64_t log_size_for_flush) override;
|
uint64_t log_size_for_flush,
|
||||||
|
uint64_t* sequence_number_ptr) override;
|
||||||
|
|
||||||
// Exports all live SST files of a specified Column Family onto export_dir
|
// Exports all live SST files of a specified Column Family onto export_dir
|
||||||
// and returning SST files information in metadata.
|
// and returning SST files information in metadata.
|
||||||
|
Loading…
Reference in New Issue
Block a user