equanz commented on code in PR #20179: URL: https://github.com/apache/pulsar/pull/20179#discussion_r1209967970
########## pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java: ########## @@ -65,23 +67,22 @@ public class PersistentStickyKeyDispatcherMultipleConsumers extends PersistentDi private final KeySharedMode keySharedMode; /** - * When a consumer joins, it will be added to this map with the current read position. - * This means that, in order to preserve ordering, new consumers can only receive old - * messages, until the mark-delete position will move past this point. + * When a consumer joins, it will be added to this map with the current last sent position per the message key. + * This means that, in order to preserve ordering per the message key, new consumers can only receive old + * messages, until the mark-delete position will move past this point in the key. New consumers can receive + * any new messages with the message key that is not in the last sent position. */ - private final LinkedHashMap<Consumer, PositionImpl> recentlyJoinedConsumers; - - private final Set<Consumer> stuckConsumers; - private final Set<Consumer> nextStuckConsumers; + private final LinkedHashMap<Consumer, LastSentPositions> recentlyJoinedConsumers; + // The lastSentPosition is not thread-safe + private final LastSentPositions lastSentPositions; PersistentStickyKeyDispatcherMultipleConsumers(PersistentTopic topic, ManagedCursor cursor, Review Comment: Hi @poorbarcode * [1] I think it is not entirely correct. Your scenario step seems roughly right, but based on my analysis, the root cause of the issue is not related to concurrency. The cause lies in [the isDispatcherStuckOnReplays feature](https://github.com/apache/pulsar/blob/b7f0004313ea4565717cc6d3c0b99aee5c079c6c/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java#L429-L434), and [the recently joined consumers feature](https://github.com/apache/pulsar/blob/b7f0004313ea4565717cc6d3c0b99aee5c079c6c/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java#L371-L377). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@pulsar.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org