zmuxuny opened a new issue, #6188:
URL: https://github.com/apache/rocketmq-dashboard/issues/6188

   ### Before Creating the Bug Report
   
   - [x] I have searched the [open 
issues](https://github.com/apache/rocketmq-dashboard/issues) of this repository 
and believe that this is not a duplicate.
   
   - [x] This is a defect in RocketMQ Studio, not a usage question and not a 
defect in another Apache RocketMQ repository.
   
   - [x] I can reproduce this on the current `master` branch, or I have stated 
the exact version I am running below.
   
   
   ### Studio Version
   
   rocketmq-studio@5e4c39b0, verified 2026-10-10.
   
   ### Runtime Environment
   
   Deterministic integration-style unit tests using real Apache 
cluster/business collectors, processor/evaluation and suppression services. 
External provider and persistence boundaries are controlled. No real broker, 
notification recipient or account changed.
   
   ### Connected RocketMQ Cluster
   
   Synthetic registered Apache instance exposing physical clusters A and B 
through one NameServer. This is correlation within one instance, not 
cross-account exposure or ACL isolation.
   
   ### Build Toolchain
   
   _No response_
   
   ### Describe the Bug
   
   Native collectors retain physical cluster identity in 
MetricSample.clusterId, but NativeAlertEvaluationService builds system alerts 
from sample.labels() without carrying that identity into event correlation 
labels. AlertCorrelationScope rejects conflicting clusters only when both 
events actually carry them. As a result, an active cluster-A broker incident 
can suppress an unrelated cluster-B consumer backlog notification.
   
   Compatibility matters when adding cluster labels: a stored legacy FIRING 
event without cluster labels and a newer RESOLVED event with known cluster may 
share one fingerprint. Selecting by scope before selecting the latest state can 
discard the resolution and leave the old incident incorrectly active.
   
   ### Steps to Reproduce
   
   Drive real Apache cluster and business collectors, then production 
processor/evaluation and notification suppression. Events are produced by the 
real projection, not hand-built incomplete event fixtures.
   
   1. Registered instance exposes clusters A and B.
   2. A broker in A is unavailable; a consumer group in B exceeds backlog 
threshold.
   3. The A incident incorrectly suppresses B notification.
   4. Check authoritative sample.clusterId survives event projection without 
changing fingerprint.
   5. Exercise legacy unlabeled FIRING followed by labeled RESOLVED with the 
same fingerprint; newest state must be selected before scope filtering.
   
   ### What Did You Expect to See?
   
   Known physical-cluster identity survives event projection; A incidents 
cannot suppress B notifications. Same-cluster correlation and existing 
unknown-cluster fallback remain. Preserve existing fingerprints and incident 
identity. Resolve the latest state for a fingerprint before applying scope so 
adding labels does not resurrect an older active incident.
   
   ### What Did You See Instead?
   
   Final unchanged-production regression run: 16 tests, exactly 3 failures, 13 
passing controls, 0 errors, 0 skipped. Failures cover real collector-A broker 
suppressing collector-B backlog, authoritative sample.clusterId absent from 
event labels, and scope filtering hiding a newer labeled RESOLVED event while 
retaining the legacy unlabeled FIRING event. These are controlled fixtures, not 
an observed production incident.
   
   ### Additional Context
   
   ### Duplicate check
   - #5833 / #3245 / #3414 cover AlertCorrelationScope with already-populated 
labels.
   - #4710 concerns padded instance IDs.
   - #4873 concerns reminder-only related events; #2827 candidate pagination.
   - #2961 concerns legacy events without fingerprints rather than 
latest-state-before-scope selection.
   No matching active or historical implementation was found for this 
collector/evaluation projection and compatibility path.
   
   ### Acceptance criteria
   - Preserve authoritative metric cluster identity in event correlation labels.
   - Keep fingerprints stable.
   - Prevent cross-cluster suppression within a multi-cluster instance.
   - Preserve same-cluster and unknown-cluster fallback behavior.
   - Newer resolved state supersedes legacy active state before scope filtering.
   - Regression coverage uses real collector-to-evaluation-to-suppression path.
   
   AI assistance was used for source tracing and deterministic regression 
authoring.
   
   ### Are You Willing to Submit a Pull Request?
   
   - [x] Yes, I am willing to submit a pull request.


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