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

  1. Ensure the Message object passed to the broker request is non-null and fully initialized before sending.
  2. Check client code paths building send/ack/heartbeat requests so the message field is always set.
  3. 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.