Remove hard_rate_limit and rate_limit_delay_max_milliseconds and other options that are accepted but ignored
- Dominant language
- C++
- Stars
- 32.1k
- Forks
- 6.9k
- Avg merge
- 32m
- Merged PRs (30d)
- 1
Description
> Note: Please use Issues only for bug reports. For questions, discussions, feature requests, etc. post to dev group: https://groups.google.com/forum/#!forum/rocksdb or https://www.facebook.com/groups/rocksdb.dev
### Behavior
The options (hard_rate_limit, rate_limit_delay_max_milliseconds) are parsed by db_bench and accepted but ignored by RocksDB. They are noops, which will mislead users into thinking they are useful. The path forward is one of:
* translate them to existing options
* remove support for them (remove all references to them)
They [are listed](https://github.com/facebook/rocksdb/blob/main/include/rocksdb/advanced_options.h#L917) in the "Not supported anymore" section of advanced_options.h. I prefer that RocksDB not have options that are accepted but ignored. Other options in that section are: soft_rate_limit, max_mem_compaction_level, purge_redundant_kvs_while_flush
References to hard_rate_limit
```
./build_tools/regression_build_test.sh: --hard_rate_limit=2 \
./db/c.cc:void rocksdb_options_set_hard_rate_limit(rocksdb_options_t* opt, double v) {
./db/c.cc: opt->rep.hard_rate_limit = v;
./db/c.cc:double rocksdb_options_get_hard_rate_limit(rocksdb_options_t* opt) {
./db/c.cc: return opt->rep.hard_rate_limit;
./db/c_test.c: rocksdb_options_set_hard_rate_limit(o, 4.0);
./db/c_test.c: CheckCondition(4.0 == rocksdb_options_get_hard_rate_limit(o));
./db/c_test.c: CheckCondition(4.0 == rocksdb_options_get_hard_rate_limit(copy));
./db/c_test.c: rocksdb_options_set_hard_rate_limit(copy, 2.0);
./db/c_test.c: CheckCondition(2.0 == rocksdb_options_get_hard_rate_limit(copy));
./db/c_test.c: CheckCondition(4.0 == rocksdb_options_get_hard_rate_limit(o));
./db_stress_tool/db_stress_test_base.cc: {"hard_rate_limit", {"0", "1.1", "2.0"}},
./db_stress_tool/db_stress_test_base.cc: if (name == "soft_rate_limit" || name == "hard_rate_limit") {
./db_stress_tool/db_stress_test_base.cc: opts["hard_rate_limit"] = options_table_["hard_rate_limit"][value_idx];
./include/rocksdb/convenience.h:// - {"hard_rate_limit", "2.1"} in GetColumnFamilyOptionsFromMap, or
./include/rocksdb/convenience.h:// - "hard_rate_limit=2.1" in GetColumnFamilyOptionsFromString.
./include/rocksdb/advanced_options.h: double hard_rate_limit = 0.0;
./include/rocksdb/c.h:extern ROCKSDB_LIBRARY_API void rocksdb_options_set_hard_rate_limit(
./include/rocksdb/c.h:extern ROCKSDB_LIBRARY_API double rocksdb_options_get_hard_rate_limit(
./java/benchmark/src/main/java/org/rocksdb/benchmark/DbBenchmark.java: hard_rate_limit(0.0d,"When not equal to 0 this make threads\n" +
./java/benchmark/src/main/java/org/rocksdb/benchmark/DbBenchmark.java: "When hard_rate_limit is set then this is the max time a put will\n" +
./java/src/main/java/org/rocksdb/MutableColumnFamilyOptions.java: @Deprecated hard_rate_limit(ValueType.DOUBLE),
./options/cf_options.cc: {"hard_rate_limit",
./options/options_settable_test.cc: options->hard_rate_limit = 0;
./options/options_test.cc: {"hard_rate_limit", "2.1"},
./options/options_test.cc: {"hard_rate_limit", "2.1"},
grep: ./options/cf_options.o: binary file matches
./test_util/testutil.cc: cf_opt->hard_rate_limit = static_cast(rnd->Uniform(10000)) / 13;
./tools/benchmark.sh: --hard_rate_limit=3 \
./tools/db_bench_tool.cc:DEFINE_double(hard_rate_limit, 0.0, "DEPRECATED");
./tools/db_bench_tool.cc: "When hard_rate_limit is set then this is the max time a put will"
./tools/db_bench_tool.cc:static const bool FLAGS_hard_rate_limit_dummy __attribute__((__unused__)) =
./tools/db_bench_tool.cc: RegisterFlagValidator(&FLAGS_hard_rate_limit, &ValidateRateLimit);
./tools/db_bench_tool.cc: options.hard_rate_limit = FLAGS_hard_rate_limit;
```
References to rate_limit_delay_max_milliseconds
```
./db/c.cc:void rocksdb_options_set_rate_limit_delay_max_milliseconds(
./db/c.cc: opt->rep.rate_limit_delay_max_milliseconds = v;
./db/c.cc:unsigned int rocksdb_options_get_rate_limit_delay_max_milliseconds(
./db/c.cc: return opt->rep.rate_limit_delay_max_milliseconds;
./db/c_test.c: rocksdb_options_set_rate_limit_delay_max_milliseconds(o, 1);
./db/c_test.c: rocksdb_options_get_rate_limit_delay_max_milliseconds(o));
./db/c_test.c: rocksdb_options_get_rate_limit_delay_max_milliseconds(copy));
./db/c_test.c: rocksdb_options_set_rate_limit_delay_max_milliseconds(copy, 0);
./db/c_test.c: rocksdb_options_get_rate_limit_delay_max_milliseconds(copy));
./db/c_test.c: rocksdb_options_get_rate_limit_delay_max_milliseconds(o));
./include/rocksdb/advanced_options.h: unsigned int rate_limit_delay_max_milliseconds = 100;
./include/rocksdb/c.h:rocksdb_options_set_rate_limit_delay_max_milliseconds(rocksdb_options_t*,
./include/rocksdb/c.h:rocksdb_options_get_rate_limit_delay_max_milliseconds(rocksdb_options_t*);
./java/benchmark/src/main/java/org/rocksdb/benchmark/DbBenchmark.java: rate_limit_delay_max_milliseconds(1000,
./options/cf_options.cc: {"rate_limit_delay_max_milliseconds",
./options/options.cc: ROCKS_LOG_HEADER(log, " Options.rate_limit_delay_max_milliseconds: %u",
./options/options.cc: rate_limit_delay_max_milliseconds);
./options/options_settable_test.cc: options->rate_limit_delay_max_milliseconds = 33;
./test_util/testutil.cc: cf_opt->rate_limit_delay_max_milliseconds = rnd->Uniform(10000);
./tools/benchmark.sh: --rate_limit_delay_max_milliseconds=1000000 \
./tools/db_bench_tool.cc:DEFINE_int32(rate_limit_delay_max_milliseconds, 1000,
./tools/db_bench_tool.cc: options.rate_limit_delay_max_milliseconds =
./tools/db_bench_tool.cc: FLAGS_rate_limit_delay_max_milliseconds;
```
Contributor guide
Assessment
This issue has not been assessed yet.