Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
acelyc111 committed Apr 25, 2020
1 parent 45aeda1 commit 31a80f4
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 14 deletions.
2 changes: 1 addition & 1 deletion src/server/config.ini
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@
# 12 0.662498 0.411593
# 16 0.353023 0.0873754
# 24 0.261552 0.0060971
# 50 0.225453 ~0.00003 (less than 1 in a million queries are FP)
# 50 0.225453 ~0.00003
rocksdb_bloom_filter_bits_per_key = 10
# SST file format version, should be either 2 or 5
rocksdb_format_version = 2
Expand Down
32 changes: 19 additions & 13 deletions src/server/pegasus_server_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -302,23 +302,29 @@ pegasus_server_impl::pegasus_server_impl(dsn::replication::replica *r)
// 12 0.662498 0.411593
// 16 0.353023 0.0873754
// 24 0.261552 0.0060971
// 50 0.225453 ~0.00003 (less than 1 in a million queries are FP)
// 50 0.225453 ~0.00003
// Recommend using no more than three decimal digits after the decimal point, as in 6.667.
// More details: https://github.com/facebook/rocksdb/wiki/RocksDB-Bloom-Filter
double bits_per_key = dsn_config_get_value_double(
"pegasus.server",
"rocksdb_bloom_filter_bits_per_key",
10,
"average bits allocated per key in bloom filter");
double bits_per_key =
dsn_config_get_value_double("pegasus.server",
"rocksdb_bloom_filter_bits_per_key",
10,
"average bits allocated per key in bloom filter");
// COMPATIBILITY ATTENTION:
// Although old releases would see the new structure as corrupt filter data and read the table as if there's no filter, we've decided only to enable the new Bloom filter with new format_version=5. This provides a smooth path for automatic adoption over time, with an option for early opt-in.
// Reference from rocksdb commit: https://github.com/facebook/rocksdb/commit/f059c7d9b96300091e07429a60f4ad55dac84859
// Although old releases would see the new structure as corrupt filter data and read the
// table as if there's no filter, we've decided only to enable the new Bloom filter with new
// format_version=5. This provides a smooth path for automatic adoption over time, with an
// option for early opt-in.
// Reference from rocksdb commit:
// https://github.com/facebook/rocksdb/commit/f059c7d9b96300091e07429a60f4ad55dac84859
int format_version = (int)dsn_config_get_value_int64(
"pegasus.server",
"rocksdb_format_version",
2,
"block based table data format version, only 2 and 5 is supported in Pegasus. 2 is the old version, 5 is the new version supported since rocksdb v6.6.4");
dassert(format_version == 2 || format_version == 5, "[pegasus.server]rocksdb_format_version should be either '2' or '5'.");
"pegasus.server", "rocksdb_format_version", 2, "block based table data format version, "
"only 2 and 5 is supported in Pegasus. "
"2 is the old version, 5 is the new "
"version supported since rocksdb "
"v6.6.4");
dassert(format_version == 2 || format_version == 5,
"[pegasus.server]rocksdb_format_version should be either '2' or '5'.");
tbl_opts.format_version = format_version;
tbl_opts.filter_policy.reset(rocksdb::NewBloomFilterPolicy(bits_per_key, false));

Expand Down

0 comments on commit 31a80f4

Please sign in to comment.