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/09 10:05:07 UTC

[PR] [BUG] EndTransactionProcessor NPEs when the prepared message lacks the producer group property [rocketmq]

zjncs opened a new pull request, #11096:
URL: https://github.com/apache/rocketmq/pull/11096

   ### Motivation
   
   `EndTransactionProcessor.checkPrepareMessage` validates the request's producer group against the property stored on the prepared (half) message:
   
   ```java
   final String pgroupRead = msgExt.getProperty(MessageConst.PROPERTY_PRODUCER_GROUP);
   if (!pgroupRead.equals(requestHeader.getProducerGroup())) {
   ```
   
   If the half message does not carry `PROPERTY_PRODUCER_GROUP` (half messages written by old clients, or stores restored without the property), `pgroupRead` is null and the commit/rollback request dies with:
   
   ```
   java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "pgroupRead" is null
   ```
   
   The topic check right above already tolerates a missing field defensively (`StringUtils.isNotBlank` + `Objects.equals`), so the producer-group check is inconsistent with its own file's style.
   
   ### Changes
   
   - Compare with `Objects.equals(pgroupRead, requestHeader.getProducerGroup())`: a missing property is a mismatch and gets the intended `SYSTEM_ERROR` / "The producer group wrong" rejection instead of an NPE.
   
   ### Verification
   
   New test `testProcessRequestRejectsPreparedMessageWithoutProducerGroup`: commits a transaction whose prepared message has the producer-group property removed.
   
   ```
   $ mvn -pl broker test -Dtest='EndTransactionProcessorTest'
   (before) java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "pgroupRead" is null
   (after)  Tests run: 10, Failures: 0, Errors: 0  (new test asserts SYSTEM_ERROR + "producer group wrong")
   ```


-- 
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