Use SpecialSkipListFactory in RecalculateScoreAfterPicking (#6125)

Summary:
Test DBTestUniversalCompaction.RecalculateScoreAfterPicking was
flaky on ARM, so it now uses SpecialSkipListFactory (like other tests)
for predictable memtable flushes.

Fixes https://github.com/facebook/rocksdb/issues/5736
Pull Request resolved: https://github.com/facebook/rocksdb/pull/6125

Test Plan:
while ./db_universal_compaction_test; do :; done # for a
while on ARM and on Intel (both Linux)

Differential Revision: D18864821

Pulled By: pdillinger

fbshipit-source-id: 2f3ca0ea66ce420dcd6d41b0ec12377112a5a79f
This commit is contained in:
Peter Dillinger 2019-12-09 09:22:07 -08:00 committed by Facebook Github Bot
parent 7d79b32618
commit 3a6d9436e8

View File

@ -1753,13 +1753,14 @@ TEST_P(DBTestUniversalCompaction, RecalculateScoreAfterPicking) {
// scheduling more; otherwise, other CFs/DBs may be delayed unnecessarily. // scheduling more; otherwise, other CFs/DBs may be delayed unnecessarily.
const int kNumFilesTrigger = 8; const int kNumFilesTrigger = 8;
Options options = CurrentOptions(); Options options = CurrentOptions();
options.memtable_factory.reset(
new SpecialSkipListFactory(KNumKeysByGenerateNewFile - 1));
options.compaction_options_universal.max_merge_width = kNumFilesTrigger / 2; options.compaction_options_universal.max_merge_width = kNumFilesTrigger / 2;
options.compaction_options_universal.max_size_amplification_percent = options.compaction_options_universal.max_size_amplification_percent =
static_cast<unsigned int>(-1); static_cast<unsigned int>(-1);
options.compaction_style = kCompactionStyleUniversal; options.compaction_style = kCompactionStyleUniversal;
options.level0_file_num_compaction_trigger = kNumFilesTrigger; options.level0_file_num_compaction_trigger = kNumFilesTrigger;
options.num_levels = num_levels_; options.num_levels = num_levels_;
options.write_buffer_size = 100 << 10; // 100KB
Reopen(options); Reopen(options);
std::atomic<int> num_compactions_attempted(0); std::atomic<int> num_compactions_attempted(0);