The GitHub Actions job "Build and Run Tests by Maven" on 
rocketmq.git/fix/rebalance-mq-changed-null-subscription has failed.
Run started by GitHub user zjncs (triggered by zjncs).

Head commit for run:
2b73809bd3e9a52a91f987e40f601d9a57e2c7b8 / zjncs <[email protected]>
[ISSUE #D1] Skip queue-change notification for concurrently removed subscription

RebalanceImpl.doRebalance iterates the subscriptionInner entry set and, when
the allocation changes, hands the topic to messageQueueChanged. The push
implementation re-reads subscriptionInner.get(topic) and immediately
dereferences it (getSubVersion/setSubVersion). DefaultMQPushConsumer
.unsubscribe() runs on a different thread and can remove the entry between
the rebalance snapshot and this call, so the rebalance thread dies with an
NPE instead of finishing the rebalance of the remaining topics.

Guard the null subscription: log and return, since there is nothing to
update or notify for a topic this consumer no longer subscribes to.

Test: 
RebalancePushImplTest#testMessageQueueChanged_SubscriptionRemovedConcurrently
fails with NullPointerException on unpatched code and passes after the
guard (8/8 in the class).

Signed-off-by: zjncs <[email protected]>

Report URL: https://github.com/apache/rocketmq/actions/runs/34434477827

With regards,
GitHub Actions via GitBox

Reply via email to