You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by "zjncs (via GitHub)" <gi...@apache.org> on 2026/09/10 05:20:04 UTC
[PR] [ISSUE #D4] Fix getConsumeStatus NPE for a group absent from ConsumerManager [rocketmq]
zjncs opened a new pull request, #11110:
URL: https://github.com/apache/rocketmq/pull/11110
## Motivation
`Broker2Client.getConsumeStatus` dereferences the consumer group info before checking it:
```java
ConcurrentMap<Channel, ClientChannelInfo> channelInfoTable =
this.brokerController.getConsumerManager().getConsumerGroupInfo(group).getChannelInfoTable();
if (null == channelInfoTable || channelInfoTable.isEmpty()) {
// "No Any Consumer online in the consumer group: [%s]"
}
```
When the queried group has no consumer registered on this broker — the normal situation for an offline group — `getConsumerGroupInfo(group)` returns null and the method throws `NullPointerException` before reaching the error branch that was written for exactly this case. The sibling `resetOffset` method checks the group info for null first.
Reached from `mqadmin getConsumerStatus` (`INVOKE_BROKER_TO_GET_CONSUMER_STATUS` → `AdminBrokerProcessor.getConsumerStatus` → here), the NPE surfaces to the admin as a bare SYSTEM_ERROR with a null-pointer remark instead of the intended message.
## Modification
Fetch the `ConsumerGroupInfo` first; enter the existing "No Any Consumer online" branch when it is null or its channel table is empty; read the channel table only afterwards.
## Test Evidence
Fail-before (unpatched develop, new regression test):
```
mvn -q -pl broker test -Dtest='Broker2ClientTest#testGetConsumeStatusGroupNotRegistered'
Tests run: 1, Errors: 1 - NullPointerException: Cannot invoke "ConsumerGroupInfo.getChannelInfoTable()"
```
Pass-after (full class):
```
mvn -q -pl broker test -Dtest='Broker2ClientTest'
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0
```
No associated issue (self-discovered during a broker-module self-audit).
--
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-unsubscribe@rocketmq.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org