Fix a bug when cluster mode and limited rate are used at the same time #264
+2
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In cluster mode, a client can open several connections. If one of them handles a response before the connection of another,
m_reqs_processedis positive at line 556 so the timed event is not created. Since the bufferevent is already enabled, the process would hang forever. This might fix #94, might not. This is a quick fix. There are definitely better ways to repair it.Note
Medium Risk
Touches connection-establishment and request-rate timer setup logic; small but can affect cluster-mode pacing and reconnection behavior if the timer is mismanaged.
Overview
Prevents a hang when running in cluster mode with
--rateenabled by making rate-limit timer creation depend on whether the connection’sm_event_timeris set, rather thanm_conns_manager->get_reqs_processed().Initializes
m_event_timertoNULLinshard_connectionso each new shard connection reliably sets up its own timer and starts sending the first request on connect.Written by Cursor Bugbot for commit 058d904. This will update automatically on new commits. Configure here.