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 5ce2341c8 fix(alert): reject null delivery IDs before bulk retry 
(#5137)
5ce2341c8 is described below

commit 5ce2341c806d6b3a52aabda51c083a4bbc8ff90a
Author: coder999o <[email protected]>
AuthorDate: Thu Oct 1 17:30:57 2026 +0800

    fix(alert): reject null delivery IDs before bulk retry (#5137)
---
 .../studio/ops/alert/NotificationOutboxService.java     |  4 ++++
 .../studio/ops/alert/NotificationOutboxServiceTest.java | 17 +++++++++++++++++
 2 files changed, 21 insertions(+)

diff --git 
a/server/src/main/java/org/apache/rocketmq/studio/ops/alert/NotificationOutboxService.java
 
b/server/src/main/java/org/apache/rocketmq/studio/ops/alert/NotificationOutboxService.java
index c46fdb112..fd8806f2b 100644
--- 
a/server/src/main/java/org/apache/rocketmq/studio/ops/alert/NotificationOutboxService.java
+++ 
b/server/src/main/java/org/apache/rocketmq/studio/ops/alert/NotificationOutboxService.java
@@ -257,6 +257,10 @@ public class NotificationOutboxService {
             throw new 
org.apache.rocketmq.studio.common.exception.BusinessException(400,
                     "Provide between 1 and 100 notification delivery IDs");
         }
+        if (deliveryIds.stream().anyMatch(id -> id == null)) {
+            throw new 
org.apache.rocketmq.studio.common.exception.BusinessException(400,
+                    "Notification delivery IDs must not contain null");
+        }
         List<Long> succeeded = new ArrayList<>();
         Map<Long, String> failures = new java.util.LinkedHashMap<>();
         for (Long deliveryId : new LinkedHashSet<>(deliveryIds)) {
diff --git 
a/server/src/test/java/org/apache/rocketmq/studio/ops/alert/NotificationOutboxServiceTest.java
 
b/server/src/test/java/org/apache/rocketmq/studio/ops/alert/NotificationOutboxServiceTest.java
index 80feb2864..d12defcdc 100644
--- 
a/server/src/test/java/org/apache/rocketmq/studio/ops/alert/NotificationOutboxServiceTest.java
+++ 
b/server/src/test/java/org/apache/rocketmq/studio/ops/alert/NotificationOutboxServiceTest.java
@@ -591,6 +591,23 @@ class NotificationOutboxServiceTest {
         assertThat(result.getFailures()).containsKey(9L);
     }
 
+    @Test
+    void bulkRetryRejectsNullIdsBeforeRetryingAnyDeliveryTest() {
+        RmqAlertNotificationOutboxMapper mapper = 
mock(RmqAlertNotificationOutboxMapper.class);
+        NotificationOutboxService service = new 
NotificationOutboxService(mapper,
+                mock(SettingsRepository.class), 
mock(AlertSilenceService.class), mock(AlertRepository.class),
+                mock(OperationAuditService.class));
+
+        org.assertj.core.api.Assertions.assertThatThrownBy(() ->
+                        service.retryFailedDeliveries(Arrays.asList(8L, null)))
+                
.isInstanceOf(org.apache.rocketmq.studio.common.exception.BusinessException.class)
+                .hasMessage("Notification delivery IDs must not contain null")
+                .satisfies(error -> assertThat(
+                        
((org.apache.rocketmq.studio.common.exception.BusinessException) 
error).getCode())
+                        .isEqualTo(400));
+        org.mockito.Mockito.verifyNoInteractions(mapper);
+    }
+
     @Test
     void renewsClaimWhileEmailDeliveryIsStillInFlightTest() throws Exception {
         RmqAlertNotificationOutboxMapper mapper = 
mock(RmqAlertNotificationOutboxMapper.class);

Reply via email to