Finish BackupEngine migration to IOStatus (#8940)

Summary:
Updates a few remaining functions that should have been updated
from Status -> IOStatus, and adds to HISTORY for the overall change
including https://github.com/facebook/rocksdb/issues/8820.

This change is for inclusion in version 6.25.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/8940

Test Plan: CI

Reviewed By: zhichao-cao

Differential Revision: D31085029

Pulled By: pdillinger

fbshipit-source-id: 91557c6a39ef1d90357d4f4dcd79af0645d87c7b
main
Peter Dillinger 3 years ago committed by Facebook GitHub Bot
parent 6924869867
commit 5268cdc997
  1. 1
      HISTORY.md
  2. 26
      include/rocksdb/utilities/backup_engine.h
  3. 17
      utilities/backupable/backupable_db.cc

@ -40,6 +40,7 @@
* Made Statistics extend the Customizable class and added a CreateFromString method. Implementations of Statistics need to be registered with the ObjectRegistry and to implement a Name() method in order to be created via this method. * Made Statistics extend the Customizable class and added a CreateFromString method. Implementations of Statistics need to be registered with the ObjectRegistry and to implement a Name() method in order to be created via this method.
* Extended `FlushJobInfo` and `CompactionJobInfo` in listener.h to provide information about the blob files generated by a flush/compaction and garbage collected during compaction in Integrated BlobDB. Added struct members `blob_file_addition_infos` and `blob_file_garbage_infos` that contain this information. * Extended `FlushJobInfo` and `CompactionJobInfo` in listener.h to provide information about the blob files generated by a flush/compaction and garbage collected during compaction in Integrated BlobDB. Added struct members `blob_file_addition_infos` and `blob_file_garbage_infos` that contain this information.
* Extended parameter `output_file_names` of `CompactFiles` API to also include paths of the blob files generated by the compaction in Integrated BlobDB. * Extended parameter `output_file_names` of `CompactFiles` API to also include paths of the blob files generated by the compaction in Integrated BlobDB.
* Most `BackupEngine` functions now return `IOStatus` instead of `Status`. Most existing code should be compatible with this change but some calls might need to be updated.
## 6.24.0 (2021-08-20) ## 6.24.0 (2021-08-20)
### Bug Fixes ### Bug Fixes

@ -392,10 +392,10 @@ class BackupEngineReadOnlyBase {
virtual Status GetBackupInfo(BackupID backup_id, BackupInfo* backup_info, virtual Status GetBackupInfo(BackupID backup_id, BackupInfo* backup_info,
bool include_file_details = false) const = 0; bool include_file_details = false) const = 0;
// Returns info about backups in backup_info // Returns info about non-corrupt backups in backup_infos.
// Setting include_file_details=true provides information about each // Setting include_file_details=true provides information about each
// backed-up file in BackupInfo::file_details and more. // backed-up file in BackupInfo::file_details and more.
virtual void GetBackupInfo(std::vector<BackupInfo>* backup_info, virtual void GetBackupInfo(std::vector<BackupInfo>* backup_infos,
bool include_file_details = false) const = 0; bool include_file_details = false) const = 0;
// Returns info about corrupt backups in corrupt_backups. // Returns info about corrupt backups in corrupt_backups.
@ -475,13 +475,13 @@ class BackupEngineAppendOnlyBase {
// Captures the state of the database by creating a new (latest) backup. // Captures the state of the database by creating a new (latest) backup.
// On success (OK status), the BackupID of the new backup is saved to // On success (OK status), the BackupID of the new backup is saved to
// *new_backup_id when not nullptr. // *new_backup_id when not nullptr.
virtual Status CreateNewBackup(const CreateBackupOptions& options, DB* db, virtual IOStatus CreateNewBackup(const CreateBackupOptions& options, DB* db,
BackupID* new_backup_id = nullptr) { BackupID* new_backup_id = nullptr) {
return CreateNewBackupWithMetadata(options, db, "", new_backup_id); return CreateNewBackupWithMetadata(options, db, "", new_backup_id);
} }
// keep here for backward compatibility. // keep here for backward compatibility.
virtual Status CreateNewBackup( virtual IOStatus CreateNewBackup(
DB* db, bool flush_before_backup = false, DB* db, bool flush_before_backup = false,
std::function<void()> progress_callback = []() {}) { std::function<void()> progress_callback = []() {}) {
CreateBackupOptions options; CreateBackupOptions options;
@ -575,12 +575,12 @@ class BackupEngine : public BackupEngineReadOnlyBase,
// BackupEngineOptions have to be the same as the ones used in previous // BackupEngineOptions have to be the same as the ones used in previous
// BackupEngines for the same backup directory. // BackupEngines for the same backup directory.
static Status Open(const BackupEngineOptions& options, Env* db_env, static IOStatus Open(const BackupEngineOptions& options, Env* db_env,
BackupEngine** backup_engine_ptr); BackupEngine** backup_engine_ptr);
// keep for backward compatibility. // keep for backward compatibility.
static Status Open(Env* db_env, const BackupEngineOptions& options, static IOStatus Open(Env* db_env, const BackupEngineOptions& options,
BackupEngine** backup_engine_ptr) { BackupEngine** backup_engine_ptr) {
return BackupEngine::Open(options, db_env, backup_engine_ptr); return BackupEngine::Open(options, db_env, backup_engine_ptr);
} }
@ -601,11 +601,11 @@ class BackupEngineReadOnly : public BackupEngineReadOnlyBase {
public: public:
virtual ~BackupEngineReadOnly() {} virtual ~BackupEngineReadOnly() {}
static Status Open(const BackupEngineOptions& options, Env* db_env, static IOStatus Open(const BackupEngineOptions& options, Env* db_env,
BackupEngineReadOnly** backup_engine_ptr); BackupEngineReadOnly** backup_engine_ptr);
// keep for backward compatibility. // keep for backward compatibility.
static Status Open(Env* db_env, const BackupEngineOptions& options, static IOStatus Open(Env* db_env, const BackupEngineOptions& options,
BackupEngineReadOnly** backup_engine_ptr) { BackupEngineReadOnly** backup_engine_ptr) {
return BackupEngineReadOnly::Open(options, db_env, backup_engine_ptr); return BackupEngineReadOnly::Open(options, db_env, backup_engine_ptr);
} }
}; };

@ -895,7 +895,7 @@ class BackupEngineImplThreadSafe : public BackupEngine,
} }
// Not public API but needed // Not public API but needed
Status Initialize() { IOStatus Initialize() {
// No locking needed // No locking needed
return impl_.Initialize(); return impl_.Initialize();
} }
@ -912,8 +912,8 @@ class BackupEngineImplThreadSafe : public BackupEngine,
BackupEngineImpl impl_; BackupEngineImpl impl_;
}; };
Status BackupEngine::Open(const BackupEngineOptions& options, Env* env, IOStatus BackupEngine::Open(const BackupEngineOptions& options, Env* env,
BackupEngine** backup_engine_ptr) { BackupEngine** backup_engine_ptr) {
std::unique_ptr<BackupEngineImplThreadSafe> backup_engine( std::unique_ptr<BackupEngineImplThreadSafe> backup_engine(
new BackupEngineImplThreadSafe(options, env)); new BackupEngineImplThreadSafe(options, env));
auto s = backup_engine->Initialize(); auto s = backup_engine->Initialize();
@ -922,7 +922,7 @@ Status BackupEngine::Open(const BackupEngineOptions& options, Env* env,
return s; return s;
} }
*backup_engine_ptr = backup_engine.release(); *backup_engine_ptr = backup_engine.release();
return Status::OK(); return IOStatus::OK();
} }
BackupEngineImpl::BackupEngineImpl(const BackupEngineOptions& options, BackupEngineImpl::BackupEngineImpl(const BackupEngineOptions& options,
@ -2986,10 +2986,11 @@ IOStatus BackupEngineImpl::BackupMeta::StoreToFile(
return io_s; return io_s;
} }
Status BackupEngineReadOnly::Open(const BackupEngineOptions& options, Env* env, IOStatus BackupEngineReadOnly::Open(const BackupEngineOptions& options,
BackupEngineReadOnly** backup_engine_ptr) { Env* env,
BackupEngineReadOnly** backup_engine_ptr) {
if (options.destroy_old_data) { if (options.destroy_old_data) {
return Status::InvalidArgument( return IOStatus::InvalidArgument(
"Can't destroy old data with ReadOnly BackupEngine"); "Can't destroy old data with ReadOnly BackupEngine");
} }
std::unique_ptr<BackupEngineImplThreadSafe> backup_engine( std::unique_ptr<BackupEngineImplThreadSafe> backup_engine(
@ -3000,7 +3001,7 @@ Status BackupEngineReadOnly::Open(const BackupEngineOptions& options, Env* env,
return s; return s;
} }
*backup_engine_ptr = backup_engine.release(); *backup_engine_ptr = backup_engine.release();
return Status::OK(); return IOStatus::OK();
} }
void TEST_EnableWriteFutureSchemaVersion2( void TEST_EnableWriteFutureSchemaVersion2(

Loading…
Cancel
Save