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());