apache/rocketmq · error · AuthorizationException
message is null.
Error message
message is null.
What it means
Error "message is null." thrown in apache/rocketmq.
Source
Thrown at auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilder.java:121
private static final String TOPIC = "topic";
private static final String GROUP = "group";
private static final String B = "b";
private static final String CONSUMER_GROUP = "consumerGroup";
private final AuthConfig authConfig;
private final RequestHeaderRegistry requestHeaderRegistry;
public DefaultAuthorizationContextBuilder(AuthConfig authConfig) {
this.authConfig = authConfig;
this.requestHeaderRegistry = RequestHeaderRegistry.getInstance();
}
@Override
public List<DefaultAuthorizationContext> build(Metadata metadata, GeneratedMessageV3 message) {
List<DefaultAuthorizationContext> result = null;
if (message instanceof SendMessageRequest) {
SendMessageRequest request = (SendMessageRequest) message;
if (request.getMessagesCount() <= 0) {
throw new AuthorizationException("message is null.");
}
result = newPubContext(metadata, request.getMessages(0).getTopic());
}
if (message instanceof RecallMessageRequest) {
RecallMessageRequest request = (RecallMessageRequest) message;
result = newPubContext(metadata, request.getTopic());
}
if (message instanceof EndTransactionRequest) {
EndTransactionRequest request = (EndTransactionRequest) message;
result = newPubContext(metadata, request.getTopic());
}
if (message instanceof HeartbeatRequest) {
HeartbeatRequest request = (HeartbeatRequest) message;
if (StringUtils.isNotBlank(request.getGroup().getName())) {
if (request.getClientType() == ClientType.PRODUCER) {
throw new AuthorizationException("group is not allowed for producer heartbeat.");
}
result = newGroupSubContexts(metadata, request.getGroup());View on GitHub (pinned to 293f588571)
Solutions
- Ensure the Message object passed to the broker request is non-null and fully initialized before sending.
- Check client code paths building send/ack/heartbeat requests so the message field is always set.
- Upgrade client and broker to compatible versions if the message is dropped during serialization.
When it happens
Trigger: Occurs when building an authorization context for a request that carries no message.
Common situations: A send-message request arrives without a message body, or the message was not decoded before authorization.
AI-assisted analysis of apache/rocketmq@293f588571 (2026-08-14).
Data as JSON: /api/errors/986f5106d74ef49e.
Report an issue: GitHub.