From beeb2523e2a71991903e8a0a9650e1033e432d26 Mon Sep 17 00:00:00 2001 From: Avgustin Marinov Date: Fri, 12 Jul 2024 16:43:17 +0300 Subject: [PATCH] Fix transactions on mysql of createActionsForDynamicGroupInNewTransaction (#1768) Signed-off-by: Marinov Avgustin --- .../repository/jpa/JpaRolloutExecutor.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaRolloutExecutor.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaRolloutExecutor.java index 11896d761..2bb8d9537 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaRolloutExecutor.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaRolloutExecutor.java @@ -784,7 +784,7 @@ public class JpaRolloutExecutor implements RolloutExecutor { private int createActionsForDynamicGroupInNewTransaction(final JpaRollout rollout, final RolloutGroup group, final String targetFilter, final long limit) { - final List newActions = DeploymentHelper.runInNewTransaction(txManager, "createActionsForRolloutDynamicGroup", status -> { + return DeploymentHelper.runInNewTransaction(txManager, "createActionsForRolloutDynamicGroup", status -> { final PageRequest pageRequest = PageRequest.of(0, Math.toIntExact(limit)); final Slice targets = targetManagement.findByNotInGEGroupAndNotInActiveActionGEWeightOrInRolloutAndTargetFilterQueryAndCompatibleAndUpdatable( pageRequest, @@ -793,20 +793,19 @@ public class JpaRolloutExecutor implements RolloutExecutor { targetFilter, rollout.getDistributionSet().getType()); if (targets.getNumberOfElements() == 0) { - return Collections.emptyList(); + return 0; } final DistributionSet distributionSet = rollout.getDistributionSet(); final ActionType actionType = rollout.getActionType(); final long forceTime = rollout.getForcedTime(); - return createActions(targets.getContent(), distributionSet, actionType, forceTime, rollout, group); + final List newActions = createActions(targets.getContent(), distributionSet, actionType, forceTime, rollout, group); + if (!newActions.isEmpty()) { + deploymentManagement.startScheduledActions(newActions); + } + + return newActions.size(); }); - - if (!newActions.isEmpty()) { - deploymentManagement.startScheduledActions(newActions); - } - - return newActions.size(); } /**