diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaRolloutManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaRolloutManagement.java index 754c6c1e1a..7b977b629c 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaRolloutManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaRolloutManagement.java @@ -561,6 +561,10 @@ private void forceQuitActionsOfRollout(final Rollout rollout) { .getContent(); log.info("Found {} active actions for rollout {}", actions.size(), rollout.getId()); + if (actions.isEmpty()) { + return; + } + storeActionsAndStatuses(actions, Action.Status.CANCELED); // find next active actions - filter by targetId list and isActive @@ -604,7 +608,7 @@ private void storeActionsAndStatuses(List actions, Action.Status stat private int updateTargetAssignedDsWithFirstActiveAction(List targetIds) { final Query updateQuery = entityManager.createNativeQuery( "UPDATE sp_target t " + - "SET t.assigned_distribution_set = ( " + + "SET assigned_distribution_set = ( " + "SELECT a.distribution_set" + " FROM sp_action a" + " WHERE a.target = t.id AND a.active = TRUE" + @@ -623,10 +627,10 @@ private int updateTargetAssignedDsWithFirstActiveAction(List targetIds) { private int updateTargetAssignedDsWithInstalledIfNoActiveActions(List targetIds) { final Query updateQuery = entityManager.createNativeQuery( "UPDATE sp_target t " + - "SET t.assigned_distribution_set = t.installed_distribution_set, t.update_status = 1 " + + "SET assigned_distribution_set = t.installed_distribution_set, update_status = 1 " + "WHERE t.id IN (" + Jpa.formatNativeQueryInClause("tid", targetIds) + ") " + " AND (SELECT count(*) FROM sp_action a " + - " WHERE a.target=t.id and a.active=1) = 0" + " WHERE a.target = t.id and a.active = TRUE) = 0" ); Jpa.setNativeQueryInParameter(updateQuery, "tid", targetIds); final int updated = updateQuery.executeUpdate(); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java index 4ec0385922..c4ce9a2925 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaRollout.java @@ -28,6 +28,7 @@ import jakarta.persistence.NamedEntityGraph; import jakarta.persistence.NamedEntityGraphs; import jakarta.persistence.OneToMany; +import jakarta.persistence.OrderBy; import jakarta.persistence.Table; import jakarta.persistence.Transient; import jakarta.validation.constraints.Max; @@ -64,6 +65,7 @@ public class JpaRollout extends AbstractJpaNamedEntity implements Rollout, EventAwareEntity { @OneToMany(targetEntity = JpaRolloutGroup.class, fetch = FetchType.LAZY, cascade = { CascadeType.REMOVE }, mappedBy = "rollout") + @OrderBy("id ASC") private List rolloutGroups = new ArrayList<>(); @Setter