#pragma once
#ifndef ROCKSDB_LITE
+#include <cstdint>
#include <string>
#include <vector>
+
#include "rocksdb/status.h"
namespace ROCKSDB_NAMESPACE {
// Creates a Checkpoint object to be used for creating openable snapshots
static Status Create(DB* db, Checkpoint** checkpoint_ptr);
- // Builds an openable snapshot of RocksDB on the same disk, which
- // accepts an output directory on the same disk, and under the directory
- // (1) hard-linked SST files pointing to existing live SST files
- // SST files will be copied if output directory is on a different filesystem
- // (2) a copied manifest files and other files
- // The directory should not already exist and will be created by this API.
- // The directory will be an absolute path
+ // Builds an openable snapshot of RocksDB. checkpoint_dir should contain an
+ // absolute path. The specified directory should not exist, since it will be
+ // created by the API.
+ // When a checkpoint is created,
+ // (1) SST and blob files are hard linked if the output directory is on the
+ // same filesystem as the database, and copied otherwise.
+ // (2) other required files (like MANIFEST) are always copied.
// log_size_for_flush: if the total log file size is equal or larger than
// this value, then a flush is triggered for all the column families. The
// default value is 0, which means flush is always triggered. If you move
// if WAL writing is not always enabled.
// 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.
+ // set to a sequence number guaranteed to be part of the DB, not necessarily
+ // the latest. The default value of this parameter is nullptr.
+ // NOTE: db_paths and cf_paths are not supported for creating checkpoints
+ // and NotSupported will be returned when the DB (without WALs) uses more
+ // than one directory.
virtual Status CreateCheckpoint(const std::string& checkpoint_dir,
uint64_t log_size_for_flush = 0,
uint64_t* sequence_number_ptr = nullptr);