The GitHub Actions job "CI" on 
rocketmq-dashboard.git/fix/redelivery-exact-source-rebase has failed.
Run started by GitHub user unbridled-41 (triggered by unbridled-41).

Head commit for run:
ec78abe8dd6971f702aa8658e64a5401fcf79fce / unbridled-41 
<[email protected]>
fix(message): refuse redelivery when the source is only a display projection

The AI redelivery tool loads its source with findMessageForRedelivery, which
reads the message explorer query - a display projection, not the stored
record. For a large or binary message that projection is lossy:

- the body stops at MAX_BODY_DISPLAY_BYTES (64 KiB) and carries
  bodyTruncated = true;
- a body that is not valid UTF-8 is replaced by Base64 text with
  bodyEncoding = "BASE64";
- the property map is capped and abbreviated.

redeliverMessage published that projection verbatim, so redelivering a big
message stored a truncated body and redelivering a binary one stored its
Base64 text - a silently rewritten message - without any error.

Refuse a source that cannot be republished exactly with a 409 and a reason,
instead of corrupting the stored payload:

- requireExactSourceMessage() rejects a truncated body, a Base64 body and
  provable user-property loss. The property check is deliberately narrow:
  propertiesTruncated is computed over the raw map including broker system
  keys, while redeliveryProperties discards those keys anyway, so the guard
  only refuses when a visible user property value was abbreviated
  (MessagePropertyDisplay exposes the marker so the two cannot drift).
- MessageRedeliveryToolHandler.preview() runs the same guard as execute(),
  so the agent can never present a plan whose publish execution would
  refuse; the plan description states the refusal contract.

Tested: MetadataServiceTest, MessageRedeliveryToolHandlerTest and
MessagePropertyDisplayTest -> 72 passed. With the guard temporarily
neutralised, the new MetadataServiceTest regressions fail (3), and they pass
with it. checkstyle clean.

Report URL: 
https://github.com/apache/rocketmq-dashboard/actions/runs/37087593805

With regards,
GitHub Actions via GitBox

Reply via email to