From a56cf69ccf51d8d964e59c2d6d3bd95a582de3d9 Mon Sep 17 00:00:00 2001 From: Stanislav Trailov Date: Mon, 6 Jan 2025 12:16:19 +0200 Subject: [PATCH] Refresh rollout in runAsSystem (#2164) --- .../rollout/condition/PauseRolloutGroupAction.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rollout/condition/PauseRolloutGroupAction.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rollout/condition/PauseRolloutGroupAction.java index 6cd945f7c..151edfe00 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rollout/condition/PauseRolloutGroupAction.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rollout/condition/PauseRolloutGroupAction.java @@ -44,18 +44,18 @@ public class PauseRolloutGroupAction implements RolloutGroupActionEvaluator { rolloutGroup.setStatus(RolloutGroupStatus.ERROR); rolloutGroupRepository.save(rolloutGroup); + /* + Refresh latest rollout state in order to escape cases when + previous group have matched error condition and paused the rollout + and this one tries to pause the rollout too but throws an exception + and rollbacks rollout processing transaction + */ + final Rollout refreshedRollout = rolloutManagement.get(rollout.getId()).orElseThrow(); if (Rollout.RolloutStatus.PAUSED != refreshedRollout.getStatus()) { // if only the latest state is != paused then pause rolloutManagement.pauseRollout(rollout.getId());