unbridled-41 opened a new issue, #4895:
URL: https://github.com/apache/rocketmq-dashboard/issues/4895

   ### Studio Version
   
   branch: rocketmq-studio
   git commit id: 1ef5d860799ac3fabfcdea942cc4dcc77ded7be6 (the revision the 
reproduction below was verified against)
   deployed as: built from source
   
   ### Runtime Environment
   
   OS: Linux (WSL2). The regression test is a 
`@WebMvcTest(AclController.class)` slice with the real `AclService` between the 
controller and a mocked `AclRepository`, so no live deployment is needed.
   MySQL: the inventory path is the Studio ACL store; the slice replaces the 
repository, so no database is needed for the reproduction.
   
   ### Connected RocketMQ Cluster
   
   The rule inventory is served by the Studio ACL store rather than by a 
cluster, and the defect is the missing request parameter, so no RocketMQ 
cluster is involved.
   
   ### Describe the Bug
   
   The ACL rule table offers an "ACL 1.0 / ACL 2.0" selector and the console 
sends it as `aclVersion` on `GET /api/acl/rules`, but no server layer consumed 
it: the controller declared no such parameter (Spring silently ignores an 
unknown query parameter) and the service passed a hardcoded `null` into the 
repository's `acl_version` slot, even though the repository predicate for it 
already existed. Selecting a version therefore changed only the query string — 
the response kept every rule and the pagination total never shrank.
   
   ### Steps to Reproduce
   
   1. Have rules of both versions in the Studio ACL store (e.g. one with 
`acl_version` 2.0 and one with 1.0).
   2. Open the ACL page's rule tab and select "ACL 1.0".
   3. Observe that the request is `GET 
/api/acl/rules?...&aclVersion=1.0&page=1&pageSize=20` and that the response 
still contains both rules with the unfiltered `total`.
   
   Deterministic form: 
`AclRuleVersionFilterWebTest.ruleListShouldApplyTheAclVersionFilterToTheQuery` 
(added by the fix). On 1ef5d860 it fails with `Argument(s) are different! 
Wanted: findRulePage(null, null, null, null, "1.0", 1, 20)` / `Actual … 
position [4]: null`, i.e. the request's version never reaches the query.
   
   ### What Did You Expect to See?
   
   The version filter behaves like the other ACL rule filters (principal, 
resource, scope, decision) added for the filtered, paginated ACL rule inventory 
in #2296: it is server-authoritative, applied before paging, and the response 
contains only the selected version with a matching total.
   
   ### What Did You See Instead?
   
   The filter has no effect on the returned rows or the total. In demo/mock 
mode the same selector appears to work, because the mock service applies the 
filter client-side — which is why the control looks functional until it is used 
against a real instance.
   
   ### Additional Context
   
   - The AI tool contract `rmq.acl.list` has no version input, so that path is 
not affected by this defect.
   - Fix and regression tests: #4891.
   


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