fix: unregistering topic translates to multiple redundant Raft proposals #979
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.
What this PR does
The current implementation of topic unregistration relies on proposeWithGuarantee's retry mechanism when deleting topics with multiple log streams. When a topic containing multiple log streams is unregistered, the control flow returns prematurely after deleting each log stream. This premature return prevents cacheCompleteCB from being called, which proposeWithGuarantee interprets as an incomplete operation that needs to be retried causing the unregistration time to scale linearly with the number of log streams (approximately 100ms per stream) and generates unnecessary consensus overhead.
The fix consolidates all log stream unregistrations into a single Raft proposal by removing the premature return.
Anything else
With topics containing over 1 billion log streams, state machine operations could still take longer than 100ms, potentially triggering the same retry behavior addressed in this fix. However, this would not affect correctness as the retry mechanism would continue to function as intended. At such scale, other system constraints would likely manifest before this particular issue would resurface.