@nxtedition/rocksdb 14.0.0 → 15.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +52 -179
- package/deps/rocksdb/rocksdb/BUCK +7 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +29 -14
- package/deps/rocksdb/rocksdb/Directory.Build.props +9 -0
- package/deps/rocksdb/rocksdb/Makefile +6 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +4 -4
- package/deps/rocksdb/rocksdb/ccache_msvc_compiler.bat +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +17 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +8 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +10 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +522 -60
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +69 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +443 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +14 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +28 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +6 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +455 -98
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +13 -1
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +146 -0
- package/deps/rocksdb/rocksdb/db/db_follower_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +5 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +18 -19
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +665 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +83 -0
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +68 -0
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +101 -0
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +44 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +1 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +22 -5
- package/deps/rocksdb/rocksdb/db/log_reader.h +4 -4
- package/deps/rocksdb/rocksdb/db/log_writer.h +1 -1
- package/deps/rocksdb/rocksdb/db/merge_helper.h +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit.cc +477 -139
- package/deps/rocksdb/rocksdb/db/version_edit.h +228 -8
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +333 -0
- package/deps/rocksdb/rocksdb/db/write_thread.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +247 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +3 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.cc +61 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +17 -28
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +16 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +6 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +46 -18
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +18 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +8 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +4 -4
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +1 -0
- package/deps/rocksdb/rocksdb/file/filename.cc +40 -0
- package/deps/rocksdb/rocksdb/file/filename.h +14 -1
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +4 -3
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +26 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +5 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +59 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +24 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +13 -8
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +2 -0
- package/deps/rocksdb/rocksdb/options/options_test.cc +5 -0
- package/deps/rocksdb/rocksdb/src.mk +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +73 -16
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +10 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +32 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +18 -27
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +0 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +5 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +708 -217
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +11 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +5 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +27 -19
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +24 -6
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +51 -18
- package/deps/rocksdb/rocksdb/table/block_based/index_builder_test.cc +183 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +0 -2
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +8 -3
- package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -1
- package/deps/rocksdb/rocksdb/table/table_test.cc +222 -36
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +246 -6
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +86 -0
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +21 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +0 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +12 -12
- package/index.js +27 -37
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
|
@@ -3561,6 +3561,152 @@ TEST_F(DBFlushTest, VerifyOutputRecordCount) {
|
|
|
3561
3561
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
3562
3562
|
}
|
|
3563
3563
|
}
|
|
3564
|
+
|
|
3565
|
+
class DBFlushSuperBlockTest
|
|
3566
|
+
: public DBFlushTest,
|
|
3567
|
+
public ::testing::WithParamInterface<std::tuple<bool, size_t, size_t>> {
|
|
3568
|
+
public:
|
|
3569
|
+
DBFlushSuperBlockTest() : DBFlushTest() {}
|
|
3570
|
+
|
|
3571
|
+
std::string formatKey(int i) {
|
|
3572
|
+
int desired_length = 10;
|
|
3573
|
+
char buffer[64];
|
|
3574
|
+
snprintf(buffer, 64, "%0*d", desired_length, i);
|
|
3575
|
+
return buffer;
|
|
3576
|
+
}
|
|
3577
|
+
|
|
3578
|
+
void VerifyReadWithGet(int key_count) {
|
|
3579
|
+
for (int i = 0; i < key_count; ++i) {
|
|
3580
|
+
PinnableSlice value;
|
|
3581
|
+
ASSERT_OK(Get(formatKey(i), &value));
|
|
3582
|
+
ASSERT_EQ(value.ToString(), added_data[formatKey(i)]);
|
|
3583
|
+
}
|
|
3584
|
+
}
|
|
3585
|
+
|
|
3586
|
+
void VerifyReadWithIterator(int key_count) {
|
|
3587
|
+
{
|
|
3588
|
+
std::unique_ptr<Iterator> it(db_->NewIterator(ReadOptions()));
|
|
3589
|
+
int i = 0;
|
|
3590
|
+
for (it->SeekToFirst(); it->Valid(); it->Next()) {
|
|
3591
|
+
ASSERT_OK(it->status());
|
|
3592
|
+
ASSERT_EQ((it->key()).ToString(), formatKey(i));
|
|
3593
|
+
ASSERT_EQ((it->value()).ToString(), added_data[formatKey(i)]);
|
|
3594
|
+
i++;
|
|
3595
|
+
}
|
|
3596
|
+
ASSERT_OK(it->status());
|
|
3597
|
+
ASSERT_EQ(i, key_count);
|
|
3598
|
+
}
|
|
3599
|
+
}
|
|
3600
|
+
|
|
3601
|
+
protected:
|
|
3602
|
+
Random rnd{123};
|
|
3603
|
+
std::unordered_map<std::string, std::string> added_data;
|
|
3604
|
+
};
|
|
3605
|
+
|
|
3606
|
+
constexpr size_t kLowSpaceOverheadRatio = 256;
|
|
3607
|
+
|
|
3608
|
+
TEST_P(DBFlushSuperBlockTest, SuperBlock) {
|
|
3609
|
+
constexpr int key_count = 12345;
|
|
3610
|
+
Options options;
|
|
3611
|
+
options.env = env_;
|
|
3612
|
+
options.file_checksum_gen_factory = GetFileChecksumGenCrc32cFactory();
|
|
3613
|
+
options.paranoid_file_checks = true;
|
|
3614
|
+
options.write_buffer_size = 1024 * 1024;
|
|
3615
|
+
BlockBasedTableOptions block_options;
|
|
3616
|
+
block_options.block_align = get<0>(GetParam());
|
|
3617
|
+
block_options.index_block_restart_interval = 3;
|
|
3618
|
+
block_options.super_block_alignment_size = get<1>(GetParam());
|
|
3619
|
+
block_options.super_block_alignment_space_overhead_ratio = get<2>(GetParam());
|
|
3620
|
+
options.table_factory.reset(NewBlockBasedTableFactory(block_options));
|
|
3621
|
+
if (block_options.block_align) {
|
|
3622
|
+
// When block align is enabled, disable compression
|
|
3623
|
+
options.compression = kNoCompression;
|
|
3624
|
+
}
|
|
3625
|
+
|
|
3626
|
+
ASSERT_OK(options.table_factory->ValidateOptions(
|
|
3627
|
+
DBOptions(options), ColumnFamilyOptions(options)));
|
|
3628
|
+
|
|
3629
|
+
Reopen(options);
|
|
3630
|
+
|
|
3631
|
+
int super_block_pad_count = 0;
|
|
3632
|
+
int super_block_pad_exceed_limit_count = 0;
|
|
3633
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
3634
|
+
"BlockBasedTableBuilder::WriteMaybeCompressedBlock:"
|
|
3635
|
+
"SuperBlockAlignment",
|
|
3636
|
+
[&super_block_pad_count](void* /*arg*/) { super_block_pad_count++; });
|
|
3637
|
+
SyncPoint::GetInstance()->SetCallBack(
|
|
3638
|
+
"BlockBasedTableBuilder::WriteMaybeCompressedBlock:"
|
|
3639
|
+
"SuperBlockAlignmentPaddingBytesExceedLimit",
|
|
3640
|
+
[&super_block_pad_exceed_limit_count](void* /*arg*/) {
|
|
3641
|
+
super_block_pad_exceed_limit_count++;
|
|
3642
|
+
});
|
|
3643
|
+
SyncPoint::GetInstance()->EnableProcessing();
|
|
3644
|
+
|
|
3645
|
+
// Add lots of keys
|
|
3646
|
+
for (int i = 0; i < key_count; ++i) {
|
|
3647
|
+
added_data[formatKey(i)] = std::string(rnd.RandomString(rnd.Next() % 1000));
|
|
3648
|
+
ASSERT_OK(Put(formatKey(i), added_data[formatKey(i)]));
|
|
3649
|
+
}
|
|
3650
|
+
|
|
3651
|
+
// flush the data in memory to disk to verify with super block alignment, the
|
|
3652
|
+
// data could be read back properly
|
|
3653
|
+
Reopen(options);
|
|
3654
|
+
|
|
3655
|
+
SyncPoint::GetInstance()->DisableProcessing();
|
|
3656
|
+
SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
3657
|
+
|
|
3658
|
+
// When block_align is enabled, super block is always aligned, so there should
|
|
3659
|
+
// be 0 padding for super block alignment
|
|
3660
|
+
if (block_options.super_block_alignment_size != 0 &&
|
|
3661
|
+
!block_options.block_align) {
|
|
3662
|
+
ASSERT_GT(super_block_pad_count, 0);
|
|
3663
|
+
} else {
|
|
3664
|
+
ASSERT_EQ(super_block_pad_count, 0);
|
|
3665
|
+
}
|
|
3666
|
+
|
|
3667
|
+
if (!block_options.block_align &&
|
|
3668
|
+
block_options.super_block_alignment_size != 0 &&
|
|
3669
|
+
block_options.super_block_alignment_space_overhead_ratio ==
|
|
3670
|
+
kLowSpaceOverheadRatio) {
|
|
3671
|
+
ASSERT_GT(super_block_pad_exceed_limit_count, 0);
|
|
3672
|
+
}
|
|
3673
|
+
|
|
3674
|
+
// verify the values are correct
|
|
3675
|
+
VerifyReadWithGet(key_count);
|
|
3676
|
+
Reopen(options);
|
|
3677
|
+
VerifyReadWithIterator(key_count);
|
|
3678
|
+
|
|
3679
|
+
// verify checksum
|
|
3680
|
+
ASSERT_OK(db_->VerifyFileChecksums(ReadOptions()));
|
|
3681
|
+
|
|
3682
|
+
// Reopen options and flip the option of super block configuration, read still
|
|
3683
|
+
// works. This verifies the forward/backward compatibility
|
|
3684
|
+
if (block_options.super_block_alignment_size == 0) {
|
|
3685
|
+
block_options.super_block_alignment_size = 16 * 1024;
|
|
3686
|
+
} else {
|
|
3687
|
+
block_options.super_block_alignment_size = 0;
|
|
3688
|
+
}
|
|
3689
|
+
options.table_factory.reset(NewBlockBasedTableFactory(block_options));
|
|
3690
|
+
|
|
3691
|
+
Reopen(options);
|
|
3692
|
+
|
|
3693
|
+
// verify the values are correct
|
|
3694
|
+
VerifyReadWithGet(key_count);
|
|
3695
|
+
Reopen(options);
|
|
3696
|
+
VerifyReadWithIterator(key_count);
|
|
3697
|
+
|
|
3698
|
+
// verify checksum
|
|
3699
|
+
ASSERT_OK(db_->VerifyFileChecksums(ReadOptions()));
|
|
3700
|
+
}
|
|
3701
|
+
|
|
3702
|
+
INSTANTIATE_TEST_CASE_P(
|
|
3703
|
+
SuperBlockTests, DBFlushSuperBlockTest,
|
|
3704
|
+
testing::Combine(testing::Bool(), testing::Values(0, 32 * 1024, 16 * 1024),
|
|
3705
|
+
// Use very low space overhead ratio to test
|
|
3706
|
+
// the case where required padded bytes is
|
|
3707
|
+
// larger than the max allowed padding size
|
|
3708
|
+
testing::Values(4, kLowSpaceOverheadRatio)));
|
|
3709
|
+
|
|
3564
3710
|
} // namespace ROCKSDB_NAMESPACE
|
|
3565
3711
|
|
|
3566
3712
|
int main(int argc, char** argv) {
|
|
@@ -370,10 +370,10 @@ TEST_F(DBFollowerTest, RetryCatchupManifestRollover) {
|
|
|
370
370
|
|
|
371
371
|
// This test creates 4 L0 files and compacts them. The follower, during catchup,
|
|
372
372
|
// successfully instantiates 4 Versions corresponding to the 4 files (but
|
|
373
|
-
//
|
|
373
|
+
// doesn't install them yet), followed by deleting those 4 and adding a new
|
|
374
374
|
// file from compaction. The test verifies that the 4 L0 files are deleted
|
|
375
375
|
// correctly by the follower.
|
|
376
|
-
// We use
|
|
376
|
+
// We use the Barrier* functions to ensure that the follower first sees the 4
|
|
377
377
|
// L0 files and is able to link them, and then sees the compaction that
|
|
378
378
|
// obsoletes those L0 files (so those L0 files are intermediates that it has
|
|
379
379
|
// to explicitly delete). Suppose we don't have any barriers, its possible
|
|
@@ -1480,6 +1480,12 @@ int DBImpl::FindMinimumEmptyLevelFitting(
|
|
|
1480
1480
|
return minimum_level;
|
|
1481
1481
|
}
|
|
1482
1482
|
|
|
1483
|
+
Status DBImpl::FlushWAL(const FlushWALOptions& options) {
|
|
1484
|
+
WriteOptions write_options;
|
|
1485
|
+
write_options.rate_limiter_priority = options.rate_limiter_priority;
|
|
1486
|
+
return FlushWAL(write_options, options.sync);
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1483
1489
|
Status DBImpl::FlushWAL(const WriteOptions& write_options, bool sync) {
|
|
1484
1490
|
if (manual_wal_flush_) {
|
|
1485
1491
|
IOStatus io_s;
|
|
@@ -484,10 +484,13 @@ class DBImpl : public DB {
|
|
|
484
484
|
const FlushOptions& options,
|
|
485
485
|
const std::vector<ColumnFamilyHandle*>& column_families) override;
|
|
486
486
|
Status FlushWAL(bool sync) override {
|
|
487
|
-
|
|
488
|
-
|
|
487
|
+
FlushWALOptions options;
|
|
488
|
+
options.sync = sync;
|
|
489
|
+
return FlushWAL(options);
|
|
489
490
|
}
|
|
490
491
|
|
|
492
|
+
Status FlushWAL(const FlushWALOptions& options) override;
|
|
493
|
+
|
|
491
494
|
virtual Status FlushWAL(const WriteOptions& write_options, bool sync);
|
|
492
495
|
bool WALBufferIsEmpty();
|
|
493
496
|
Status SyncWAL() override;
|
|
@@ -1843,8 +1843,7 @@ Status DBImpl::ReFitLevel(ColumnFamilyData* cfd, int level, int target_level) {
|
|
|
1843
1843
|
,
|
|
1844
1844
|
LLONG_MAX /* max compaction bytes, not applicable */,
|
|
1845
1845
|
0 /* output path ID, not applicable */, mutable_cf_options.compression,
|
|
1846
|
-
mutable_cf_options.compression_opts,
|
|
1847
|
-
mutable_cf_options.default_write_temperature,
|
|
1846
|
+
mutable_cf_options.compression_opts, Temperature::kUnknown,
|
|
1848
1847
|
0 /* max_subcompactions, not applicable */,
|
|
1849
1848
|
{} /* grandparents, not applicable */,
|
|
1850
1849
|
std::nullopt /* earliest_snapshot */, nullptr /* snapshot_checker */,
|
|
@@ -3861,7 +3860,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3861
3860
|
uint64_t out_file_creation_time = static_cast<uint64_t>(tmp_current_time);
|
|
3862
3861
|
|
|
3863
3862
|
FileOptions copied_file_options = file_options_;
|
|
3864
|
-
copied_file_options.temperature = c->
|
|
3863
|
+
copied_file_options.temperature = c->GetOutputTemperature();
|
|
3865
3864
|
std::unique_ptr<WritableFileWriter> dest_writer;
|
|
3866
3865
|
{
|
|
3867
3866
|
std::unique_ptr<FSWritableFile> dest_file;
|
|
@@ -3879,7 +3878,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3879
3878
|
"NewWritableFile %s\n"
|
|
3880
3879
|
" out_fname=%s, temperature=%s, io_status=%s",
|
|
3881
3880
|
c->column_family_data()->GetName().c_str(), out_fname.c_str(),
|
|
3882
|
-
temperature_to_string[c->
|
|
3881
|
+
temperature_to_string[c->GetOutputTemperature()].c_str(),
|
|
3883
3882
|
io_s.ToString().c_str());
|
|
3884
3883
|
break;
|
|
3885
3884
|
}
|
|
@@ -3901,7 +3900,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3901
3900
|
c->column_family_data()->GetName().c_str(), in_fname.c_str(),
|
|
3902
3901
|
temperature_to_string[in_file->temperature].c_str(),
|
|
3903
3902
|
out_fname.c_str(),
|
|
3904
|
-
temperature_to_string[c->
|
|
3903
|
+
temperature_to_string[c->GetOutputTemperature()].c_str(),
|
|
3905
3904
|
c->mutable_cf_options()
|
|
3906
3905
|
.compaction_options_fifo.trivial_copy_buffer_size);
|
|
3907
3906
|
// Add IO_LOW HINT for compaction
|
|
@@ -3941,7 +3940,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3941
3940
|
c->column_family_data()->GetName().c_str(), in_fname.c_str(),
|
|
3942
3941
|
temperature_to_string[in_file->temperature].c_str(),
|
|
3943
3942
|
out_fname.c_str(),
|
|
3944
|
-
temperature_to_string[c->
|
|
3943
|
+
temperature_to_string[c->GetOutputTemperature()].c_str(),
|
|
3945
3944
|
io_s.ToString().c_str());
|
|
3946
3945
|
break;
|
|
3947
3946
|
}
|
|
@@ -3950,15 +3949,15 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3950
3949
|
io_s = copy_file_io_status;
|
|
3951
3950
|
|
|
3952
3951
|
if (!io_s.ok()) {
|
|
3953
|
-
ROCKS_LOG_BUFFER(
|
|
3954
|
-
|
|
3955
|
-
|
|
3956
|
-
|
|
3957
|
-
|
|
3958
|
-
|
|
3959
|
-
|
|
3960
|
-
|
|
3961
|
-
|
|
3952
|
+
ROCKS_LOG_BUFFER(
|
|
3953
|
+
log_buffer,
|
|
3954
|
+
"[%s] Failed to copy from: %s\n"
|
|
3955
|
+
" temperature=%s, to=%s, temperature=%s, io_status=%s",
|
|
3956
|
+
c->column_family_data()->GetName().c_str(), in_fname.c_str(),
|
|
3957
|
+
temperature_to_string[in_file->temperature].c_str(),
|
|
3958
|
+
out_fname.c_str(),
|
|
3959
|
+
temperature_to_string[c->GetOutputTemperature()].c_str(),
|
|
3960
|
+
io_s.ToString().c_str());
|
|
3962
3961
|
break;
|
|
3963
3962
|
}
|
|
3964
3963
|
ROCKS_LOG_BUFFER(log_buffer,
|
|
@@ -3968,7 +3967,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3968
3967
|
in_fname.c_str(),
|
|
3969
3968
|
temperature_to_string[in_file->temperature].c_str(),
|
|
3970
3969
|
out_fname.c_str(),
|
|
3971
|
-
temperature_to_string[c->
|
|
3970
|
+
temperature_to_string[c->GetOutputTemperature()].c_str(),
|
|
3972
3971
|
io_s.ToString().c_str());
|
|
3973
3972
|
|
|
3974
3973
|
FileMetaData out_file_metadata{
|
|
@@ -3980,7 +3979,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
3980
3979
|
in_file->fd.smallest_seqno,
|
|
3981
3980
|
in_file->fd.largest_seqno,
|
|
3982
3981
|
false /* marked_for_compact */,
|
|
3983
|
-
c->
|
|
3982
|
+
c->GetOutputTemperature() /* temperature */,
|
|
3984
3983
|
in_file->oldest_blob_file_number,
|
|
3985
3984
|
in_file->oldest_ancester_time,
|
|
3986
3985
|
out_file_creation_time,
|
|
@@ -4049,7 +4048,7 @@ Status DBImpl::BackgroundCompaction(bool* made_progress,
|
|
|
4049
4048
|
" temperature=%s, to temperature=%s, status=%s, io_status=%s",
|
|
4050
4049
|
c->column_family_data()->GetName().c_str(), in_fname.c_str(),
|
|
4051
4050
|
temperature_to_string[in_file->temperature].c_str(),
|
|
4052
|
-
temperature_to_string[c->
|
|
4051
|
+
temperature_to_string[c->GetOutputTemperature()].c_str(),
|
|
4053
4052
|
status.ToString().c_str(), io_s.ToString().c_str());
|
|
4054
4053
|
}
|
|
4055
4054
|
}
|
|
@@ -4428,7 +4427,7 @@ Compaction* DBImpl::CreateIntendedCompactionForwardedToBottomPriorityPool(
|
|
|
4428
4427
|
c->output_level(), c->target_output_file_size(),
|
|
4429
4428
|
c->max_compaction_bytes(), c->output_path_id(),
|
|
4430
4429
|
c->output_compression(), c->output_compression_opts(),
|
|
4431
|
-
c->
|
|
4430
|
+
c->GetOutputTemperature(), c->max_subcompactions(),
|
|
4432
4431
|
c->grandparents(), std::nullopt /* earliest_snapshot */,
|
|
4433
4432
|
nullptr /* snapshot_checker */, c->compaction_reason());
|
|
4434
4433
|
|
|
@@ -614,6 +614,11 @@ void DBImpl::PurgeObsoleteFiles(JobContext& state, bool schedule_only) {
|
|
|
614
614
|
case kOptionsFile:
|
|
615
615
|
keep = (number >= optsfile_num2);
|
|
616
616
|
break;
|
|
617
|
+
case kCompactionProgressFile:
|
|
618
|
+
// Keep compaction progress files - they are managed
|
|
619
|
+
// separately by DBImplSecondary for now
|
|
620
|
+
keep = true;
|
|
621
|
+
break;
|
|
617
622
|
case kCurrentFile:
|
|
618
623
|
case kDBLockFile:
|
|
619
624
|
case kIdentityFile:
|