diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java index 29a9a7292..5d356a6c7 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java @@ -275,9 +275,14 @@ public class JpaDistributionSetManagement implements DistributionSetManagement { // lock/unlock ONLY if locked flag is present! if (Boolean.TRUE.equals(update.locked())) { - set.lock(); + if (!set.isLocked()) { + lockSoftwareModules(set); + set.lock(); + } } else if (Boolean.FALSE.equals(update.locked())) { - set.unlock(); + if (set.isLocked()) { + set.unlock(); + } } if (update.isRequiredMigrationStep() != null @@ -680,13 +685,7 @@ public class JpaDistributionSetManagement implements DistributionSetManagement { public void lock(final long id) { final JpaDistributionSet distributionSet = getById(id); if (!distributionSet.isLocked()) { - distributionSet.getModules().forEach(module -> { - if (!module.isLocked()) { - final JpaSoftwareModule jpaSoftwareModule = (JpaSoftwareModule)module; - jpaSoftwareModule.lock(); - softwareModuleRepository.save(jpaSoftwareModule); - } - }); + lockSoftwareModules(distributionSet); distributionSet.lock(); distributionSetRepository.save(distributionSet); } @@ -839,6 +838,16 @@ public class JpaDistributionSetManagement implements DistributionSetManagement { return true; } + private void lockSoftwareModules(final JpaDistributionSet distributionSet) { + distributionSet.getModules().forEach(module -> { + if (!module.isLocked()) { + final JpaSoftwareModule jpaSoftwareModule = (JpaSoftwareModule)module; + jpaSoftwareModule.lock(); + softwareModuleRepository.save(jpaSoftwareModule); + } + }); + } + private JpaDistributionSet getById(final long id) { return distributionSetRepository .findById(id)