The GitHub Actions job "CI" on rocketmq-dashboard.git/fix/delivery-bulk-retry-isolation has failed. Run started by GitHub user unbridled-41 (triggered by unbridled-41).
Head commit for run: d2daf2fae9c40df9eaf49004d6a401b2574640e2 / unbridled-41 <[email protected]> fix(alert): keep the bulk delivery retry going when one id fails unexpectedly retryFailedDeliveries isolates each id from the others on purpose ("retries failed deliveries independently in bulk"), but the loop only catches BusinessException: for (Long deliveryId : new LinkedHashSet<>(deliveryIds)) { try { retryFailedDelivery(deliveryId); succeeded.add(deliveryId); } catch (BusinessException error) { failures.put(deliveryId, error.getMessage()); } } Every id is committed by its own mapper.update before the next one starts, so a RuntimeException on a later row (a DataAccessException, an unexpected mapping failure) escapes the loop and answers the whole request with a 500 - discarding the per-id outcome of the rows that were already flipped to PENDING. The page then shows the bulk-retry error and does not reload, so those rows keep displaying FAILED although the dispatcher will deliver them. Catch RuntimeException per item as well, record it like the business failures, and keep the loop's guarantee. This is the same per-item isolation InstanceService.deleteInstances and AlertService.bulkDeleteRules already use. Tests (server/): mvn -o -B -ntp test -Dtest='org.apache.rocketmq.studio.ops.alert.**' -> Tests run: 327, Failures: 0, Errors: 0. - new bulkRetryKeepsTheOutcomeOfEarlierDeliveriesWhenALaterOneFailsUnexpectedlyTest fails before this change (the DataAccessResourceFailureException escapes as an error) and passes after it, asserting succeededIds=[8] and failures contains 9. - mvn -o -B -ntp checkstyle:check passes. Report URL: https://github.com/apache/rocketmq-dashboard/actions/runs/37979629719 With regards, GitHub Actions via GitBox
