Fix pause of rollout on error condition (#2161)
Signed-off-by: TRS1SF3 <Stanislav.Trailov@bosch.io>
This commit is contained in:
committed by
GitHub
parent
4df4e7981b
commit
0e4307059b
@@ -43,12 +43,23 @@ public class PauseRolloutGroupAction implements RolloutGroupActionEvaluator<Roll
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exec(final Rollout rollout, final RolloutGroup rolloutG) {
|
public void exec(final Rollout rollout, final RolloutGroup rolloutG) {
|
||||||
|
|
||||||
|
/*
|
||||||
|
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
|
||||||
|
*/
|
||||||
|
Rollout refreshedRollout = rolloutManagement.get(rollout.getId()).orElseThrow();
|
||||||
final JpaRolloutGroup rolloutGroup = (JpaRolloutGroup) rolloutG;
|
final JpaRolloutGroup rolloutGroup = (JpaRolloutGroup) rolloutG;
|
||||||
|
|
||||||
systemSecurityContext.runAsSystem(() -> {
|
systemSecurityContext.runAsSystem(() -> {
|
||||||
rolloutGroup.setStatus(RolloutGroupStatus.ERROR);
|
rolloutGroup.setStatus(RolloutGroupStatus.ERROR);
|
||||||
rolloutGroupRepository.save(rolloutGroup);
|
rolloutGroupRepository.save(rolloutGroup);
|
||||||
rolloutManagement.pauseRollout(rollout.getId());
|
if (Rollout.RolloutStatus.PAUSED != refreshedRollout.getStatus()) {
|
||||||
|
// if only the latest state is != paused then pause
|
||||||
|
rolloutManagement.pauseRollout(rollout.getId());
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user