You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by "Frun1na (via GitHub)" <gi...@apache.org> on 2026/10/15 17:02:07 UTC

[PR] fix(alert): validate the reminder interval like the duration field [rocketmq-dashboard]

Frun1na opened a new pull request, #6781:
URL: https://github.com/apache/rocketmq-dashboard/pull/6781

   ### Which Issue(s) This PR Fixes
   
   - Fixes #6779
   
   ### Brief Description
   
   `#6451` tightened `AlertRuleRequestDTO.duration` to the Prometheus duration syntax
   (`PROMETHEUS_DURATION_REGEXP`: each unit at most once, descending) but left the second duration
   field of the same DTO, `reminderInterval`, on the expression it replaced
   (`AlertRuleRequestDTO.java:63`). Both fields are parsed by the same `AlertRuleDuration`, so the
   REST create/update endpoints of both alert domains accepted `1m1m`, `1s1m` or `1h2d` on the
   interval while rejecting them on the duration: `AlertRuleDuration.parse` checks only that the
   unit matches are adjacent and sums them, so a stored `1m1m` scheduled the next reminder two
   minutes later, and the rules table rendered the raw string — a value the editor's own interval
   list (5m / 15m / 30m / 1h / 4h) does not offer.
   
   Point `reminderInterval` at `PROMETHEUS_DURATION_REGEXP` so both duration fields of a rule
   validate the same syntax. A value the console can produce is unaffected.
   
   ### How Did You Test This Change?
   
   ```
   cd server && mvn -B -ntp test -DforkCount=1 -Dtest=AlertRuleRequestDTOTest,AlertServiceTest
   Tests run: 31, Failures: 0, Errors: 0, Skipped: 0  -- AlertRuleRequestDTOTest
   Tests run: 100, Failures: 0, Errors: 0, Skipped: 0 -- AlertServiceTest
   Tests run: 131, Failures: 0, Errors: 0, Skipped: 0  (checkstyle:check green in the same run)
   ```
   
   The new tests fail without the fix — the interval field produced no violation for exactly the
   inputs the duration field rejects:
   
   ```
   AlertRuleRequestDTOTest.reminderIntervalShouldRejectUnorderedOrRepeatedUnitsTest(String)[1-5]
   Expecting actual:
     []
   to contain exactly (and in same order):
     ["reminderInterval"]
   Tests run: 31, Failures: 5, Errors: 0, Skipped: 0
   ```
   
   ### Other consumers
   
   `reminderInterval` reaches the runtime through `AlertRuleDuration.parse` only; this change
   touches the request contract, not the stored format:
   
   | Surface | Status |
   | --- | --- |
   | `POST /api/alert-rules/{create,update}` and `/api/cluster-alert-rules/{create,update}` | fixed: they share `AlertRuleRequestDTO` and its bean validation |
   | Rule transfer import (`/import`) and the AI tool `rmq.alert.create` | unchanged by design: both build the DTO in code and go through `NativeAlertRulePolicy.validate`, which still parses (and therefore accepts) a reordered interval — the same scope `#6451` chose for `duration` |
   | Stored rules | unchanged: existing values keep their meaning (`1m1m` is still read as two minutes); no migration |
   | `AlertStateMachine` reminder scheduling | unchanged: it reads the stored string through `AlertRuleDuration.parse` |
   | Prometheus rule export | not affected: the export writes `duration` only, never the reminder interval |
   
   ### Checklist
   
   - [x] One coherent change; unrelated modifications are not bundled in
   - [x] Commit subject follows Conventional Commits (`feat:` / `fix:` / `refactor:` / `chore:` / `docs:` / `perf:`)
   - [x] Tests added or updated for non-trivial changes, test methods named `...Test`
   - [ ] New UI text has both Chinese and English entries under `web/src/i18n/`
   - [ ] Architecture constraints stay green (`mvn test` runs the ArchUnit checks)
   - [ ] New source files carry the ASF license header
   - [ ] Documentation touched where behaviour changed (README / `docs/` / in-app help)
   


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


Re: [PR] fix(alert): validate the reminder interval like the duration field [rocketmq-dashboard]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] closed pull request #6781: fix(alert): validate the reminder interval like the duration field
URL: https://github.com/apache/rocketmq-dashboard/pull/6781


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


Re: [PR] fix(alert): validate the reminder interval like the duration field [rocketmq-dashboard]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #6781:
URL: https://github.com/apache/rocketmq-dashboard/pull/6781#issuecomment-6391328875

   This pull request has been automatically closed because there has been no activity for 7 days. If you would like to continue working on this, please reopen the PR with updated changes.


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