diff options
| author | Michael Klishin <mklishin@pivotal.io> | 2019-10-27 20:35:04 +0300 |
|---|---|---|
| committer | Michael Klishin <mklishin@pivotal.io> | 2019-10-27 20:35:04 +0300 |
| commit | 352ffc9a24918c43a259ea9c68d775b81ad4b6d5 (patch) | |
| tree | 6d124c99fdb4a8360e05bd6b7a0c441aaee3d350 | |
| parent | c7c23e6bacf25b08e910dfa6a889e6d0aeb7feb8 (diff) | |
| download | rabbitmq-server-git-352ffc9a24918c43a259ea9c68d775b81ad4b6d5.tar.gz | |
Make a bunch of Ra settings configurable rabbitmq.conf
raft.segment_max_entries = 65535
raft.wal_max_size_bytes = 1048576
raft.wal_max_batch_size = 32768
raft.snapshot_chunk_size = 1000000
Closes #2140.
| -rw-r--r-- | docs/rabbitmq.conf.example | 12 | ||||
| -rw-r--r-- | priv/schema/rabbit.schema | 61 | ||||
| -rw-r--r-- | src/rabbit.erl | 7 | ||||
| -rw-r--r-- | test/config_schema_SUITE_data/rabbit.snippets | 35 |
4 files changed, 113 insertions, 2 deletions
diff --git a/docs/rabbitmq.conf.example b/docs/rabbitmq.conf.example index 3f66404a8f..c87a49d36b 100644 --- a/docs/rabbitmq.conf.example +++ b/docs/rabbitmq.conf.example @@ -442,6 +442,18 @@ # collect_statistics_interval = 5000 ## +## Ra Settings +## ===================== +## +## NB: changing these on a node with existing data directory +## can lead to DATA LOSS. +## +# raft.segment_max_entries = 65535 +# raft.wal_max_size_bytes = 1048576 +# raft.wal_max_batch_size = 32768 +# raft.snapshot_chunk_size = 1000000 + +## ## Misc/Advanced Options ## ===================== ## diff --git a/priv/schema/rabbit.schema b/priv/schema/rabbit.schema index 8c951cbecb..8db2ebf3ff 100644 --- a/priv/schema/rabbit.schema +++ b/priv/schema/rabbit.schema @@ -1522,6 +1522,67 @@ end}. end }. +%% +%% Ra +%% + +{mapping, "raft.segment_max_entries", "ra.segment_max_entries", [ + {datatype, integer}, + {validators, ["non_zero_positive_integer"]} +]}. + +{translation, "ra.segment_max_entries", + fun(Conf) -> + case cuttlefish:conf_get("raft.segment_max_entries", Conf, undefined) of + undefined -> cuttlefish:unset(); + Val -> Val + end + end +}. + +{mapping, "raft.wal_max_size_bytes", "ra.wal_max_size_bytes", [ + {datatype, integer}, + {validators, ["non_zero_positive_integer"]} +]}. + +{translation, "ra.wal_max_size_bytes", + fun(Conf) -> + case cuttlefish:conf_get("raft.wal_max_size_bytes", Conf, undefined) of + undefined -> cuttlefish:unset(); + Val -> Val + end + end +}. + +{mapping, "raft.wal_max_batch_size", "ra.wal_max_batch_size", [ + {datatype, integer}, + {validators, ["non_zero_positive_integer"]} +]}. + +{translation, "ra.wal_max_batch_size", + fun(Conf) -> + case cuttlefish:conf_get("raft.wal_max_batch_size", Conf, undefined) of + undefined -> cuttlefish:unset(); + Val -> Val + end + end +}. + +{mapping, "raft.snapshot_chunk_size", "ra.snapshot_chunk_size", [ + {datatype, integer}, + {validators, ["non_zero_positive_integer"]} +]}. + +{translation, "ra.snapshot_chunk_size", + fun(Conf) -> + case cuttlefish:conf_get("raft.snapshot_chunk_size", Conf, undefined) of + undefined -> cuttlefish:unset(); + Val -> Val + end + end +}. + + % =============================== % Validators % =============================== diff --git a/src/rabbit.erl b/src/rabbit.erl index 6d4ff8b8c9..da721bed88 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -541,7 +541,12 @@ start_loaded_apps(Apps, RestartTypes) -> %% default OTP logger application:set_env(ra, logger_module, rabbit_log_ra_shim), %% use a larger segments size for queues - application:set_env(ra, segment_max_entries, 32768), + case application:get_env(ra, segment_max_entries) of + undefined -> + application:set_env(ra, segment_max_entries, 32768); + _ -> + ok + end, case application:get_env(ra, wal_max_size_bytes) of undefined -> application:set_env(ra, wal_max_size_bytes, 536870912); %% 5 * 2 ^ 20 diff --git a/test/config_schema_SUITE_data/rabbit.snippets b/test/config_schema_SUITE_data/rabbit.snippets index 4e34738a60..060edda8a2 100644 --- a/test/config_schema_SUITE_data/rabbit.snippets +++ b/test/config_schema_SUITE_data/rabbit.snippets @@ -638,5 +638,38 @@ credential_validator.regexp = ^abc\\d+", {cacertfile,"test/config_schema_SUITE_data/certs/cacert.pem"}, {certfile,"test/config_schema_SUITE_data/certs/cert.pem"}, {keyfile,"test/config_schema_SUITE_data/certs/key.pem"}]}}]}], - []} + []}, + + %% + %% Raft + %% + + {raft_segment_max_entries, + "raft.segment_max_entries = 65535", + [{ra, [ + {segment_max_entries, 65535} + ]}], + []}, + + {raft_wal_max_size_bytes, + "raft.wal_max_size_bytes = 1048576", + [{ra, [ + {wal_max_size_bytes, 1048576} + ]}], + []}, + + {raft_wal_max_batch_size, + "raft.wal_max_batch_size = 32768", + [{ra, [ + {wal_max_batch_size, 32768} + ]}], + []}, + + {raft_snapshot_chunk_size, + "raft.snapshot_chunk_size = 1000000", + [{ra, [ + {snapshot_chunk_size, 1000000} + ]}], + []} + ]. |
