{"record":{"id":"986f5106d74ef49e","repo":"apache/rocketmq","slug":"message-is-null","errorCode":null,"errorMessage":"message is null.","messagePattern":"message is null\\.","errorType":"exception","errorClass":"AuthorizationException","httpStatus":null,"severity":"error","filePath":"auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilder.java","lineNumber":121,"sourceCode":"    private static final String TOPIC = \"topic\";\n    private static final String GROUP = \"group\";\n    private static final String B = \"b\";\n    private static final String CONSUMER_GROUP = \"consumerGroup\";\n    private final AuthConfig authConfig;\n    private final RequestHeaderRegistry requestHeaderRegistry;\n\n    public DefaultAuthorizationContextBuilder(AuthConfig authConfig) {\n        this.authConfig = authConfig;\n        this.requestHeaderRegistry = RequestHeaderRegistry.getInstance();\n    }\n\n    @Override\n    public List<DefaultAuthorizationContext> build(Metadata metadata, GeneratedMessageV3 message) {\n        List<DefaultAuthorizationContext> result = null;\n        if (message instanceof SendMessageRequest) {\n            SendMessageRequest request = (SendMessageRequest) message;\n            if (request.getMessagesCount() <= 0) {\n                throw new AuthorizationException(\"message is null.\");\n            }\n            result = newPubContext(metadata, request.getMessages(0).getTopic());\n        }\n        if (message instanceof RecallMessageRequest) {\n            RecallMessageRequest request = (RecallMessageRequest) message;\n            result = newPubContext(metadata, request.getTopic());\n        }\n        if (message instanceof EndTransactionRequest) {\n            EndTransactionRequest request = (EndTransactionRequest) message;\n            result = newPubContext(metadata, request.getTopic());\n        }\n        if (message instanceof HeartbeatRequest) {\n            HeartbeatRequest request = (HeartbeatRequest) message;\n            if (StringUtils.isNotBlank(request.getGroup().getName())) {\n                if (request.getClientType() == ClientType.PRODUCER) {\n                    throw new AuthorizationException(\"group is not allowed for producer heartbeat.\");\n                }\n                result = newGroupSubContexts(metadata, request.getGroup());","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/apache/rocketmq/blob/293f5885719fc4aa3619446a1900f58ccfcfdd29/auth/src/main/java/org/apache/rocketmq/auth/authorization/builder/DefaultAuthorizationContextBuilder.java#L103-L139","documentation":"Error \"message is null.\" thrown in apache/rocketmq.","triggerScenarios":"Occurs when building an authorization context for a request that carries no message.","commonSituations":"A send-message request arrives without a message body, or the message was not decoded before authorization.","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."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"293f5885719fc4aa3619446a1900f58ccfcfdd29","analyzedAt":"2026-08-14T11:50:13.822Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}