This is an automated email from the ASF dual-hosted git repository.

lizhimins pushed a commit to branch rocketmq-studio
in repository https://gitbox.apache.org/repos/asf/rocketmq-dashboard.git


The following commit(s) were added to refs/heads/rocketmq-studio by this push:
     new dac9fc1f1 fix(acl): prevent Tencent rule page overflow (#2562)
dac9fc1f1 is described below

commit dac9fc1f1e107b2332925d310c62ab03da5a6748
Author: btlqql <[email protected]>
AuthorDate: Tue Aug 25 17:36:41 2026 +0800

    fix(acl): prevent Tencent rule page overflow (#2562)
---
 .../rocketmq/studio/instance/acl/AclService.java      |  2 +-
 .../rocketmq/studio/instance/acl/AclServiceTest.java  | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git 
a/server/src/main/java/org/apache/rocketmq/studio/instance/acl/AclService.java 
b/server/src/main/java/org/apache/rocketmq/studio/instance/acl/AclService.java
index 3cf970187..716ad88a9 100644
--- 
a/server/src/main/java/org/apache/rocketmq/studio/instance/acl/AclService.java
+++ 
b/server/src/main/java/org/apache/rocketmq/studio/instance/acl/AclService.java
@@ -396,7 +396,7 @@ public class AclService {
 
     private static PageResult<AclRuleVO> paginateRules(List<AclRuleVO> rules, 
int page, int pageSize) {
         int total = rules.size();
-        int fromIndex = Math.min((page - 1) * pageSize, total);
+        int fromIndex = (int) Math.min(Pagination.pageOffset(page, pageSize), 
total);
         int toIndex = Math.min(fromIndex + pageSize, total);
         return PageResult.of(rules.subList(fromIndex, toIndex), total, page, 
pageSize);
     }
diff --git 
a/server/src/test/java/org/apache/rocketmq/studio/instance/acl/AclServiceTest.java
 
b/server/src/test/java/org/apache/rocketmq/studio/instance/acl/AclServiceTest.java
index e1274ab03..33f318e59 100644
--- 
a/server/src/test/java/org/apache/rocketmq/studio/instance/acl/AclServiceTest.java
+++ 
b/server/src/test/java/org/apache/rocketmq/studio/instance/acl/AclServiceTest.java
@@ -187,6 +187,25 @@ class AclServiceTest {
         verifyNoInteractions(tencentAclService);
     }
 
+    @Test
+    void 
listRulesShouldReturnEmptyPageWhenTencentPageOffsetExceedsIntegerRange() {
+        InstanceVO instance = InstanceVO.builder()
+                .name("tencent-instance")
+                .vendor(InstanceVendor.TENCENT)
+                .type(InstanceType.CLOUD)
+                .build();
+        
when(instanceRepository.findByIdentifier("tencent-instance")).thenReturn(Optional.of(instance));
+        when(tencentAclService.listRules("tencent-instance", 
null)).thenReturn(List.of(
+                
AclRuleVO.builder().principal("role-a").resource("topic-a").build()));
+
+        PageResult<AclRuleVO> result = aclService.listRules(null, null, null, 
null, null,
+                "tencent-instance", Integer.MAX_VALUE, 100);
+
+        assertThat(result.getItems()).isEmpty();
+        assertThat(result.getTotal()).isEqualTo(1);
+        assertThat(result.getPage()).isEqualTo(Integer.MAX_VALUE);
+    }
+
     @Test
     void createRuleShouldSetIdAndTimestamp() {
         AclRuleVO input = AclRuleVO.builder()

Reply via email to