[broker] Key_Shared dispatcher with no connected consumers should be recreated if allowOutOfOrderDelivery changes #13063
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.
Motivation
PersistentStickyKeyDispatcherMultipleConsumers
has an instance variable namedallowOutOfOrderDelivery
, which is set by the first connected consumer and will not change unless the dispatcher is closed, such as by unloading. That is, end users have no way to change this setting.As with
keySharedMode
, if a consumer with a different policy connects after all consumers have been disconnected, the dispatcher should be closed and recreated.pulsar/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java
Lines 272 to 280 in dac47cb
Modifications
If a consumer with a different
keySharedMode
orallowOutOfOrderDelivery
policy tries to connect toPersistentStickyKeyDispatcherMultipleConsumers
to which no consumer is connected, close that dispatcher and create a new one.Verifying this change
Does this pull request potentially affect one of the following parts:
Documentation
no-need-doc