@nxtedition/rocksdb 8.1.3 → 8.1.4
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/deps/rocksdb/rocksdb/CMakeLists.txt +0 -9
- package/deps/rocksdb/rocksdb/Makefile +1 -13
- package/deps/rocksdb/rocksdb/TARGETS +0 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +0 -11
- package/deps/rocksdb/rocksdb/db/builder.cc +4 -13
- package/deps/rocksdb/rocksdb/db/builder.h +1 -2
- package/deps/rocksdb/rocksdb/db/c.cc +0 -15
- package/deps/rocksdb/rocksdb/db/c_test.c +0 -3
- package/deps/rocksdb/rocksdb/db/column_family.cc +5 -11
- package/deps/rocksdb/rocksdb/db/column_family.h +0 -20
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +0 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +37 -31
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +0 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -24
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +1 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +2 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +6 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +26 -104
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +0 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +18 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +16 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +6 -19
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +22 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +52 -81
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +2 -8
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +0 -8
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +138 -266
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -86
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +123 -897
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +20 -31
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +9 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +28 -121
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +0 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +4 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +0 -10
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +4 -325
- package/deps/rocksdb/rocksdb/db/db_test.cc +0 -3
- package/deps/rocksdb/rocksdb/db/db_test2.cc +8 -233
- package/deps/rocksdb/rocksdb/db/db_test_util.h +0 -3
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +0 -129
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +0 -21
- package/deps/rocksdb/rocksdb/db/dbformat.cc +0 -25
- package/deps/rocksdb/rocksdb/db/dbformat.h +0 -2
- package/deps/rocksdb/rocksdb/db/experimental.cc +2 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +0 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +13 -92
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +1 -38
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +110 -14
- package/deps/rocksdb/rocksdb/db/flush_job.cc +4 -6
- package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +0 -4
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +53 -56
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +1 -1
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +0 -4
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +10 -10
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +22 -65
- package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -54
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +26 -26
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +1 -3
- package/deps/rocksdb/rocksdb/db/version_builder.cc +43 -90
- package/deps/rocksdb/rocksdb/db/version_builder.h +0 -20
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +93 -218
- package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -27
- package/deps/rocksdb/rocksdb/db/version_edit.h +9 -33
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +6 -13
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +6 -17
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +17 -19
- package/deps/rocksdb/rocksdb/db/version_set.cc +26 -166
- package/deps/rocksdb/rocksdb/db/version_set.h +2 -32
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +31 -65
- package/deps/rocksdb/rocksdb/db/write_thread.cc +2 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +0 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +32 -31
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +1 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +6 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +0 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +4 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +15 -16
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +1 -13
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +75 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +0 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +0 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +1 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +3 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +0 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +9 -69
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/memory/arena.cc +87 -23
- package/deps/rocksdb/rocksdb/memory/arena.h +31 -25
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +0 -90
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +26 -26
- package/deps/rocksdb/rocksdb/src.mk +0 -2
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +2 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -3
- package/deps/rocksdb/rocksdb/table/format.cc +20 -24
- package/deps/rocksdb/rocksdb/table/format.h +2 -5
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +105 -54
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +0 -80
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +1 -1
- package/deps/rocksdb/rocksdb/table/table_test.cc +6 -7
- package/deps/rocksdb/rocksdb/test_util/testutil.h +0 -10
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +2 -2
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/status.cc +0 -7
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +74 -250
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -199
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +0 -39
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +0 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -59
- package/deps/rocksdb/rocksdb.gyp +0 -3
- package/index.js +2 -2
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/port/mmap.cc +0 -98
- package/deps/rocksdb/rocksdb/port/mmap.h +0 -70
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +0 -142
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +0 -241
|
@@ -479,10 +479,7 @@ TEST_F(DBRangeDelTest, ValidUniversalSubcompactionBoundaries) {
|
|
|
479
479
|
std::vector<std::string> values;
|
|
480
480
|
// Write 100KB (100 values, each 1K)
|
|
481
481
|
for (int k = 0; k < kNumPerFile; k++) {
|
|
482
|
-
|
|
483
|
-
// prematurely cause auto compaction due to range tombstone adding
|
|
484
|
-
// additional compensated file size
|
|
485
|
-
values.push_back(rnd.RandomString((i == kNumLevels - 2) ? 600 : 990));
|
|
482
|
+
values.push_back(rnd.RandomString(990));
|
|
486
483
|
ASSERT_OK(Put(Key(j * kNumPerFile + k), values[k]));
|
|
487
484
|
}
|
|
488
485
|
// put extra key to trigger flush
|
|
@@ -495,13 +492,7 @@ TEST_F(DBRangeDelTest, ValidUniversalSubcompactionBoundaries) {
|
|
|
495
492
|
}
|
|
496
493
|
ASSERT_OK(dbfull()->TEST_WaitForCompact());
|
|
497
494
|
ASSERT_EQ(NumTableFilesAtLevel(0), 0);
|
|
498
|
-
|
|
499
|
-
// For the highest level, value size is smaller (see Put() above),
|
|
500
|
-
// so output file number is smaller.
|
|
501
|
-
ASSERT_GT(NumTableFilesAtLevel(kNumLevels - 1 - i), kFilesPerLevel - 2);
|
|
502
|
-
} else {
|
|
503
|
-
ASSERT_GT(NumTableFilesAtLevel(kNumLevels - 1 - i), kFilesPerLevel - 1);
|
|
504
|
-
}
|
|
495
|
+
ASSERT_GT(NumTableFilesAtLevel(kNumLevels - 1 - i), kFilesPerLevel - 1);
|
|
505
496
|
}
|
|
506
497
|
// Now L1-L3 are full, when we compact L1->L2 we should see (1) subcompactions
|
|
507
498
|
// happen since input level > 0; (2) range deletions are not dropped since
|
|
@@ -1670,213 +1661,6 @@ TEST_F(DBRangeDelTest, RangeTombstoneWrittenToMinimalSsts) {
|
|
|
1670
1661
|
ASSERT_EQ(1, num_range_deletions);
|
|
1671
1662
|
}
|
|
1672
1663
|
|
|
1673
|
-
// Test SST partitioner cut after every single key
|
|
1674
|
-
class SingleKeySstPartitioner : public SstPartitioner {
|
|
1675
|
-
public:
|
|
1676
|
-
const char* Name() const override { return "SingleKeySstPartitioner"; }
|
|
1677
|
-
|
|
1678
|
-
PartitionerResult ShouldPartition(
|
|
1679
|
-
const PartitionerRequest& /*request*/) override {
|
|
1680
|
-
return kRequired;
|
|
1681
|
-
}
|
|
1682
|
-
|
|
1683
|
-
bool CanDoTrivialMove(const Slice& /*smallest_user_key*/,
|
|
1684
|
-
const Slice& /*largest_user_key*/) override {
|
|
1685
|
-
return false;
|
|
1686
|
-
}
|
|
1687
|
-
};
|
|
1688
|
-
|
|
1689
|
-
class SingleKeySstPartitionerFactory : public SstPartitionerFactory {
|
|
1690
|
-
public:
|
|
1691
|
-
static const char* kClassName() { return "SingleKeySstPartitionerFactory"; }
|
|
1692
|
-
const char* Name() const override { return kClassName(); }
|
|
1693
|
-
|
|
1694
|
-
std::unique_ptr<SstPartitioner> CreatePartitioner(
|
|
1695
|
-
const SstPartitioner::Context& /* context */) const override {
|
|
1696
|
-
return std::unique_ptr<SstPartitioner>(new SingleKeySstPartitioner());
|
|
1697
|
-
}
|
|
1698
|
-
};
|
|
1699
|
-
|
|
1700
|
-
TEST_F(DBRangeDelTest, LevelCompactOutputCutAtRangeTombstoneForTtlFiles) {
|
|
1701
|
-
Options options = CurrentOptions();
|
|
1702
|
-
options.compression = kNoCompression;
|
|
1703
|
-
options.compaction_pri = kMinOverlappingRatio;
|
|
1704
|
-
options.disable_auto_compactions = true;
|
|
1705
|
-
options.ttl = 24 * 60 * 60; // 24 hours
|
|
1706
|
-
options.target_file_size_base = 8 << 10;
|
|
1707
|
-
env_->SetMockSleep();
|
|
1708
|
-
options.env = env_;
|
|
1709
|
-
DestroyAndReopen(options);
|
|
1710
|
-
|
|
1711
|
-
Random rnd(301);
|
|
1712
|
-
// Fill some data so that future compactions are not bottommost level
|
|
1713
|
-
// compaction, and hence they would try cut around files for ttl
|
|
1714
|
-
for (int i = 5; i < 10; ++i) {
|
|
1715
|
-
ASSERT_OK(Put(Key(i), rnd.RandomString(1 << 10)));
|
|
1716
|
-
}
|
|
1717
|
-
ASSERT_OK(Flush());
|
|
1718
|
-
MoveFilesToLevel(3);
|
|
1719
|
-
ASSERT_EQ("0,0,0,1", FilesPerLevel());
|
|
1720
|
-
|
|
1721
|
-
for (int i = 5; i < 10; ++i) {
|
|
1722
|
-
ASSERT_OK(Put(Key(i), rnd.RandomString(1 << 10)));
|
|
1723
|
-
}
|
|
1724
|
-
ASSERT_OK(Flush());
|
|
1725
|
-
MoveFilesToLevel(1);
|
|
1726
|
-
ASSERT_EQ("0,1,0,1", FilesPerLevel());
|
|
1727
|
-
|
|
1728
|
-
env_->MockSleepForSeconds(20 * 60 * 60);
|
|
1729
|
-
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(),
|
|
1730
|
-
Key(11), Key(12)));
|
|
1731
|
-
ASSERT_OK(Put(Key(0), rnd.RandomString(1 << 10)));
|
|
1732
|
-
ASSERT_OK(Flush());
|
|
1733
|
-
ASSERT_EQ("1,1,0,1", FilesPerLevel());
|
|
1734
|
-
// L0 file is new, L1 and L3 file are old and qualified for TTL
|
|
1735
|
-
env_->MockSleepForSeconds(10 * 60 * 60);
|
|
1736
|
-
MoveFilesToLevel(1);
|
|
1737
|
-
// L1 output should be cut into 3 files:
|
|
1738
|
-
// File 0: Key(0)
|
|
1739
|
-
// File 1: (qualified for TTL): Key(5) - Key(10)
|
|
1740
|
-
// File 1: DeleteRange [11, 12)
|
|
1741
|
-
ASSERT_EQ("0,3,0,1", FilesPerLevel());
|
|
1742
|
-
}
|
|
1743
|
-
|
|
1744
|
-
TEST_F(DBRangeDelTest, CompactionEmitRangeTombstoneToSSTPartitioner) {
|
|
1745
|
-
Options options = CurrentOptions();
|
|
1746
|
-
auto factory = std::make_shared<SingleKeySstPartitionerFactory>();
|
|
1747
|
-
options.sst_partitioner_factory = factory;
|
|
1748
|
-
options.disable_auto_compactions = true;
|
|
1749
|
-
DestroyAndReopen(options);
|
|
1750
|
-
|
|
1751
|
-
Random rnd(301);
|
|
1752
|
-
// range deletion keys are not processed when compacting to bottommost level,
|
|
1753
|
-
// so creating a file at older level to make the next compaction not
|
|
1754
|
-
// bottommost level
|
|
1755
|
-
ASSERT_OK(db_->Put(WriteOptions(), Key(4), rnd.RandomString(10)));
|
|
1756
|
-
ASSERT_OK(Flush());
|
|
1757
|
-
MoveFilesToLevel(5);
|
|
1758
|
-
|
|
1759
|
-
ASSERT_OK(db_->Put(WriteOptions(), Key(1), rnd.RandomString(10)));
|
|
1760
|
-
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(2),
|
|
1761
|
-
Key(5)));
|
|
1762
|
-
ASSERT_OK(Flush());
|
|
1763
|
-
ASSERT_EQ(1, NumTableFilesAtLevel(0));
|
|
1764
|
-
MoveFilesToLevel(1);
|
|
1765
|
-
// SSTPartitioner decides to cut when range tombstone start key is passed to
|
|
1766
|
-
// it Note that the range tombstone [2, 5) itself span multiple keys but we
|
|
1767
|
-
// are not able to partition in between yet.
|
|
1768
|
-
ASSERT_EQ(2, NumTableFilesAtLevel(1));
|
|
1769
|
-
}
|
|
1770
|
-
|
|
1771
|
-
TEST_F(DBRangeDelTest, OversizeCompactionGapBetweenPointKeyAndTombstone) {
|
|
1772
|
-
// L2 has two files
|
|
1773
|
-
// L2_0: 0, 1, 2, 3, 4. L2_1: 5, 6, 7
|
|
1774
|
-
// L0 has 0, [5, 6), 8
|
|
1775
|
-
// max_compaction_bytes is less than the size of L2_0 and L2_1.
|
|
1776
|
-
// When compacting L0 into L1, it should split into 3 files.
|
|
1777
|
-
const int kNumPerFile = 4, kNumFiles = 2;
|
|
1778
|
-
Options options = CurrentOptions();
|
|
1779
|
-
options.disable_auto_compactions = true;
|
|
1780
|
-
options.target_file_size_base = 9 * 1024;
|
|
1781
|
-
options.max_compaction_bytes = 9 * 1024;
|
|
1782
|
-
DestroyAndReopen(options);
|
|
1783
|
-
Random rnd(301);
|
|
1784
|
-
for (int i = 0; i < kNumFiles; ++i) {
|
|
1785
|
-
std::vector<std::string> values;
|
|
1786
|
-
for (int j = 0; j < kNumPerFile; j++) {
|
|
1787
|
-
values.push_back(rnd.RandomString(3 << 10));
|
|
1788
|
-
ASSERT_OK(Put(Key(i * kNumPerFile + j), values[j]));
|
|
1789
|
-
}
|
|
1790
|
-
}
|
|
1791
|
-
ASSERT_OK(db_->Flush(FlushOptions()));
|
|
1792
|
-
ASSERT_EQ(1, NumTableFilesAtLevel(0));
|
|
1793
|
-
MoveFilesToLevel(2);
|
|
1794
|
-
ASSERT_EQ(2, NumTableFilesAtLevel(2));
|
|
1795
|
-
ASSERT_OK(Put(Key(0), rnd.RandomString(1 << 10)));
|
|
1796
|
-
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(5),
|
|
1797
|
-
Key(6)));
|
|
1798
|
-
ASSERT_OK(Put(Key(8), rnd.RandomString(1 << 10)));
|
|
1799
|
-
ASSERT_OK(db_->Flush(FlushOptions()));
|
|
1800
|
-
ASSERT_EQ(1, NumTableFilesAtLevel(0));
|
|
1801
|
-
|
|
1802
|
-
ASSERT_OK(dbfull()->TEST_CompactRange(0, nullptr, nullptr, nullptr,
|
|
1803
|
-
true /* disallow_trivial_move */));
|
|
1804
|
-
ASSERT_EQ(3, NumTableFilesAtLevel(1));
|
|
1805
|
-
}
|
|
1806
|
-
|
|
1807
|
-
TEST_F(DBRangeDelTest, OversizeCompactionGapBetweenTombstone) {
|
|
1808
|
-
// L2 has two files
|
|
1809
|
-
// L2_0: 0, 1, 2, 3, 4. L2_1: 5, 6, 7
|
|
1810
|
-
// L0 has two range tombstones [0, 1), [7, 8).
|
|
1811
|
-
// max_compaction_bytes is less than the size of L2_0.
|
|
1812
|
-
// When compacting L0 into L1, the two range tombstones should be
|
|
1813
|
-
// split into two files.
|
|
1814
|
-
const int kNumPerFile = 4, kNumFiles = 2;
|
|
1815
|
-
Options options = CurrentOptions();
|
|
1816
|
-
options.disable_auto_compactions = true;
|
|
1817
|
-
options.target_file_size_base = 9 * 1024;
|
|
1818
|
-
options.max_compaction_bytes = 9 * 1024;
|
|
1819
|
-
DestroyAndReopen(options);
|
|
1820
|
-
Random rnd(301);
|
|
1821
|
-
for (int i = 0; i < kNumFiles; ++i) {
|
|
1822
|
-
std::vector<std::string> values;
|
|
1823
|
-
// Write 12K (4 values, each 3K)
|
|
1824
|
-
for (int j = 0; j < kNumPerFile; j++) {
|
|
1825
|
-
values.push_back(rnd.RandomString(3 << 10));
|
|
1826
|
-
ASSERT_OK(Put(Key(i * kNumPerFile + j), values[j]));
|
|
1827
|
-
}
|
|
1828
|
-
}
|
|
1829
|
-
ASSERT_OK(db_->Flush(FlushOptions()));
|
|
1830
|
-
ASSERT_EQ(1, NumTableFilesAtLevel(0));
|
|
1831
|
-
MoveFilesToLevel(2);
|
|
1832
|
-
ASSERT_EQ(2, NumTableFilesAtLevel(2));
|
|
1833
|
-
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(0),
|
|
1834
|
-
Key(1)));
|
|
1835
|
-
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(7),
|
|
1836
|
-
Key(8)));
|
|
1837
|
-
ASSERT_OK(db_->Flush(FlushOptions()));
|
|
1838
|
-
ASSERT_EQ(1, NumTableFilesAtLevel(0));
|
|
1839
|
-
|
|
1840
|
-
ASSERT_OK(dbfull()->TEST_CompactRange(0, nullptr, nullptr, nullptr,
|
|
1841
|
-
true /* disallow_trivial_move */));
|
|
1842
|
-
// This is L0 -> L1 compaction
|
|
1843
|
-
// The two range tombstones are broken up into two output files
|
|
1844
|
-
// to limit compaction size.
|
|
1845
|
-
ASSERT_EQ(2, NumTableFilesAtLevel(1));
|
|
1846
|
-
}
|
|
1847
|
-
|
|
1848
|
-
TEST_F(DBRangeDelTest, OversizeCompactionPointKeyWithinRangetombstone) {
|
|
1849
|
-
// L2 has two files
|
|
1850
|
-
// L2_0: 0, 1, 2, 3, 4. L2_1: 6, 7, 8
|
|
1851
|
-
// L0 has [0, 9) and point key 5
|
|
1852
|
-
// max_compaction_bytes is less than the size of L2_0.
|
|
1853
|
-
// When compacting L0 into L1, the compaction should cut at point key 5.
|
|
1854
|
-
Options options = CurrentOptions();
|
|
1855
|
-
options.disable_auto_compactions = true;
|
|
1856
|
-
options.target_file_size_base = 9 * 1024;
|
|
1857
|
-
options.max_compaction_bytes = 9 * 1024;
|
|
1858
|
-
DestroyAndReopen(options);
|
|
1859
|
-
Random rnd(301);
|
|
1860
|
-
for (int i = 0; i < 9; ++i) {
|
|
1861
|
-
if (i == 5) {
|
|
1862
|
-
++i;
|
|
1863
|
-
}
|
|
1864
|
-
ASSERT_OK(Put(Key(i), rnd.RandomString(3 << 10)));
|
|
1865
|
-
}
|
|
1866
|
-
ASSERT_OK(db_->Flush(FlushOptions()));
|
|
1867
|
-
ASSERT_EQ(1, NumTableFilesAtLevel(0));
|
|
1868
|
-
MoveFilesToLevel(2);
|
|
1869
|
-
ASSERT_EQ(2, NumTableFilesAtLevel(2));
|
|
1870
|
-
ASSERT_OK(db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), Key(0),
|
|
1871
|
-
Key(9)));
|
|
1872
|
-
ASSERT_OK(Put(Key(5), rnd.RandomString(1 << 10)));
|
|
1873
|
-
ASSERT_OK(db_->Flush(FlushOptions()));
|
|
1874
|
-
ASSERT_EQ(1, NumTableFilesAtLevel(0));
|
|
1875
|
-
ASSERT_OK(dbfull()->TEST_CompactRange(0, nullptr, nullptr, nullptr,
|
|
1876
|
-
true /* disallow_trivial_move */));
|
|
1877
|
-
ASSERT_EQ(2, NumTableFilesAtLevel(1));
|
|
1878
|
-
}
|
|
1879
|
-
|
|
1880
1664
|
TEST_F(DBRangeDelTest, OverlappedTombstones) {
|
|
1881
1665
|
const int kNumPerFile = 4, kNumFiles = 2;
|
|
1882
1666
|
Options options = CurrentOptions();
|
|
@@ -2309,7 +2093,6 @@ TEST_F(DBRangeDelTest, NonOverlappingTombstonAtBoundary) {
|
|
|
2309
2093
|
options.compression = kNoCompression;
|
|
2310
2094
|
options.disable_auto_compactions = true;
|
|
2311
2095
|
options.target_file_size_base = 2 * 1024;
|
|
2312
|
-
options.level_compaction_dynamic_file_size = false;
|
|
2313
2096
|
DestroyAndReopen(options);
|
|
2314
2097
|
|
|
2315
2098
|
Random rnd(301);
|
|
@@ -2725,7 +2508,7 @@ TEST_F(DBRangeDelTest, LeftSentinelKeyTest) {
|
|
|
2725
2508
|
options.compression = kNoCompression;
|
|
2726
2509
|
options.disable_auto_compactions = true;
|
|
2727
2510
|
options.target_file_size_base = 3 * 1024;
|
|
2728
|
-
options.max_compaction_bytes =
|
|
2511
|
+
options.max_compaction_bytes = 1024;
|
|
2729
2512
|
|
|
2730
2513
|
DestroyAndReopen(options);
|
|
2731
2514
|
// L2
|
|
@@ -2771,7 +2554,7 @@ TEST_F(DBRangeDelTest, LeftSentinelKeyTestWithNewerKey) {
|
|
|
2771
2554
|
options.compression = kNoCompression;
|
|
2772
2555
|
options.disable_auto_compactions = true;
|
|
2773
2556
|
options.target_file_size_base = 3 * 1024;
|
|
2774
|
-
options.max_compaction_bytes =
|
|
2557
|
+
options.max_compaction_bytes = 1024;
|
|
2775
2558
|
|
|
2776
2559
|
DestroyAndReopen(options);
|
|
2777
2560
|
// L2
|
|
@@ -3013,110 +2796,6 @@ TEST_F(DBRangeDelTest, RangeTombstoneRespectIterateUpperBound) {
|
|
|
3013
2796
|
ASSERT_OK(iter->status());
|
|
3014
2797
|
}
|
|
3015
2798
|
|
|
3016
|
-
TEST_F(DBRangeDelTest, RangetombesoneCompensateFilesize) {
|
|
3017
|
-
Options opts = CurrentOptions();
|
|
3018
|
-
opts.disable_auto_compactions = true;
|
|
3019
|
-
DestroyAndReopen(opts);
|
|
3020
|
-
|
|
3021
|
-
std::vector<std::string> values;
|
|
3022
|
-
Random rnd(301);
|
|
3023
|
-
// file in L2
|
|
3024
|
-
values.push_back(rnd.RandomString(1 << 10));
|
|
3025
|
-
ASSERT_OK(Put("a", values.back()));
|
|
3026
|
-
values.push_back(rnd.RandomString(1 << 10));
|
|
3027
|
-
ASSERT_OK(Put("b", values.back()));
|
|
3028
|
-
ASSERT_OK(Flush());
|
|
3029
|
-
MoveFilesToLevel(2);
|
|
3030
|
-
uint64_t l2_size = 0;
|
|
3031
|
-
ASSERT_OK(Size("a", "c", 0 /* cf */, &l2_size));
|
|
3032
|
-
ASSERT_GT(l2_size, 0);
|
|
3033
|
-
// file in L1
|
|
3034
|
-
values.push_back(rnd.RandomString(1 << 10));
|
|
3035
|
-
ASSERT_OK(Put("d", values.back()));
|
|
3036
|
-
values.push_back(rnd.RandomString(1 << 10));
|
|
3037
|
-
ASSERT_OK(Put("e", values.back()));
|
|
3038
|
-
ASSERT_OK(Flush());
|
|
3039
|
-
MoveFilesToLevel(1);
|
|
3040
|
-
uint64_t l1_size = 0;
|
|
3041
|
-
ASSERT_OK(Size("d", "f", 0 /* cf */, &l1_size));
|
|
3042
|
-
ASSERT_GT(l1_size, 0);
|
|
3043
|
-
|
|
3044
|
-
ASSERT_OK(
|
|
3045
|
-
db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), "a", "f"));
|
|
3046
|
-
ASSERT_OK(Flush());
|
|
3047
|
-
// Range deletion compensated size computed during flush time
|
|
3048
|
-
std::vector<std::vector<FileMetaData>> level_to_files;
|
|
3049
|
-
dbfull()->TEST_GetFilesMetaData(dbfull()->DefaultColumnFamily(),
|
|
3050
|
-
&level_to_files);
|
|
3051
|
-
ASSERT_EQ(level_to_files[0].size(), 1);
|
|
3052
|
-
ASSERT_EQ(level_to_files[0][0].compensated_range_deletion_size,
|
|
3053
|
-
l1_size + l2_size);
|
|
3054
|
-
ASSERT_EQ(level_to_files[1].size(), 1);
|
|
3055
|
-
ASSERT_EQ(level_to_files[1][0].compensated_range_deletion_size, 0);
|
|
3056
|
-
ASSERT_EQ(level_to_files[2].size(), 1);
|
|
3057
|
-
ASSERT_EQ(level_to_files[2][0].compensated_range_deletion_size, 0);
|
|
3058
|
-
|
|
3059
|
-
// Range deletion compensated size computed during compaction time
|
|
3060
|
-
ASSERT_OK(dbfull()->TEST_CompactRange(0, nullptr, nullptr, nullptr,
|
|
3061
|
-
true /* disallow_trivial_move */));
|
|
3062
|
-
ASSERT_EQ(NumTableFilesAtLevel(0), 0);
|
|
3063
|
-
ASSERT_EQ(NumTableFilesAtLevel(1), 1);
|
|
3064
|
-
ASSERT_EQ(NumTableFilesAtLevel(2), 1);
|
|
3065
|
-
dbfull()->TEST_GetFilesMetaData(dbfull()->DefaultColumnFamily(),
|
|
3066
|
-
&level_to_files);
|
|
3067
|
-
ASSERT_EQ(level_to_files[1].size(), 1);
|
|
3068
|
-
ASSERT_EQ(level_to_files[1][0].compensated_range_deletion_size, l2_size);
|
|
3069
|
-
ASSERT_EQ(level_to_files[2].size(), 1);
|
|
3070
|
-
ASSERT_EQ(level_to_files[2][0].compensated_range_deletion_size, 0);
|
|
3071
|
-
}
|
|
3072
|
-
|
|
3073
|
-
TEST_F(DBRangeDelTest, RangetombesoneCompensateFilesizePersistDuringReopen) {
|
|
3074
|
-
Options opts = CurrentOptions();
|
|
3075
|
-
opts.disable_auto_compactions = true;
|
|
3076
|
-
DestroyAndReopen(opts);
|
|
3077
|
-
|
|
3078
|
-
std::vector<std::string> values;
|
|
3079
|
-
Random rnd(301);
|
|
3080
|
-
values.push_back(rnd.RandomString(1 << 10));
|
|
3081
|
-
ASSERT_OK(Put("a", values.back()));
|
|
3082
|
-
values.push_back(rnd.RandomString(1 << 10));
|
|
3083
|
-
ASSERT_OK(Put("b", values.back()));
|
|
3084
|
-
ASSERT_OK(Flush());
|
|
3085
|
-
MoveFilesToLevel(2);
|
|
3086
|
-
|
|
3087
|
-
ASSERT_OK(
|
|
3088
|
-
db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), "a", "c"));
|
|
3089
|
-
ASSERT_OK(Flush());
|
|
3090
|
-
MoveFilesToLevel(1);
|
|
3091
|
-
|
|
3092
|
-
ASSERT_OK(
|
|
3093
|
-
db_->DeleteRange(WriteOptions(), db_->DefaultColumnFamily(), "a", "z"));
|
|
3094
|
-
ASSERT_OK(Flush());
|
|
3095
|
-
|
|
3096
|
-
std::vector<std::vector<FileMetaData>> level_to_files;
|
|
3097
|
-
dbfull()->TEST_GetFilesMetaData(dbfull()->DefaultColumnFamily(),
|
|
3098
|
-
&level_to_files);
|
|
3099
|
-
ASSERT_EQ(level_to_files[0].size(), 1);
|
|
3100
|
-
ASSERT_EQ(level_to_files[1].size(), 1);
|
|
3101
|
-
ASSERT_EQ(level_to_files[2].size(), 1);
|
|
3102
|
-
uint64_t l2_size = level_to_files[2][0].fd.GetFileSize();
|
|
3103
|
-
uint64_t l1_size = level_to_files[1][0].fd.GetFileSize();
|
|
3104
|
-
ASSERT_GT(l2_size, 0);
|
|
3105
|
-
ASSERT_GT(l1_size, 0);
|
|
3106
|
-
ASSERT_EQ(level_to_files[0][0].compensated_range_deletion_size,
|
|
3107
|
-
l1_size + l2_size);
|
|
3108
|
-
ASSERT_EQ(level_to_files[1][0].compensated_range_deletion_size, l2_size);
|
|
3109
|
-
|
|
3110
|
-
Reopen(opts);
|
|
3111
|
-
dbfull()->TEST_GetFilesMetaData(dbfull()->DefaultColumnFamily(),
|
|
3112
|
-
&level_to_files);
|
|
3113
|
-
ASSERT_EQ(level_to_files[0].size(), 1);
|
|
3114
|
-
ASSERT_EQ(level_to_files[0][0].compensated_range_deletion_size,
|
|
3115
|
-
l1_size + l2_size);
|
|
3116
|
-
ASSERT_EQ(level_to_files[1].size(), 1);
|
|
3117
|
-
ASSERT_EQ(level_to_files[1][0].compensated_range_deletion_size, l2_size);
|
|
3118
|
-
}
|
|
3119
|
-
|
|
3120
2799
|
#endif // ROCKSDB_LITE
|
|
3121
2800
|
|
|
3122
2801
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -1203,8 +1203,6 @@ void CheckColumnFamilyMeta(
|
|
|
1203
1203
|
file_meta_from_files.file_creation_time);
|
|
1204
1204
|
ASSERT_GE(file_meta_from_cf.file_creation_time, start_time);
|
|
1205
1205
|
ASSERT_LE(file_meta_from_cf.file_creation_time, end_time);
|
|
1206
|
-
ASSERT_EQ(file_meta_from_cf.epoch_number,
|
|
1207
|
-
file_meta_from_files.epoch_number);
|
|
1208
1206
|
ASSERT_GE(file_meta_from_cf.oldest_ancester_time, start_time);
|
|
1209
1207
|
ASSERT_LE(file_meta_from_cf.oldest_ancester_time, end_time);
|
|
1210
1208
|
// More from FileStorageInfo
|
|
@@ -1255,7 +1253,6 @@ void CheckLiveFilesMeta(
|
|
|
1255
1253
|
ASSERT_EQ(meta.largestkey, expected_meta.largest.user_key().ToString());
|
|
1256
1254
|
ASSERT_EQ(meta.oldest_blob_file_number,
|
|
1257
1255
|
expected_meta.oldest_blob_file_number);
|
|
1258
|
-
ASSERT_EQ(meta.epoch_number, expected_meta.epoch_number);
|
|
1259
1256
|
|
|
1260
1257
|
// More from FileStorageInfo
|
|
1261
1258
|
ASSERT_EQ(meta.file_type, kTableFile);
|