Refresh rollout in runAsSystem (#2164)

This commit is contained in:
Stanislav Trailov
2025-01-06 12:16:19 +02:00
committed by GitHub
parent 172df72e4e
commit a56cf69ccf

View File

@@ -44,18 +44,18 @@ public class PauseRolloutGroupAction implements RolloutGroupActionEvaluator<Roll
@Override
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;
systemSecurityContext.runAsSystem(() -> {
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());