wang-jiahua opened a new pull request, #10974:
URL: https://github.com/apache/rocketmq/pull/10974

   ### Which Issue(s) This PR Fixes
   
   Fixes #10972
   
   ### Brief Description
   
   `TimerMessageStore#convertMessage` encoded `propertiesString` from the 
original property map and only afterwards cleared `REAL_TOPIC` / 
`REAL_QUEUE_ID` from the deep copy. As a result the delivered timer message 
carried the internal properties on the wire while the broker-side map had them 
cleared, and the file-based timer store observably diverged from 
`TimerMessageRocksDBStore#convertMessage`, which already clears first and 
encodes from the copied map.
   
   This PR moves the encode after the clear block and encodes from 
`msgInner.getProperties()`, mirroring the RocksDB implementation. It also 
removes the map/wire mismatch where the deep copy was made but the encode still 
read the original map. `TIMER_DELIVER_MS` and other timer metadata are not in 
the clearing list, so the deliveryTimestamp exposed to gRPC consumers is 
unchanged.
   
   ### How Did You Test This Change?
   
   - New regression test `testConvertMessagePropertiesStringMatchesProperties`: 
the delivered message drops `REAL_TOPIC`/`REAL_QUEUE_ID` from the wire and 
`propertiesString` equals the re-encoded map; the rolled message keeps them. 
`TimerMessageStoreTest` passes 11/11.
   - 4-node cluster A/B (file-based timer store, 
`benchmark.timer.TimerProducer` 64 threads x 40 slots x 250 msgs/slot, 1 KiB, 
per arm clean store + page cache drop, 3 interleaved trials; the 2-minute 
first-slot offset isolates GC sampling to the pure delivery phase): every arm 
delivered 639,990/640,000 (report-sampling rounding) with zero send failures; 
delivery-phase young GC base 2/2/2 vs patch 1/2/2 — correctness intact, no 
regression.
   


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to