diff --git a/HISTORY.md b/HISTORY.md index b8cf02ced..5473989f7 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,4 +1,8 @@ # Rocksdb Change Log +## Unreleased +### Public API Change +* Options::max_bytes_for_level_multiplier is now a double along with all getters and setters. + ## 4.13.0 (10/18/2016) ### Public API Change * DB::GetOptions() reflect dynamic changed options (i.e. through DB::SetOptions()) and return copy of options instead of reference. diff --git a/db/c.cc b/db/c.cc index f2503cc50..60d4d570d 100644 --- a/db/c.cc +++ b/db/c.cc @@ -1517,8 +1517,8 @@ void rocksdb_options_set_max_bytes_for_level_base( opt->rep.max_bytes_for_level_base = n; } -void rocksdb_options_set_max_bytes_for_level_multiplier( - rocksdb_options_t* opt, int n) { +void rocksdb_options_set_max_bytes_for_level_multiplier(rocksdb_options_t* opt, + double n) { opt->rep.max_bytes_for_level_multiplier = n; } diff --git a/db/compaction_picker.cc b/db/compaction_picker.cc index fd0a46201..abbc9c922 100644 --- a/db/compaction_picker.cc +++ b/db/compaction_picker.cc @@ -1184,7 +1184,8 @@ uint32_t LevelCompactionPicker::GetPathId( return p; } else { current_path_size -= level_size; - level_size *= mutable_cf_options.max_bytes_for_level_multiplier; + level_size = static_cast( + level_size * mutable_cf_options.max_bytes_for_level_multiplier); cur_level++; continue; } diff --git a/db/db_compaction_test.cc b/db/db_compaction_test.cc index 518c63c50..c50e6748d 100644 --- a/db/db_compaction_test.cc +++ b/db/db_compaction_test.cc @@ -1259,7 +1259,8 @@ TEST_F(DBCompactionTest, ManualPartialFill) { uint64_t target_size = 4 * options.max_bytes_for_level_base; for (int32_t i = 1; i < options.num_levels; i++) { ASSERT_LE(SizeAtLevel(i), target_size); - target_size *= options.max_bytes_for_level_multiplier; + target_size = static_cast(target_size * + options.max_bytes_for_level_multiplier); } TEST_SYNC_POINT("DBCompaction::PartialFill:2"); @@ -1336,7 +1337,8 @@ TEST_F(DBCompactionTest, DeleteFileRange) { uint64_t target_size = 4 * options.max_bytes_for_level_base; for (int32_t i = 1; i < options.num_levels; i++) { ASSERT_LE(SizeAtLevel(i), target_size); - target_size *= options.max_bytes_for_level_multiplier; + target_size = static_cast(target_size * + options.max_bytes_for_level_multiplier); } size_t old_num_files = CountFiles(); diff --git a/db/version_set.cc b/db/version_set.cc index df53181c2..7600b0439 100644 --- a/db/version_set.cc +++ b/db/version_set.cc @@ -1980,14 +1980,15 @@ void VersionStorageInfo::CalculateBaseBytes(const ImmutableCFOptions& ioptions, base_level_ = num_levels_ - 1; } else { uint64_t base_bytes_max = options.max_bytes_for_level_base; - uint64_t base_bytes_min = - base_bytes_max / options.max_bytes_for_level_multiplier; + uint64_t base_bytes_min = static_cast( + base_bytes_max / options.max_bytes_for_level_multiplier); // Try whether we can make last level's target size to be max_level_size uint64_t cur_level_size = max_level_size; for (int i = num_levels_ - 2; i >= first_non_empty_level; i--) { // Round up after dividing - cur_level_size /= options.max_bytes_for_level_multiplier; + cur_level_size = static_cast( + cur_level_size / options.max_bytes_for_level_multiplier); } // Calculate base level and its size. @@ -2006,8 +2007,8 @@ void VersionStorageInfo::CalculateBaseBytes(const ImmutableCFOptions& ioptions, base_level_ = first_non_empty_level; while (base_level_ > 1 && cur_level_size > base_bytes_max) { --base_level_; - cur_level_size = - cur_level_size / options.max_bytes_for_level_multiplier; + cur_level_size = static_cast( + cur_level_size / options.max_bytes_for_level_multiplier); } if (cur_level_size > base_bytes_max) { // Even L1 will be too large diff --git a/include/rocksdb/c.h b/include/rocksdb/c.h index fe32a3ba1..959c8e161 100644 --- a/include/rocksdb/c.h +++ b/include/rocksdb/c.h @@ -561,7 +561,7 @@ extern ROCKSDB_LIBRARY_API void rocksdb_options_set_target_file_size_multiplier( extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_bytes_for_level_base( rocksdb_options_t*, uint64_t); extern ROCKSDB_LIBRARY_API void -rocksdb_options_set_max_bytes_for_level_multiplier(rocksdb_options_t*, int); +rocksdb_options_set_max_bytes_for_level_multiplier(rocksdb_options_t*, double); extern ROCKSDB_LIBRARY_API void rocksdb_options_set_max_bytes_for_level_multiplier_additional( rocksdb_options_t*, int* level_values, size_t num_levels); diff --git a/include/rocksdb/options.h b/include/rocksdb/options.h index ff7ea12dd..6da0b3944 100644 --- a/include/rocksdb/options.h +++ b/include/rocksdb/options.h @@ -527,7 +527,7 @@ struct ColumnFamilyOptions { // Default: 10. // // Dynamically changeable through SetOptions() API - int max_bytes_for_level_multiplier; + double max_bytes_for_level_multiplier; // Different max-size multipliers for different levels. // These are multiplied by max_bytes_for_level_multiplier to arrive diff --git a/java/benchmark/src/main/java/org/rocksdb/benchmark/DbBenchmark.java b/java/benchmark/src/main/java/org/rocksdb/benchmark/DbBenchmark.java index 1f805b1e2..9c3f97a33 100644 --- a/java/benchmark/src/main/java/org/rocksdb/benchmark/DbBenchmark.java +++ b/java/benchmark/src/main/java/org/rocksdb/benchmark/DbBenchmark.java @@ -574,12 +574,10 @@ public class DbBenchmark { (Integer)flags_.get(Flag.num_levels)); options.setTargetFileSizeBase( (Integer)flags_.get(Flag.target_file_size_base)); - options.setTargetFileSizeMultiplier( - (Integer)flags_.get(Flag.target_file_size_multiplier)); + options.setTargetFileSizeMultiplier((Double) flags_.get(Flag.target_file_size_multiplier)); options.setMaxBytesForLevelBase( (Integer)flags_.get(Flag.max_bytes_for_level_base)); - options.setMaxBytesForLevelMultiplier( - (Integer)flags_.get(Flag.max_bytes_for_level_multiplier)); + options.setMaxBytesForLevelMultiplier((Double) flags_.get(Flag.max_bytes_for_level_multiplier)); options.setLevelZeroStopWritesTrigger( (Integer)flags_.get(Flag.level0_stop_writes_trigger)); options.setLevelZeroSlowdownWritesTrigger( @@ -1268,7 +1266,7 @@ public class DbBenchmark { max_bytes_for_level_multiplier(10, "A multiplier to compute max bytes for level-N (N >= 2)") { @Override public Object parseValue(String value) { - return Integer.parseInt(value); + return Double.parseDouble(value); } }, level0_stop_writes_trigger(12,"Number of files in level-0\n" + diff --git a/java/rocksjni/options.cc b/java/rocksjni/options.cc index e245a2c79..2722dfc26 100644 --- a/java/rocksjni/options.cc +++ b/java/rocksjni/options.cc @@ -1522,10 +1522,11 @@ void Java_org_rocksdb_Options_setLevelCompactionDynamicLevelBytes( /* * Class: org_rocksdb_Options * Method: maxBytesForLevelMultiplier - * Signature: (J)I + * Signature: (J)D */ -jint Java_org_rocksdb_Options_maxBytesForLevelMultiplier( - JNIEnv* env, jobject jobj, jlong jhandle) { +jdouble Java_org_rocksdb_Options_maxBytesForLevelMultiplier(JNIEnv* env, + jobject jobj, + jlong jhandle) { return reinterpret_cast( jhandle)->max_bytes_for_level_multiplier; } @@ -1533,14 +1534,13 @@ jint Java_org_rocksdb_Options_maxBytesForLevelMultiplier( /* * Class: org_rocksdb_Options * Method: setMaxBytesForLevelMultiplier - * Signature: (JI)V + * Signature: (JD)V */ void Java_org_rocksdb_Options_setMaxBytesForLevelMultiplier( JNIEnv* env, jobject jobj, jlong jhandle, - jint jmax_bytes_for_level_multiplier) { - reinterpret_cast( - jhandle)->max_bytes_for_level_multiplier = - static_cast(jmax_bytes_for_level_multiplier); + jdouble jmax_bytes_for_level_multiplier) { + reinterpret_cast(jhandle)->max_bytes_for_level_multiplier = + static_cast(jmax_bytes_for_level_multiplier); } /* @@ -2823,9 +2823,9 @@ void Java_org_rocksdb_ColumnFamilyOptions_setLevelCompactionDynamicLevelBytes( /* * Class: org_rocksdb_ColumnFamilyOptions * Method: maxBytesForLevelMultiplier - * Signature: (J)I + * Signature: (J)D */ -jint Java_org_rocksdb_ColumnFamilyOptions_maxBytesForLevelMultiplier( +jdouble Java_org_rocksdb_ColumnFamilyOptions_maxBytesForLevelMultiplier( JNIEnv* env, jobject jobj, jlong jhandle) { return reinterpret_cast( jhandle)->max_bytes_for_level_multiplier; @@ -2834,14 +2834,14 @@ jint Java_org_rocksdb_ColumnFamilyOptions_maxBytesForLevelMultiplier( /* * Class: org_rocksdb_ColumnFamilyOptions * Method: setMaxBytesForLevelMultiplier - * Signature: (JI)V + * Signature: (JD)V */ void Java_org_rocksdb_ColumnFamilyOptions_setMaxBytesForLevelMultiplier( JNIEnv* env, jobject jobj, jlong jhandle, - jint jmax_bytes_for_level_multiplier) { - reinterpret_cast( - jhandle)->max_bytes_for_level_multiplier = - static_cast(jmax_bytes_for_level_multiplier); + jdouble jmax_bytes_for_level_multiplier) { + reinterpret_cast(jhandle) + ->max_bytes_for_level_multiplier = + static_cast(jmax_bytes_for_level_multiplier); } /* diff --git a/java/src/main/java/org/rocksdb/ColumnFamilyOptions.java b/java/src/main/java/org/rocksdb/ColumnFamilyOptions.java index c49009347..254da9d32 100644 --- a/java/src/main/java/org/rocksdb/ColumnFamilyOptions.java +++ b/java/src/main/java/org/rocksdb/ColumnFamilyOptions.java @@ -352,14 +352,13 @@ public class ColumnFamilyOptions extends RocksObject } @Override - public ColumnFamilyOptions setMaxBytesForLevelMultiplier( - final int multiplier) { + public ColumnFamilyOptions setMaxBytesForLevelMultiplier(final double multiplier) { setMaxBytesForLevelMultiplier(nativeHandle_, multiplier); return this; } @Override - public int maxBytesForLevelMultiplier() { + public double maxBytesForLevelMultiplier() { return maxBytesForLevelMultiplier(nativeHandle_); } @@ -775,9 +774,8 @@ public class ColumnFamilyOptions extends RocksObject long handle, boolean enableLevelCompactionDynamicLevelBytes); private native boolean levelCompactionDynamicLevelBytes( long handle); - private native void setMaxBytesForLevelMultiplier( - long handle, int multiplier); - private native int maxBytesForLevelMultiplier(long handle); + private native void setMaxBytesForLevelMultiplier(long handle, double multiplier); + private native double maxBytesForLevelMultiplier(long handle); private native void setMaxCompactionBytes(long handle, long maxCompactionBytes); private native long maxCompactionBytes(long handle); private native void setSoftRateLimit( diff --git a/java/src/main/java/org/rocksdb/ColumnFamilyOptionsInterface.java b/java/src/main/java/org/rocksdb/ColumnFamilyOptionsInterface.java index 2ad2457f9..284d2f85b 100644 --- a/java/src/main/java/org/rocksdb/ColumnFamilyOptionsInterface.java +++ b/java/src/main/java/org/rocksdb/ColumnFamilyOptionsInterface.java @@ -456,7 +456,7 @@ public interface ColumnFamilyOptionsInterface { * files and the total size of level-L files for all L. * @return the reference to the current option. */ - Object setMaxBytesForLevelMultiplier(int multiplier); + Object setMaxBytesForLevelMultiplier(double multiplier); /** * The ratio between the total size of level-(L+1) files and the total @@ -466,7 +466,7 @@ public interface ColumnFamilyOptionsInterface { * @return the ratio between the total size of level-(L+1) files and * the total size of level-L files for all L. */ - int maxBytesForLevelMultiplier(); + double maxBytesForLevelMultiplier(); /** * Maximum size of each compaction (not guarantee) diff --git a/java/src/main/java/org/rocksdb/MutableColumnFamilyOptions.java b/java/src/main/java/org/rocksdb/MutableColumnFamilyOptions.java index af3cb2e52..8e86d7f8d 100644 --- a/java/src/main/java/org/rocksdb/MutableColumnFamilyOptions.java +++ b/java/src/main/java/org/rocksdb/MutableColumnFamilyOptions.java @@ -843,14 +843,13 @@ public class MutableColumnFamilyOptions { @Override public MutableColumnFamilyOptionsBuilder setMaxBytesForLevelMultiplier( - final int maxBytesForLevelMultiplier) { - return setInt(CompactionOption.max_bytes_for_level_multiplier, - maxBytesForLevelMultiplier); + final double maxBytesForLevelMultiplier) { + return setDouble(CompactionOption.max_bytes_for_level_multiplier, maxBytesForLevelMultiplier); } @Override - public int maxBytesForLevelMultiplier() { - return getInt(CompactionOption.max_bytes_for_level_multiplier); + public double maxBytesForLevelMultiplier() { + return getDouble(CompactionOption.max_bytes_for_level_multiplier); } @Override diff --git a/java/src/main/java/org/rocksdb/MutableColumnFamilyOptionsInterface.java b/java/src/main/java/org/rocksdb/MutableColumnFamilyOptionsInterface.java index d19acaec9..d1d699360 100644 --- a/java/src/main/java/org/rocksdb/MutableColumnFamilyOptionsInterface.java +++ b/java/src/main/java/org/rocksdb/MutableColumnFamilyOptionsInterface.java @@ -474,7 +474,7 @@ public interface MutableColumnFamilyOptionsInterface { * @param maxBytesForLevelBase maximum bytes for level base. * * @return the reference to the current option. - * @see #setMaxBytesForLevelMultiplier(int) + * @see #setMaxBytesForLevelMultiplier(double) */ MutableColumnFamilyOptionsInterface setMaxBytesForLevelBase( long maxBytesForLevelBase); @@ -505,8 +505,7 @@ public interface MutableColumnFamilyOptionsInterface { * @return the reference to the current option. * @see #setMaxBytesForLevelBase(long) */ - MutableColumnFamilyOptionsInterface setMaxBytesForLevelMultiplier( - int multiplier); + MutableColumnFamilyOptionsInterface setMaxBytesForLevelMultiplier(double multiplier); /** * The ratio between the total size of level-(L+1) files and the total @@ -517,7 +516,7 @@ public interface MutableColumnFamilyOptionsInterface { * the total size of level-L files for all L. * @see #maxBytesForLevelBase() */ - int maxBytesForLevelMultiplier(); + double maxBytesForLevelMultiplier(); /** * Different max-size multipliers for different levels. diff --git a/java/src/main/java/org/rocksdb/Options.java b/java/src/main/java/org/rocksdb/Options.java index c7fe8983b..827938c72 100644 --- a/java/src/main/java/org/rocksdb/Options.java +++ b/java/src/main/java/org/rocksdb/Options.java @@ -904,12 +904,12 @@ public class Options extends RocksObject } @Override - public int maxBytesForLevelMultiplier() { + public double maxBytesForLevelMultiplier() { return maxBytesForLevelMultiplier(nativeHandle_); } @Override - public Options setMaxBytesForLevelMultiplier(final int multiplier) { + public Options setMaxBytesForLevelMultiplier(final double multiplier) { setMaxBytesForLevelMultiplier(nativeHandle_, multiplier); return this; } @@ -1382,9 +1382,8 @@ public class Options extends RocksObject long handle, boolean enableLevelCompactionDynamicLevelBytes); private native boolean levelCompactionDynamicLevelBytes( long handle); - private native void setMaxBytesForLevelMultiplier( - long handle, int multiplier); - private native int maxBytesForLevelMultiplier(long handle); + private native void setMaxBytesForLevelMultiplier(long handle, double multiplier); + private native double maxBytesForLevelMultiplier(long handle); private native void setMaxCompactionBytes(long handle, long maxCompactionBytes); private native long maxCompactionBytes(long handle); private native void setSoftRateLimit( diff --git a/java/src/test/java/org/rocksdb/ColumnFamilyOptionsTest.java b/java/src/test/java/org/rocksdb/ColumnFamilyOptionsTest.java index 5c5ace4e6..e0dbe3011 100644 --- a/java/src/test/java/org/rocksdb/ColumnFamilyOptionsTest.java +++ b/java/src/test/java/org/rocksdb/ColumnFamilyOptionsTest.java @@ -172,9 +172,9 @@ public class ColumnFamilyOptionsTest { @Test public void maxBytesForLevelMultiplier() { try (final ColumnFamilyOptions opt = new ColumnFamilyOptions()) { - final int intValue = rand.nextInt(); - opt.setMaxBytesForLevelMultiplier(intValue); - assertThat(opt.maxBytesForLevelMultiplier()).isEqualTo(intValue); + final double doubleValue = rand.nextDouble(); + opt.setMaxBytesForLevelMultiplier(doubleValue); + assertThat(opt.maxBytesForLevelMultiplier()).isEqualTo(doubleValue); } } diff --git a/java/src/test/java/org/rocksdb/OptionsTest.java b/java/src/test/java/org/rocksdb/OptionsTest.java index 642679948..00f59fe0e 100644 --- a/java/src/test/java/org/rocksdb/OptionsTest.java +++ b/java/src/test/java/org/rocksdb/OptionsTest.java @@ -135,9 +135,9 @@ public class OptionsTest { @Test public void maxBytesForLevelMultiplier() { try (final Options opt = new Options()) { - final int intValue = rand.nextInt(); - opt.setMaxBytesForLevelMultiplier(intValue); - assertThat(opt.maxBytesForLevelMultiplier()).isEqualTo(intValue); + final double doubleValue = rand.nextDouble(); + opt.setMaxBytesForLevelMultiplier(doubleValue); + assertThat(opt.maxBytesForLevelMultiplier()).isEqualTo(doubleValue); } } diff --git a/tools/db_bench_tool.cc b/tools/db_bench_tool.cc index 1c7c44590..3387aa92e 100644 --- a/tools/db_bench_tool.cc +++ b/tools/db_bench_tool.cc @@ -482,8 +482,8 @@ DEFINE_uint64(max_bytes_for_level_base, 10 * 1048576, "Max bytes for level-1"); DEFINE_bool(level_compaction_dynamic_level_bytes, false, "Whether level size base is dynamic"); -DEFINE_int32(max_bytes_for_level_multiplier, 10, - "A multiplier to compute max bytes for level-N (N >= 2)"); +DEFINE_double(max_bytes_for_level_multiplier, 10, + "A multiplier to compute max bytes for level-N (N >= 2)"); static std::vector FLAGS_max_bytes_for_level_multiplier_additional_v; DEFINE_string(max_bytes_for_level_multiplier_additional, "", diff --git a/tools/db_stress.cc b/tools/db_stress.cc index d3e7d0c93..897ec58c3 100644 --- a/tools/db_stress.cc +++ b/tools/db_stress.cc @@ -303,8 +303,8 @@ DEFINE_int32(target_file_size_multiplier, 1, DEFINE_uint64(max_bytes_for_level_base, 256 * KB, "Max bytes for level-1"); -DEFINE_int32(max_bytes_for_level_multiplier, 2, - "A multiplier to compute max bytes for level-N (N >= 2)"); +DEFINE_double(max_bytes_for_level_multiplier, 2, + "A multiplier to compute max bytes for level-N (N >= 2)"); // Temporarily disable this to allows it to detect new bugs DEFINE_int32(compact_files_one_in, 0, diff --git a/util/cf_options.cc b/util/cf_options.cc index c79522336..e8089148e 100644 --- a/util/cf_options.cc +++ b/util/cf_options.cc @@ -75,18 +75,14 @@ ImmutableCFOptions::ImmutableCFOptions(const ImmutableDBOptions& db_options, max_subcompactions(db_options.max_subcompactions) {} // Multiple two operands. If they overflow, return op1. -uint64_t MultiplyCheckOverflow(uint64_t op1, int op2) { - if (op1 == 0) { +uint64_t MultiplyCheckOverflow(uint64_t op1, double op2) { + if (op1 == 0 || op2 <= 0) { return 0; } - if (op2 <= 0) { + if (port::kMaxUint64 / op1 < op2) { return op1; } - uint64_t casted_op2 = (uint64_t) op2; - if (std::numeric_limits::max() / op1 < casted_op2) { - return op1; - } - return op1 * casted_op2; + return static_cast(op1 * op2); } void MutableCFOptions::RefreshDerivedOptions(int num_levels, @@ -146,7 +142,7 @@ void MutableCFOptions::Dump(Logger* log) const { target_file_size_multiplier); Log(log, " max_bytes_for_level_base: %" PRIu64, max_bytes_for_level_base); - Log(log, " max_bytes_for_level_multiplier: %d", + Log(log, " max_bytes_for_level_multiplier: %f", max_bytes_for_level_multiplier); std::string result; char buf[10]; diff --git a/util/cf_options.h b/util/cf_options.h index 9e0ae4b58..47a066517 100644 --- a/util/cf_options.h +++ b/util/cf_options.h @@ -220,7 +220,7 @@ struct MutableCFOptions { uint64_t target_file_size_base; int target_file_size_multiplier; uint64_t max_bytes_for_level_base; - int max_bytes_for_level_multiplier; + double max_bytes_for_level_multiplier; std::vector max_bytes_for_level_multiplier_additional; bool verify_checksums_in_compaction; @@ -236,6 +236,6 @@ struct MutableCFOptions { std::vector max_file_size; }; -uint64_t MultiplyCheckOverflow(uint64_t op1, int op2); +uint64_t MultiplyCheckOverflow(uint64_t op1, double op2); } // namespace rocksdb diff --git a/util/options.cc b/util/options.cc index 0423b7ab3..b8f3f51cb 100644 --- a/util/options.cc +++ b/util/options.cc @@ -489,8 +489,8 @@ void ColumnFamilyOptions::Dump(Logger* log) const { max_bytes_for_level_base); Header(log, "Options.level_compaction_dynamic_level_bytes: %d", level_compaction_dynamic_level_bytes); - Header(log, " Options.max_bytes_for_level_multiplier: %d", - max_bytes_for_level_multiplier); + Header(log, " Options.max_bytes_for_level_multiplier: %f", + max_bytes_for_level_multiplier); for (size_t i = 0; i < max_bytes_for_level_multiplier_additional.size(); i++) { Header(log, diff --git a/util/options_helper.h b/util/options_helper.h index 1e11ceb25..272b5a882 100644 --- a/util/options_helper.h +++ b/util/options_helper.h @@ -490,7 +490,7 @@ static std::unordered_map cf_options_type_info = { offsetof(struct MutableCFOptions, max_bytes_for_level_base)}}, {"max_bytes_for_level_multiplier", {offsetof(struct ColumnFamilyOptions, max_bytes_for_level_multiplier), - OptionType::kInt, OptionVerificationType::kNormal, true, + OptionType::kDouble, OptionVerificationType::kNormal, true, offsetof(struct MutableCFOptions, max_bytes_for_level_multiplier)}}, {"max_bytes_for_level_multiplier_additional", {offsetof(struct ColumnFamilyOptions, diff --git a/util/options_test.cc b/util/options_test.cc index f9fcfae65..47a95c7fb 100644 --- a/util/options_test.cc +++ b/util/options_test.cc @@ -68,7 +68,7 @@ TEST_F(OptionsTest, GetOptionsFromMapTest) { {"target_file_size_multiplier", "13"}, {"max_bytes_for_level_base", "14"}, {"level_compaction_dynamic_level_bytes", "true"}, - {"max_bytes_for_level_multiplier", "15"}, + {"max_bytes_for_level_multiplier", "15.0"}, {"max_bytes_for_level_multiplier_additional", "16:17:18"}, {"max_compaction_bytes", "21"}, {"soft_rate_limit", "1.1"}, @@ -164,7 +164,7 @@ TEST_F(OptionsTest, GetOptionsFromMapTest) { ASSERT_EQ(new_cf_opt.target_file_size_multiplier, 13); ASSERT_EQ(new_cf_opt.max_bytes_for_level_base, 14U); ASSERT_EQ(new_cf_opt.level_compaction_dynamic_level_bytes, true); - ASSERT_EQ(new_cf_opt.max_bytes_for_level_multiplier, 15); + ASSERT_EQ(new_cf_opt.max_bytes_for_level_multiplier, 15.0); ASSERT_EQ(new_cf_opt.max_bytes_for_level_multiplier_additional.size(), 3U); ASSERT_EQ(new_cf_opt.max_bytes_for_level_multiplier_additional[0], 16); ASSERT_EQ(new_cf_opt.max_bytes_for_level_multiplier_additional[1], 17);