Skip to content

Commit

Permalink
allowing CompactFiles to return new file names
Browse files Browse the repository at this point in the history
Summary:
This is a small API extension to allow the CompactFiles method to return the names of files that were created during the compaction.
Closes #3608

Differential Revision: D7275789

Pulled By: siying

fbshipit-source-id: 1ec0c3954a0f10cd877efb5f29f9be6c7b59e9ba
  • Loading branch information
nivdayan authored and facebook-github-bot committed Mar 15, 2018
1 parent cc118b0 commit da82aab
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 10 deletions.
5 changes: 4 additions & 1 deletion db/db_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,9 @@ class DBImpl : public DB {
ColumnFamilyHandle* column_family,
const std::vector<std::string>& input_file_names,
const int output_level,
const int output_path_id = -1) override;
const int output_path_id = -1,
std::vector<std::string>* const output_file_names
= nullptr) override;

virtual Status PauseBackgroundWork() override;
virtual Status ContinueBackgroundWork() override;
Expand Down Expand Up @@ -881,6 +883,7 @@ class DBImpl : public DB {
Status CompactFilesImpl(const CompactionOptions& compact_options,
ColumnFamilyData* cfd, Version* version,
const std::vector<std::string>& input_file_names,
std::vector<std::string>* const output_file_names,
const int output_level, int output_path_id,
JobContext* job_context, LogBuffer* log_buffer);

Expand Down
14 changes: 12 additions & 2 deletions db/db_impl_compaction_flush.cc
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,8 @@ Status DBImpl::CompactFiles(
const CompactionOptions& compact_options,
ColumnFamilyHandle* column_family,
const std::vector<std::string>& input_file_names,
const int output_level, const int output_path_id) {
const int output_level, const int output_path_id,
std::vector<std::string>* const output_file_names) {
#ifdef ROCKSDB_LITE
// not supported in lite version
return Status::NotSupported("Not supported in ROCKSDB LITE");
Expand All @@ -488,7 +489,7 @@ Status DBImpl::CompactFiles(
WaitForIngestFile();

s = CompactFilesImpl(compact_options, cfd, sv->current,
input_file_names, output_level,
input_file_names, output_file_names, output_level,
output_path_id, &job_context, &log_buffer);
}
if (sv->Unref()) {
Expand Down Expand Up @@ -532,6 +533,7 @@ Status DBImpl::CompactFiles(
Status DBImpl::CompactFilesImpl(
const CompactionOptions& compact_options, ColumnFamilyData* cfd,
Version* version, const std::vector<std::string>& input_file_names,
std::vector<std::string>* const output_file_names,
const int output_level, int output_path_id, JobContext* job_context,
LogBuffer* log_buffer) {
mutex_.AssertHeld();
Expand Down Expand Up @@ -680,6 +682,14 @@ Status DBImpl::CompactFilesImpl(
}
}

if (output_file_names != nullptr) {
for (const auto newf : c->edit()->GetNewFiles()) {
(*output_file_names).push_back(TableFileName(
immutable_db_options_.db_paths, newf.second.fd.GetNumber(),
newf.second.fd.GetPathId()) );
}
}

c.reset();

bg_compaction_scheduled_--;
Expand Down
4 changes: 3 additions & 1 deletion db/db_impl_readonly.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@ class DBImplReadOnly : public DBImpl {
const CompactionOptions& /*compact_options*/,
ColumnFamilyHandle* /*column_family*/,
const std::vector<std::string>& /*input_file_names*/,
const int /*output_level*/, const int /*output_path_id*/ = -1) override {
const int /*output_level*/, const int /*output_path_id*/ = -1,
std::vector<std::string>* const /*output_file_names*/ = nullptr
) override {
return Status::NotSupported("Not supported operation in read only mode.");
}

Expand Down
4 changes: 3 additions & 1 deletion db/db_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2411,7 +2411,9 @@ class ModelDB : public DB {
const CompactionOptions& /*compact_options*/,
ColumnFamilyHandle* /*column_family*/,
const std::vector<std::string>& /*input_file_names*/,
const int /*output_level*/, const int /*output_path_id*/ = -1) override {
const int /*output_level*/, const int /*output_path_id*/ = -1,
std::vector<std::string>* const /*output_file_names*/ = nullptr
) override {
return Status::NotSupported("Not supported operation.");
}

Expand Down
9 changes: 6 additions & 3 deletions include/rocksdb/db.h
Original file line number Diff line number Diff line change
Expand Up @@ -814,14 +814,17 @@ class DB {
const CompactionOptions& compact_options,
ColumnFamilyHandle* column_family,
const std::vector<std::string>& input_file_names,
const int output_level, const int output_path_id = -1) = 0;
const int output_level, const int output_path_id = -1,
std::vector<std::string>* const output_file_names = nullptr) = 0;

virtual Status CompactFiles(
const CompactionOptions& compact_options,
const std::vector<std::string>& input_file_names,
const int output_level, const int output_path_id = -1) {
const int output_level, const int output_path_id = -1,
std::vector<std::string>* const output_file_names = nullptr) {
return CompactFiles(compact_options, DefaultColumnFamily(),
input_file_names, output_level, output_path_id);
input_file_names, output_level, output_path_id,
output_file_names);
}

// This function will wait until all currently running background processes
Expand Down
5 changes: 3 additions & 2 deletions include/rocksdb/utilities/stackable_db.h
Original file line number Diff line number Diff line change
Expand Up @@ -219,10 +219,11 @@ class StackableDB : public DB {
const CompactionOptions& compact_options,
ColumnFamilyHandle* column_family,
const std::vector<std::string>& input_file_names,
const int output_level, const int output_path_id = -1) override {
const int output_level, const int output_path_id = -1,
std::vector<std::string>* const output_file_names = nullptr) override {
return db_->CompactFiles(
compact_options, column_family, input_file_names,
output_level, output_path_id);
output_level, output_path_id, output_file_names);
}

virtual Status PauseBackgroundWork() override {
Expand Down

0 comments on commit da82aab

Please sign in to comment.