Merge branch 'topic/christian/disconnect-slow-peers'

* topic/christian/disconnect-slow-peers:
  Bump cluster testsuite to pull in Broker backpressure tests
  Expand documentation of Broker events.
  Add sleep() BiF.
  Add backpressure disconnect notification to cluster.log and via telemetry
  Remove unneeded @loads from base/misc/version.zeek
  Add Cluster::nodeid_to_node() helper function
  Support re-peering with Broker peers that fall behind
  Add Zeek-level configurability of Broker slow-peer disconnects
  Bump Broker to pull in disconnect feature and infinite-loop fix
  No need to namespace Cluster:: functions in their own namespace
This commit is contained in:
Christian Kreibich 2024-12-09 23:28:30 -08:00
commit 1c42bfc715
25 changed files with 331 additions and 19 deletions

View file

@ -257,6 +257,36 @@ void Manager::DoInitPostScript() {
options.disable_forwarding = ! get_option("Broker::forward_messages")->AsBool();
options.use_real_time = use_real_time;
options.peer_buffer_size = get_option("Broker::peer_buffer_size")->AsCount();
auto peer_overflow_policy = get_option("Broker::peer_overflow_policy")->AsString()->CheckString();
if ( util::streq(peer_overflow_policy, "disconnect") ) {
options.peer_overflow_policy = broker::overflow_policy::disconnect;
}
else if ( util::streq(peer_overflow_policy, "drop_oldest") ) {
options.peer_overflow_policy = broker::overflow_policy::drop_oldest;
}
else if ( util::streq(peer_overflow_policy, "drop_newest") ) {
options.peer_overflow_policy = broker::overflow_policy::drop_newest;
}
else {
reporter->FatalError("Invalid Broker::peer_overflow_policy: %s", peer_overflow_policy);
}
options.web_socket_buffer_size = get_option("Broker::web_socket_buffer_size")->AsCount();
auto web_socket_overflow_policy = get_option("Broker::web_socket_overflow_policy")->AsString()->CheckString();
if ( util::streq(web_socket_overflow_policy, "disconnect") ) {
options.web_socket_overflow_policy = broker::overflow_policy::disconnect;
}
else if ( util::streq(web_socket_overflow_policy, "drop_oldest") ) {
options.web_socket_overflow_policy = broker::overflow_policy::drop_oldest;
}
else if ( util::streq(web_socket_overflow_policy, "drop_newest") ) {
options.web_socket_overflow_policy = broker::overflow_policy::drop_newest;
}
else {
reporter->FatalError("Invalid Broker::web_socket_overflow_policy: %s", web_socket_overflow_policy);
}
broker::configuration config{std::move(options)};
config.openssl_cafile(get_option("Broker::ssl_cafile")->AsString()->CheckString());