Fix transitive software module lock on explicit DS lock (#1762)
Signed-off-by: Marinov Avgustin <Avgustin.Marinov@bosch.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user