@nxtedition/rocksdb 7.1.32 → 7.1.34
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/cache/clock_cache.cc +402 -345
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +121 -64
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +28 -18
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +1 -0
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +2 -0
- package/deps/rocksdb/rocksdb/db/builder.cc +2 -1
- package/deps/rocksdb/rocksdb/db/c.cc +563 -673
- package/deps/rocksdb/rocksdb/db/c_test.c +168 -169
- package/deps/rocksdb/rocksdb/db/column_family.cc +16 -15
- package/deps/rocksdb/rocksdb/db/column_family.h +7 -7
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +17 -28
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +8 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +114 -0
- package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/convenience.cc +3 -5
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +10 -14
- package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +9 -13
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +14 -16
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +52 -72
- package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +12 -12
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -2
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +1 -12
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +3 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +26 -0
- package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_iter.cc +12 -6
- package/deps/rocksdb/rocksdb/db/db_iter.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +6 -7
- package/deps/rocksdb/rocksdb/db/db_iter_test.cc +10 -8
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +15 -13
- package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -9
- package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +2 -4
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +7 -4
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +7 -5
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +8 -6
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +18 -23
- package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/db_test.cc +10 -5
- package/deps/rocksdb/rocksdb/db/db_test2.cc +172 -169
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +68 -66
- package/deps/rocksdb/rocksdb/db/db_test_util.h +1 -3
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +31 -39
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +182 -2
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +43 -40
- package/deps/rocksdb/rocksdb/db/dbformat.h +15 -0
- package/deps/rocksdb/rocksdb/db/dbformat_test.cc +35 -34
- package/deps/rocksdb/rocksdb/db/deletefile_test.cc +10 -11
- package/deps/rocksdb/rocksdb/db/error_handler.cc +6 -6
- package/deps/rocksdb/rocksdb/db/error_handler.h +93 -94
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +1 -1
- package/deps/rocksdb/rocksdb/db/event_helpers.h +3 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +16 -17
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -2
- package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -0
- package/deps/rocksdb/rocksdb/db/file_indexer.h +2 -1
- package/deps/rocksdb/rocksdb/db/file_indexer_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/filename_test.cc +27 -29
- package/deps/rocksdb/rocksdb/db/flush_job.cc +7 -13
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +15 -21
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +7 -6
- package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +4 -2
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +2 -2
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +59 -14
- package/deps/rocksdb/rocksdb/db/internal_stats.h +27 -11
- package/deps/rocksdb/rocksdb/db/job_context.h +5 -6
- package/deps/rocksdb/rocksdb/db/listener_test.cc +21 -23
- package/deps/rocksdb/rocksdb/db/log_reader.cc +7 -11
- package/deps/rocksdb/rocksdb/db/log_reader.h +4 -6
- package/deps/rocksdb/rocksdb/db/log_test.cc +6 -12
- package/deps/rocksdb/rocksdb/db/log_writer.h +1 -1
- package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +0 -1
- package/deps/rocksdb/rocksdb/db/lookup_key.h +4 -1
- package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -1
- package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +3 -5
- package/deps/rocksdb/rocksdb/db/memtable.cc +34 -22
- package/deps/rocksdb/rocksdb/db/memtable.h +4 -6
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +7 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +37 -13
- package/deps/rocksdb/rocksdb/db/merge_context.h +1 -0
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +128 -14
- package/deps/rocksdb/rocksdb/db/merge_helper.h +15 -7
- package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +5 -6
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/options_file_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +55 -43
- package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +288 -299
- package/deps/rocksdb/rocksdb/db/prefix_test.cc +22 -27
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +7 -8
- package/deps/rocksdb/rocksdb/db/repair_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/snapshot_impl.cc +4 -5
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +10 -4
- package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -4
- package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +6 -7
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +22 -22
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +12 -12
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +6 -8
- package/deps/rocksdb/rocksdb/db/trim_history_scheduler.h +2 -0
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +3 -3
- package/deps/rocksdb/rocksdb/db/version_edit.cc +2 -5
- package/deps/rocksdb/rocksdb/db/version_edit.h +8 -12
- package/deps/rocksdb/rocksdb/db/version_set.cc +74 -102
- package/deps/rocksdb/rocksdb/db/version_set.h +8 -10
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +0 -5
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +47 -45
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +6 -5
- package/deps/rocksdb/rocksdb/db/wal_manager.h +2 -2
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +144 -61
- package/deps/rocksdb/rocksdb/db/write_batch.cc +41 -24
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +2 -7
- package/deps/rocksdb/rocksdb/db/write_batch_test.cc +105 -104
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +5 -4
- package/deps/rocksdb/rocksdb/db/write_controller.h +1 -0
- package/deps/rocksdb/rocksdb/db/write_controller_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/write_thread.cc +8 -6
- package/deps/rocksdb/rocksdb/env/io_posix.h +6 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +134 -65
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +29 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +1 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +14 -4
- package/deps/rocksdb/rocksdb/table/get_context.cc +52 -7
- package/deps/rocksdb/rocksdb/table/get_context.h +1 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +13 -0
- package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +36 -4
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +6 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +23 -28
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +11 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +19 -17
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +10 -7
- package/index.js +14 -16
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -669,33 +669,33 @@ TEST_F(DBTest2, TestWriteBufferNoLimitWithCache) {
|
|
|
669
669
|
}
|
|
670
670
|
|
|
671
671
|
namespace {
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
672
|
+
void ValidateKeyExistence(DB* db, const std::vector<Slice>& keys_must_exist,
|
|
673
|
+
const std::vector<Slice>& keys_must_not_exist) {
|
|
674
|
+
// Ensure that expected keys exist
|
|
675
|
+
std::vector<std::string> values;
|
|
676
|
+
if (keys_must_exist.size() > 0) {
|
|
677
|
+
std::vector<Status> status_list =
|
|
678
678
|
db->MultiGet(ReadOptions(), keys_must_exist, &values);
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
}
|
|
679
|
+
for (size_t i = 0; i < keys_must_exist.size(); i++) {
|
|
680
|
+
ASSERT_OK(status_list[i]);
|
|
682
681
|
}
|
|
682
|
+
}
|
|
683
683
|
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
684
|
+
// Ensure that given keys don't exist
|
|
685
|
+
if (keys_must_not_exist.size() > 0) {
|
|
686
|
+
std::vector<Status> status_list =
|
|
687
687
|
db->MultiGet(ReadOptions(), keys_must_not_exist, &values);
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
}
|
|
688
|
+
for (size_t i = 0; i < keys_must_not_exist.size(); i++) {
|
|
689
|
+
ASSERT_TRUE(status_list[i].IsNotFound());
|
|
691
690
|
}
|
|
692
691
|
}
|
|
692
|
+
}
|
|
693
693
|
|
|
694
|
-
} // namespace
|
|
694
|
+
} // anonymous namespace
|
|
695
695
|
|
|
696
696
|
TEST_F(DBTest2, WalFilterTest) {
|
|
697
697
|
class TestWalFilter : public WalFilter {
|
|
698
|
-
|
|
698
|
+
private:
|
|
699
699
|
// Processing option that is requested to be applied at the given index
|
|
700
700
|
WalFilter::WalProcessingOption wal_processing_option_;
|
|
701
701
|
// Index at which to apply wal_processing_option_
|
|
@@ -705,12 +705,12 @@ TEST_F(DBTest2, WalFilterTest) {
|
|
|
705
705
|
// Current record index, incremented with each record encountered.
|
|
706
706
|
size_t current_record_index_;
|
|
707
707
|
|
|
708
|
-
|
|
708
|
+
public:
|
|
709
709
|
TestWalFilter(WalFilter::WalProcessingOption wal_processing_option,
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
710
|
+
size_t apply_option_for_record_index)
|
|
711
|
+
: wal_processing_option_(wal_processing_option),
|
|
712
|
+
apply_option_at_record_index_(apply_option_for_record_index),
|
|
713
|
+
current_record_index_(0) {}
|
|
714
714
|
|
|
715
715
|
WalProcessingOption LogRecord(const WriteBatch& /*batch*/,
|
|
716
716
|
WriteBatch* /*new_batch*/,
|
|
@@ -719,8 +719,7 @@ TEST_F(DBTest2, WalFilterTest) {
|
|
|
719
719
|
|
|
720
720
|
if (current_record_index_ == apply_option_at_record_index_) {
|
|
721
721
|
option_to_return = wal_processing_option_;
|
|
722
|
-
}
|
|
723
|
-
else {
|
|
722
|
+
} else {
|
|
724
723
|
option_to_return = WalProcessingOption::kContinueProcessing;
|
|
725
724
|
}
|
|
726
725
|
|
|
@@ -747,12 +746,12 @@ TEST_F(DBTest2, WalFilterTest) {
|
|
|
747
746
|
|
|
748
747
|
// Test with all WAL processing options
|
|
749
748
|
for (int option = 0;
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
749
|
+
option < static_cast<int>(
|
|
750
|
+
WalFilter::WalProcessingOption::kWalProcessingOptionMax);
|
|
751
|
+
option++) {
|
|
753
752
|
Options options = OptionsForLogIterTest();
|
|
754
753
|
DestroyAndReopen(options);
|
|
755
|
-
CreateAndReopenWithCF({
|
|
754
|
+
CreateAndReopenWithCF({"pikachu"}, options);
|
|
756
755
|
|
|
757
756
|
// Write given keys in given batches
|
|
758
757
|
for (size_t i = 0; i < batch_keys.size(); i++) {
|
|
@@ -764,28 +763,27 @@ TEST_F(DBTest2, WalFilterTest) {
|
|
|
764
763
|
}
|
|
765
764
|
|
|
766
765
|
WalFilter::WalProcessingOption wal_processing_option =
|
|
767
|
-
|
|
766
|
+
static_cast<WalFilter::WalProcessingOption>(option);
|
|
768
767
|
|
|
769
768
|
// Create a test filter that would apply wal_processing_option at the first
|
|
770
769
|
// record
|
|
771
770
|
size_t apply_option_for_record_index = 1;
|
|
772
771
|
TestWalFilter test_wal_filter(wal_processing_option,
|
|
773
|
-
|
|
772
|
+
apply_option_for_record_index);
|
|
774
773
|
|
|
775
774
|
// Reopen database with option to use WAL filter
|
|
776
775
|
options = OptionsForLogIterTest();
|
|
777
776
|
options.wal_filter = &test_wal_filter;
|
|
778
777
|
Status status =
|
|
779
|
-
|
|
778
|
+
TryReopenWithColumnFamilies({"default", "pikachu"}, options);
|
|
780
779
|
if (wal_processing_option ==
|
|
781
|
-
|
|
780
|
+
WalFilter::WalProcessingOption::kCorruptedRecord) {
|
|
782
781
|
ASSERT_NOK(status);
|
|
783
782
|
// In case of corruption we can turn off paranoid_checks to reopen
|
|
784
783
|
// databse
|
|
785
784
|
options.paranoid_checks = false;
|
|
786
|
-
ReopenWithColumnFamilies({
|
|
787
|
-
}
|
|
788
|
-
else {
|
|
785
|
+
ReopenWithColumnFamilies({"default", "pikachu"}, options);
|
|
786
|
+
} else {
|
|
789
787
|
ASSERT_OK(status);
|
|
790
788
|
}
|
|
791
789
|
|
|
@@ -794,56 +792,54 @@ TEST_F(DBTest2, WalFilterTest) {
|
|
|
794
792
|
std::vector<Slice> keys_must_exist;
|
|
795
793
|
std::vector<Slice> keys_must_not_exist;
|
|
796
794
|
switch (wal_processing_option) {
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
keys_must_exist.push_back(Slice(batch_keys[i][j]));
|
|
804
|
-
}
|
|
805
|
-
}
|
|
806
|
-
break;
|
|
807
|
-
}
|
|
808
|
-
case WalFilter::WalProcessingOption::kIgnoreCurrentRecord: {
|
|
809
|
-
fprintf(stderr,
|
|
810
|
-
"Testing with ignoring record %" ROCKSDB_PRIszt " only\n",
|
|
811
|
-
apply_option_for_record_index);
|
|
812
|
-
// We expect the record with apply_option_for_record_index to be not
|
|
813
|
-
// found.
|
|
814
|
-
for (size_t i = 0; i < batch_keys.size(); i++) {
|
|
815
|
-
for (size_t j = 0; j < batch_keys[i].size(); j++) {
|
|
816
|
-
if (i == apply_option_for_record_index) {
|
|
817
|
-
keys_must_not_exist.push_back(Slice(batch_keys[i][j]));
|
|
818
|
-
}
|
|
819
|
-
else {
|
|
795
|
+
case WalFilter::WalProcessingOption::kCorruptedRecord:
|
|
796
|
+
case WalFilter::WalProcessingOption::kContinueProcessing: {
|
|
797
|
+
fprintf(stderr, "Testing with complete WAL processing\n");
|
|
798
|
+
// we expect all records to be processed
|
|
799
|
+
for (size_t i = 0; i < batch_keys.size(); i++) {
|
|
800
|
+
for (size_t j = 0; j < batch_keys[i].size(); j++) {
|
|
820
801
|
keys_must_exist.push_back(Slice(batch_keys[i][j]));
|
|
821
802
|
}
|
|
822
803
|
}
|
|
804
|
+
break;
|
|
823
805
|
}
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
806
|
+
case WalFilter::WalProcessingOption::kIgnoreCurrentRecord: {
|
|
807
|
+
fprintf(stderr,
|
|
808
|
+
"Testing with ignoring record %" ROCKSDB_PRIszt " only\n",
|
|
809
|
+
apply_option_for_record_index);
|
|
810
|
+
// We expect the record with apply_option_for_record_index to be not
|
|
811
|
+
// found.
|
|
812
|
+
for (size_t i = 0; i < batch_keys.size(); i++) {
|
|
813
|
+
for (size_t j = 0; j < batch_keys[i].size(); j++) {
|
|
814
|
+
if (i == apply_option_for_record_index) {
|
|
815
|
+
keys_must_not_exist.push_back(Slice(batch_keys[i][j]));
|
|
816
|
+
} else {
|
|
817
|
+
keys_must_exist.push_back(Slice(batch_keys[i][j]));
|
|
818
|
+
}
|
|
837
819
|
}
|
|
838
|
-
|
|
839
|
-
|
|
820
|
+
}
|
|
821
|
+
break;
|
|
822
|
+
}
|
|
823
|
+
case WalFilter::WalProcessingOption::kStopReplay: {
|
|
824
|
+
fprintf(stderr,
|
|
825
|
+
"Testing with stopping replay from record %" ROCKSDB_PRIszt
|
|
826
|
+
"\n",
|
|
827
|
+
apply_option_for_record_index);
|
|
828
|
+
// We expect records beyond apply_option_for_record_index to be not
|
|
829
|
+
// found.
|
|
830
|
+
for (size_t i = 0; i < batch_keys.size(); i++) {
|
|
831
|
+
for (size_t j = 0; j < batch_keys[i].size(); j++) {
|
|
832
|
+
if (i >= apply_option_for_record_index) {
|
|
833
|
+
keys_must_not_exist.push_back(Slice(batch_keys[i][j]));
|
|
834
|
+
} else {
|
|
835
|
+
keys_must_exist.push_back(Slice(batch_keys[i][j]));
|
|
836
|
+
}
|
|
840
837
|
}
|
|
841
838
|
}
|
|
839
|
+
break;
|
|
842
840
|
}
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
default:
|
|
846
|
-
FAIL(); // unhandled case
|
|
841
|
+
default:
|
|
842
|
+
FAIL(); // unhandled case
|
|
847
843
|
}
|
|
848
844
|
|
|
849
845
|
bool checked_after_reopen = false;
|
|
@@ -861,7 +857,7 @@ TEST_F(DBTest2, WalFilterTest) {
|
|
|
861
857
|
//(even if they were skipped)
|
|
862
858
|
// reopn database with option to use WAL filter
|
|
863
859
|
options = OptionsForLogIterTest();
|
|
864
|
-
ReopenWithColumnFamilies({
|
|
860
|
+
ReopenWithColumnFamilies({"default", "pikachu"}, options);
|
|
865
861
|
|
|
866
862
|
checked_after_reopen = true;
|
|
867
863
|
}
|
|
@@ -870,7 +866,7 @@ TEST_F(DBTest2, WalFilterTest) {
|
|
|
870
866
|
|
|
871
867
|
TEST_F(DBTest2, WalFilterTestWithChangeBatch) {
|
|
872
868
|
class ChangeBatchHandler : public WriteBatch::Handler {
|
|
873
|
-
|
|
869
|
+
private:
|
|
874
870
|
// Batch to insert keys in
|
|
875
871
|
WriteBatch* new_write_batch_;
|
|
876
872
|
// Number of keys to add in the new batch
|
|
@@ -878,12 +874,12 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatch) {
|
|
|
878
874
|
// Number of keys added to new batch
|
|
879
875
|
size_t num_keys_added_;
|
|
880
876
|
|
|
881
|
-
|
|
877
|
+
public:
|
|
882
878
|
ChangeBatchHandler(WriteBatch* new_write_batch,
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
879
|
+
size_t num_keys_to_add_in_new_batch)
|
|
880
|
+
: new_write_batch_(new_write_batch),
|
|
881
|
+
num_keys_to_add_in_new_batch_(num_keys_to_add_in_new_batch),
|
|
882
|
+
num_keys_added_(0) {}
|
|
887
883
|
void Put(const Slice& key, const Slice& value) override {
|
|
888
884
|
if (num_keys_added_ < num_keys_to_add_in_new_batch_) {
|
|
889
885
|
ASSERT_OK(new_write_batch_->Put(key, value));
|
|
@@ -893,7 +889,7 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatch) {
|
|
|
893
889
|
};
|
|
894
890
|
|
|
895
891
|
class TestWalFilterWithChangeBatch : public WalFilter {
|
|
896
|
-
|
|
892
|
+
private:
|
|
897
893
|
// Index at which to start changing records
|
|
898
894
|
size_t change_records_from_index_;
|
|
899
895
|
// Number of keys to add in the new batch
|
|
@@ -901,12 +897,12 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatch) {
|
|
|
901
897
|
// Current record index, incremented with each record encountered.
|
|
902
898
|
size_t current_record_index_;
|
|
903
899
|
|
|
904
|
-
|
|
900
|
+
public:
|
|
905
901
|
TestWalFilterWithChangeBatch(size_t change_records_from_index,
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
902
|
+
size_t num_keys_to_add_in_new_batch)
|
|
903
|
+
: change_records_from_index_(change_records_from_index),
|
|
904
|
+
num_keys_to_add_in_new_batch_(num_keys_to_add_in_new_batch),
|
|
905
|
+
current_record_index_(0) {}
|
|
910
906
|
|
|
911
907
|
WalProcessingOption LogRecord(const WriteBatch& batch,
|
|
912
908
|
WriteBatch* new_batch,
|
|
@@ -925,7 +921,7 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatch) {
|
|
|
925
921
|
// object, however we modify it for our own purpose here and hence
|
|
926
922
|
// cast the constness away.
|
|
927
923
|
(const_cast<TestWalFilterWithChangeBatch*>(this)
|
|
928
|
-
|
|
924
|
+
->current_record_index_)++;
|
|
929
925
|
|
|
930
926
|
return WalProcessingOption::kContinueProcessing;
|
|
931
927
|
}
|
|
@@ -944,7 +940,7 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatch) {
|
|
|
944
940
|
|
|
945
941
|
Options options = OptionsForLogIterTest();
|
|
946
942
|
DestroyAndReopen(options);
|
|
947
|
-
CreateAndReopenWithCF({
|
|
943
|
+
CreateAndReopenWithCF({"pikachu"}, options);
|
|
948
944
|
|
|
949
945
|
// Write given keys in given batches
|
|
950
946
|
for (size_t i = 0; i < batch_keys.size(); i++) {
|
|
@@ -960,12 +956,12 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatch) {
|
|
|
960
956
|
size_t change_records_from_index = 1;
|
|
961
957
|
size_t num_keys_to_add_in_new_batch = 1;
|
|
962
958
|
TestWalFilterWithChangeBatch test_wal_filter_with_change_batch(
|
|
963
|
-
|
|
959
|
+
change_records_from_index, num_keys_to_add_in_new_batch);
|
|
964
960
|
|
|
965
961
|
// Reopen database with option to use WAL filter
|
|
966
962
|
options = OptionsForLogIterTest();
|
|
967
963
|
options.wal_filter = &test_wal_filter_with_change_batch;
|
|
968
|
-
ReopenWithColumnFamilies({
|
|
964
|
+
ReopenWithColumnFamilies({"default", "pikachu"}, options);
|
|
969
965
|
|
|
970
966
|
// Ensure that all keys exist before change_records_from_index_
|
|
971
967
|
// And after that index only single key exists
|
|
@@ -977,8 +973,7 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatch) {
|
|
|
977
973
|
for (size_t j = 0; j < batch_keys[i].size(); j++) {
|
|
978
974
|
if (i >= change_records_from_index && j >= num_keys_to_add_in_new_batch) {
|
|
979
975
|
keys_must_not_exist.push_back(Slice(batch_keys[i][j]));
|
|
980
|
-
}
|
|
981
|
-
else {
|
|
976
|
+
} else {
|
|
982
977
|
keys_must_exist.push_back(Slice(batch_keys[i][j]));
|
|
983
978
|
}
|
|
984
979
|
}
|
|
@@ -999,7 +994,7 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatch) {
|
|
|
999
994
|
//(even if they were skipped)
|
|
1000
995
|
// reopn database with option to use WAL filter
|
|
1001
996
|
options = OptionsForLogIterTest();
|
|
1002
|
-
ReopenWithColumnFamilies({
|
|
997
|
+
ReopenWithColumnFamilies({"default", "pikachu"}, options);
|
|
1003
998
|
|
|
1004
999
|
checked_after_reopen = true;
|
|
1005
1000
|
}
|
|
@@ -1007,22 +1002,23 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatch) {
|
|
|
1007
1002
|
|
|
1008
1003
|
TEST_F(DBTest2, WalFilterTestWithChangeBatchExtraKeys) {
|
|
1009
1004
|
class TestWalFilterWithChangeBatchAddExtraKeys : public WalFilter {
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1005
|
+
public:
|
|
1006
|
+
WalProcessingOption LogRecord(const WriteBatch& batch,
|
|
1007
|
+
WriteBatch* new_batch,
|
|
1008
|
+
bool* batch_changed) const override {
|
|
1009
|
+
*new_batch = batch;
|
|
1010
|
+
Status s = new_batch->Put("key_extra", "value_extra");
|
|
1011
|
+
if (s.ok()) {
|
|
1012
|
+
*batch_changed = true;
|
|
1013
|
+
} else {
|
|
1014
|
+
assert(false);
|
|
1015
|
+
}
|
|
1016
|
+
return WalProcessingOption::kContinueProcessing;
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
const char* Name() const override {
|
|
1020
|
+
return "WalFilterTestWithChangeBatchExtraKeys";
|
|
1021
|
+
}
|
|
1026
1022
|
};
|
|
1027
1023
|
|
|
1028
1024
|
std::vector<std::vector<std::string>> batch_keys(3);
|
|
@@ -1036,7 +1032,7 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatchExtraKeys) {
|
|
|
1036
1032
|
|
|
1037
1033
|
Options options = OptionsForLogIterTest();
|
|
1038
1034
|
DestroyAndReopen(options);
|
|
1039
|
-
CreateAndReopenWithCF({
|
|
1035
|
+
CreateAndReopenWithCF({"pikachu"}, options);
|
|
1040
1036
|
|
|
1041
1037
|
// Write given keys in given batches
|
|
1042
1038
|
for (size_t i = 0; i < batch_keys.size(); i++) {
|
|
@@ -1059,7 +1055,7 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatchExtraKeys) {
|
|
|
1059
1055
|
// Reopen without filter, now reopen should succeed - previous
|
|
1060
1056
|
// attempt to open must not have altered the db.
|
|
1061
1057
|
options = OptionsForLogIterTest();
|
|
1062
|
-
ReopenWithColumnFamilies({
|
|
1058
|
+
ReopenWithColumnFamilies({"default", "pikachu"}, options);
|
|
1063
1059
|
|
|
1064
1060
|
std::vector<Slice> keys_must_exist;
|
|
1065
1061
|
std::vector<Slice> keys_must_not_exist; // empty vector
|
|
@@ -1075,7 +1071,7 @@ TEST_F(DBTest2, WalFilterTestWithChangeBatchExtraKeys) {
|
|
|
1075
1071
|
|
|
1076
1072
|
TEST_F(DBTest2, WalFilterTestWithColumnFamilies) {
|
|
1077
1073
|
class TestWalFilterWithColumnFamilies : public WalFilter {
|
|
1078
|
-
|
|
1074
|
+
private:
|
|
1079
1075
|
// column_family_id -> log_number map (provided to WALFilter)
|
|
1080
1076
|
std::map<uint32_t, uint64_t> cf_log_number_map_;
|
|
1081
1077
|
// column_family_name -> column_family_id map (provided to WALFilter)
|
|
@@ -1085,31 +1081,34 @@ TEST_F(DBTest2, WalFilterTestWithColumnFamilies) {
|
|
|
1085
1081
|
// during recovery (i.e. aren't already flushed to SST file(s))
|
|
1086
1082
|
// for verification against the keys we expect.
|
|
1087
1083
|
std::map<uint32_t, std::vector<std::string>> cf_wal_keys_;
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
std::map<uint32_t,
|
|
1084
|
+
|
|
1085
|
+
public:
|
|
1086
|
+
void ColumnFamilyLogNumberMap(
|
|
1087
|
+
const std::map<uint32_t, uint64_t>& cf_lognumber_map,
|
|
1088
|
+
const std::map<std::string, uint32_t>& cf_name_id_map) override {
|
|
1089
|
+
cf_log_number_map_ = cf_lognumber_map;
|
|
1090
|
+
cf_name_id_map_ = cf_name_id_map;
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
WalProcessingOption LogRecordFound(unsigned long long log_number,
|
|
1094
|
+
const std::string& /*log_file_name*/,
|
|
1095
|
+
const WriteBatch& batch,
|
|
1096
|
+
WriteBatch* /*new_batch*/,
|
|
1097
|
+
bool* /*batch_changed*/) override {
|
|
1098
|
+
class LogRecordBatchHandler : public WriteBatch::Handler {
|
|
1099
|
+
private:
|
|
1100
|
+
const std::map<uint32_t, uint64_t>& cf_log_number_map_;
|
|
1101
|
+
std::map<uint32_t, std::vector<std::string>>& cf_wal_keys_;
|
|
1105
1102
|
unsigned long long log_number_;
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1103
|
+
|
|
1104
|
+
public:
|
|
1105
|
+
LogRecordBatchHandler(
|
|
1106
|
+
unsigned long long current_log_number,
|
|
1107
|
+
const std::map<uint32_t, uint64_t>& cf_log_number_map,
|
|
1108
|
+
std::map<uint32_t, std::vector<std::string>>& cf_wal_keys)
|
|
1109
|
+
: cf_log_number_map_(cf_log_number_map),
|
|
1110
|
+
cf_wal_keys_(cf_wal_keys),
|
|
1111
|
+
log_number_(current_log_number) {}
|
|
1113
1112
|
|
|
1114
1113
|
Status PutCF(uint32_t column_family_id, const Slice& key,
|
|
1115
1114
|
const Slice& /*value*/) override {
|
|
@@ -1120,8 +1119,8 @@ TEST_F(DBTest2, WalFilterTestWithColumnFamilies) {
|
|
|
1120
1119
|
// (i.e. isn't flushed to SST file(s) for column_family_id)
|
|
1121
1120
|
// add it to the cf_wal_keys_ map for verification.
|
|
1122
1121
|
if (log_number_ >= log_number_for_cf) {
|
|
1123
|
-
cf_wal_keys_[column_family_id].push_back(
|
|
1124
|
-
|
|
1122
|
+
cf_wal_keys_[column_family_id].push_back(
|
|
1123
|
+
std::string(key.data(), key.size()));
|
|
1125
1124
|
}
|
|
1126
1125
|
return Status::OK();
|
|
1127
1126
|
}
|
|
@@ -1134,17 +1133,17 @@ TEST_F(DBTest2, WalFilterTestWithColumnFamilies) {
|
|
|
1134
1133
|
}
|
|
1135
1134
|
|
|
1136
1135
|
return WalProcessingOption::kContinueProcessing;
|
|
1137
|
-
|
|
1136
|
+
}
|
|
1138
1137
|
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1138
|
+
const char* Name() const override {
|
|
1139
|
+
return "WalFilterTestWithColumnFamilies";
|
|
1140
|
+
}
|
|
1142
1141
|
|
|
1143
1142
|
const std::map<uint32_t, std::vector<std::string>>& GetColumnFamilyKeys() {
|
|
1144
1143
|
return cf_wal_keys_;
|
|
1145
1144
|
}
|
|
1146
1145
|
|
|
1147
|
-
const std::map<std::string, uint32_t
|
|
1146
|
+
const std::map<std::string, uint32_t>& GetColumnFamilyNameIdMap() {
|
|
1148
1147
|
return cf_name_id_map_;
|
|
1149
1148
|
}
|
|
1150
1149
|
};
|
|
@@ -1160,7 +1159,7 @@ TEST_F(DBTest2, WalFilterTestWithColumnFamilies) {
|
|
|
1160
1159
|
|
|
1161
1160
|
Options options = OptionsForLogIterTest();
|
|
1162
1161
|
DestroyAndReopen(options);
|
|
1163
|
-
CreateAndReopenWithCF({
|
|
1162
|
+
CreateAndReopenWithCF({"pikachu"}, options);
|
|
1164
1163
|
|
|
1165
1164
|
// Write given keys in given batches
|
|
1166
1165
|
for (size_t i = 0; i < batch_keys_pre_flush.size(); i++) {
|
|
@@ -1174,7 +1173,7 @@ TEST_F(DBTest2, WalFilterTestWithColumnFamilies) {
|
|
|
1174
1173
|
ASSERT_OK(dbfull()->Write(WriteOptions(), &batch));
|
|
1175
1174
|
}
|
|
1176
1175
|
|
|
1177
|
-
//Flush default column-family
|
|
1176
|
+
// Flush default column-family
|
|
1178
1177
|
ASSERT_OK(db_->Flush(FlushOptions(), handles_[0]));
|
|
1179
1178
|
|
|
1180
1179
|
// Do some more writes
|
|
@@ -1208,8 +1207,7 @@ TEST_F(DBTest2, WalFilterTestWithColumnFamilies) {
|
|
|
1208
1207
|
// Reopen database with option to use WAL filter
|
|
1209
1208
|
options = OptionsForLogIterTest();
|
|
1210
1209
|
options.wal_filter = &test_wal_filter_column_families;
|
|
1211
|
-
Status status =
|
|
1212
|
-
TryReopenWithColumnFamilies({ "default", "pikachu" }, options);
|
|
1210
|
+
Status status = TryReopenWithColumnFamilies({"default", "pikachu"}, options);
|
|
1213
1211
|
ASSERT_TRUE(status.ok());
|
|
1214
1212
|
|
|
1215
1213
|
// verify that handles_[0] only has post_flush keys
|
|
@@ -1218,7 +1216,7 @@ TEST_F(DBTest2, WalFilterTestWithColumnFamilies) {
|
|
|
1218
1216
|
auto name_id_map = test_wal_filter_column_families.GetColumnFamilyNameIdMap();
|
|
1219
1217
|
size_t index = 0;
|
|
1220
1218
|
auto keys_cf = cf_wal_keys[name_id_map[kDefaultColumnFamilyName]];
|
|
1221
|
-
//default column-family, only post_flush keys are expected
|
|
1219
|
+
// default column-family, only post_flush keys are expected
|
|
1222
1220
|
for (size_t i = 0; i < batch_keys_post_flush.size(); i++) {
|
|
1223
1221
|
for (size_t j = 0; j < batch_keys_post_flush[i].size(); j++) {
|
|
1224
1222
|
Slice key_from_the_log(keys_cf[index++]);
|
|
@@ -1230,7 +1228,7 @@ TEST_F(DBTest2, WalFilterTestWithColumnFamilies) {
|
|
|
1230
1228
|
|
|
1231
1229
|
index = 0;
|
|
1232
1230
|
keys_cf = cf_wal_keys[name_id_map["pikachu"]];
|
|
1233
|
-
//pikachu column-family, all keys are expected
|
|
1231
|
+
// pikachu column-family, all keys are expected
|
|
1234
1232
|
for (size_t i = 0; i < batch_keys_pre_flush.size(); i++) {
|
|
1235
1233
|
for (size_t j = 0; j < batch_keys_pre_flush[i].size(); j++) {
|
|
1236
1234
|
Slice key_from_the_log(keys_cf[index++]);
|
|
@@ -1280,7 +1278,7 @@ TEST_F(DBTest2, PresetCompressionDict) {
|
|
|
1280
1278
|
#if LZ4_VERSION_NUMBER >= 10400 // r124+
|
|
1281
1279
|
compression_types.push_back(kLZ4Compression);
|
|
1282
1280
|
compression_types.push_back(kLZ4HCCompression);
|
|
1283
|
-
#endif
|
|
1281
|
+
#endif // LZ4_VERSION_NUMBER >= 10400
|
|
1284
1282
|
if (ZSTD_Supported()) {
|
|
1285
1283
|
compression_types.push_back(kZSTD);
|
|
1286
1284
|
}
|
|
@@ -1960,7 +1958,8 @@ TEST_F(DBTest2, CompressionOptions) {
|
|
|
1960
1958
|
|
|
1961
1959
|
class CompactionStallTestListener : public EventListener {
|
|
1962
1960
|
public:
|
|
1963
|
-
CompactionStallTestListener()
|
|
1961
|
+
CompactionStallTestListener()
|
|
1962
|
+
: compacting_files_cnt_(0), compacted_files_cnt_(0) {}
|
|
1964
1963
|
|
|
1965
1964
|
void OnCompactionBegin(DB* /*db*/, const CompactionJobInfo& ci) override {
|
|
1966
1965
|
ASSERT_EQ(ci.cf_name, "default");
|
|
@@ -2039,7 +2038,8 @@ TEST_F(DBTest2, CompactionStall) {
|
|
|
2039
2038
|
options.level0_file_num_compaction_trigger);
|
|
2040
2039
|
ASSERT_GT(listener->compacted_files_cnt_.load(),
|
|
2041
2040
|
10 - options.level0_file_num_compaction_trigger);
|
|
2042
|
-
ASSERT_EQ(listener->compacting_files_cnt_.load(),
|
|
2041
|
+
ASSERT_EQ(listener->compacting_files_cnt_.load(),
|
|
2042
|
+
listener->compacted_files_cnt_.load());
|
|
2043
2043
|
|
|
2044
2044
|
ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
|
|
2045
2045
|
}
|
|
@@ -2664,7 +2664,7 @@ namespace {
|
|
|
2664
2664
|
void CountSyncPoint() {
|
|
2665
2665
|
TEST_SYNC_POINT_CALLBACK("DBTest2::MarkedPoint", nullptr /* arg */);
|
|
2666
2666
|
}
|
|
2667
|
-
} // namespace
|
|
2667
|
+
} // anonymous namespace
|
|
2668
2668
|
|
|
2669
2669
|
TEST_F(DBTest2, SyncPointMarker) {
|
|
2670
2670
|
std::atomic<int> sync_point_called(0);
|
|
@@ -2797,7 +2797,7 @@ TEST_F(DBTest2, ReadAmpBitmap) {
|
|
|
2797
2797
|
}
|
|
2798
2798
|
}
|
|
2799
2799
|
|
|
2800
|
-
#ifndef OS_SOLARIS
|
|
2800
|
+
#ifndef OS_SOLARIS // GetUniqueIdFromFile is not implemented
|
|
2801
2801
|
TEST_F(DBTest2, ReadAmpBitmapLiveInCacheAfterDBClose) {
|
|
2802
2802
|
{
|
|
2803
2803
|
const int kIdBufLen = 100;
|
|
@@ -2899,7 +2899,6 @@ TEST_F(DBTest2, ReadAmpBitmapLiveInCacheAfterDBClose) {
|
|
|
2899
2899
|
size_t total_loaded_bytes_iter2 =
|
|
2900
2900
|
options.statistics->getTickerCount(READ_AMP_TOTAL_READ_BYTES);
|
|
2901
2901
|
|
|
2902
|
-
|
|
2903
2902
|
// Read amp is on average 100% since we read all what we loaded in memory
|
|
2904
2903
|
if (k == 0) {
|
|
2905
2904
|
ASSERT_EQ(total_useful_bytes_iter1 + total_useful_bytes_iter2,
|
|
@@ -2911,7 +2910,7 @@ TEST_F(DBTest2, ReadAmpBitmapLiveInCacheAfterDBClose) {
|
|
|
2911
2910
|
}
|
|
2912
2911
|
}
|
|
2913
2912
|
}
|
|
2914
|
-
#endif
|
|
2913
|
+
#endif // !OS_SOLARIS
|
|
2915
2914
|
|
|
2916
2915
|
#ifndef ROCKSDB_LITE
|
|
2917
2916
|
TEST_F(DBTest2, AutomaticCompactionOverlapManualCompaction) {
|
|
@@ -5192,7 +5191,7 @@ TEST_F(DBTest2, TraceWithFilter) {
|
|
|
5192
5191
|
ColumnFamilyDescriptor("pikachu", ColumnFamilyOptions()));
|
|
5193
5192
|
handles.clear();
|
|
5194
5193
|
|
|
5195
|
-
DB* db3 =
|
|
5194
|
+
DB* db3 = nullptr;
|
|
5196
5195
|
ASSERT_OK(DB::Open(db_opts, dbname3, column_families, &handles, &db3));
|
|
5197
5196
|
|
|
5198
5197
|
env_->SleepForMicroseconds(100);
|
|
@@ -5200,12 +5199,12 @@ TEST_F(DBTest2, TraceWithFilter) {
|
|
|
5200
5199
|
ASSERT_TRUE(db3->Get(ro, handles[0], "a", &value).IsNotFound());
|
|
5201
5200
|
ASSERT_TRUE(db3->Get(ro, handles[0], "g", &value).IsNotFound());
|
|
5202
5201
|
|
|
5203
|
-
//The tracer will not record the READ ops.
|
|
5202
|
+
// The tracer will not record the READ ops.
|
|
5204
5203
|
trace_opts.filter = TraceFilterType::kTraceFilterGet;
|
|
5205
5204
|
std::string trace_filename3 = dbname_ + "/rocksdb.trace_3";
|
|
5206
5205
|
std::unique_ptr<TraceWriter> trace_writer3;
|
|
5207
5206
|
ASSERT_OK(
|
|
5208
|
-
|
|
5207
|
+
NewFileTraceWriter(env_, env_opts, trace_filename3, &trace_writer3));
|
|
5209
5208
|
ASSERT_OK(db3->StartTrace(trace_opts, std::move(trace_writer3)));
|
|
5210
5209
|
|
|
5211
5210
|
ASSERT_OK(db3->Put(wo, handles[0], "a", "1"));
|
|
@@ -5227,7 +5226,7 @@ TEST_F(DBTest2, TraceWithFilter) {
|
|
|
5227
5226
|
|
|
5228
5227
|
std::unique_ptr<TraceReader> trace_reader3;
|
|
5229
5228
|
ASSERT_OK(
|
|
5230
|
-
|
|
5229
|
+
NewFileTraceReader(env_, env_opts, trace_filename3, &trace_reader3));
|
|
5231
5230
|
|
|
5232
5231
|
// Count the number of records in the trace file;
|
|
5233
5232
|
int count = 0;
|
|
@@ -5503,16 +5502,20 @@ TEST_F(DBTest2, TestGetColumnFamilyHandleUnlocked) {
|
|
|
5503
5502
|
port::Thread user_thread1([&]() {
|
|
5504
5503
|
auto cfh = dbi->GetColumnFamilyHandleUnlocked(handles_[0]->GetID());
|
|
5505
5504
|
ASSERT_EQ(cfh->GetID(), handles_[0]->GetID());
|
|
5506
|
-
TEST_SYNC_POINT(
|
|
5507
|
-
|
|
5505
|
+
TEST_SYNC_POINT(
|
|
5506
|
+
"TestGetColumnFamilyHandleUnlocked::GetColumnFamilyHandleUnlocked1");
|
|
5507
|
+
TEST_SYNC_POINT(
|
|
5508
|
+
"TestGetColumnFamilyHandleUnlocked::ReadColumnFamilyHandle1");
|
|
5508
5509
|
ASSERT_EQ(cfh->GetID(), handles_[0]->GetID());
|
|
5509
5510
|
});
|
|
5510
5511
|
|
|
5511
5512
|
port::Thread user_thread2([&]() {
|
|
5512
|
-
TEST_SYNC_POINT(
|
|
5513
|
+
TEST_SYNC_POINT(
|
|
5514
|
+
"TestGetColumnFamilyHandleUnlocked::PreGetColumnFamilyHandleUnlocked2");
|
|
5513
5515
|
auto cfh = dbi->GetColumnFamilyHandleUnlocked(handles_[1]->GetID());
|
|
5514
5516
|
ASSERT_EQ(cfh->GetID(), handles_[1]->GetID());
|
|
5515
|
-
TEST_SYNC_POINT(
|
|
5517
|
+
TEST_SYNC_POINT(
|
|
5518
|
+
"TestGetColumnFamilyHandleUnlocked::GetColumnFamilyHandleUnlocked2");
|
|
5516
5519
|
ASSERT_EQ(cfh->GetID(), handles_[1]->GetID());
|
|
5517
5520
|
});
|
|
5518
5521
|
|
|
@@ -5666,7 +5669,7 @@ class DummyOldStats : public Statistics {
|
|
|
5666
5669
|
std::atomic<int> num_rt{0};
|
|
5667
5670
|
std::atomic<int> num_mt{0};
|
|
5668
5671
|
};
|
|
5669
|
-
} // namespace
|
|
5672
|
+
} // anonymous namespace
|
|
5670
5673
|
|
|
5671
5674
|
TEST_F(DBTest2, OldStatsInterface) {
|
|
5672
5675
|
DummyOldStats* dos = new DummyOldStats();
|