Skip to content

Commit 0a74098

Browse files
authored
Modification flush: use the same thread as for apply (bounded thread pool for large modifications) (#692)
1 parent c72bfa8 commit 0a74098

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,18 @@ public NetworkModificationResult applyModifications(ModificationApplicationGroup
106106
.orElse(PreloadingStrategy.NONE);
107107

108108
NetworkStoreListener listener = NetworkStoreListener.create(networkInfos.getNetwork(), networkInfos.getNetworkUuuid(), networkStoreService, equipmentInfosService, applicationInfosService, collectionThreshold);
109-
ApplicationStatus groupApplicationStatus;
110109
if (preloadingStrategy == PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW) {
111-
groupApplicationStatus = largeNetworkModificationExecutionService
112-
.supplyAsync(() -> apply(modificationInfosGroup, listener))
110+
return largeNetworkModificationExecutionService
111+
.supplyAsync(() -> applyAndFlush(modificationInfosGroup, listener))
113112
.join();
114113
} else {
115-
groupApplicationStatus = apply(modificationInfosGroup, listener);
114+
return applyAndFlush(modificationInfosGroup, listener);
116115
}
116+
}
117117

118-
return flushModificationApplications(groupApplicationStatus, listener);
118+
private NetworkModificationResult applyAndFlush(ModificationApplicationGroup modificationInfosGroup,
119+
NetworkStoreListener listener) {
120+
return flushModificationApplications(apply(modificationInfosGroup, listener), listener);
119121
}
120122

121123
private NetworkModificationResult flushModificationApplications(ApplicationStatus groupApplicationStatus, NetworkStoreListener listener) {
@@ -147,16 +149,18 @@ public NetworkModificationResult applyModifications(List<ModificationApplication
147149
.orElse(PreloadingStrategy.NONE);
148150

149151
NetworkStoreListener listener = NetworkStoreListener.create(networkInfos.getNetwork(), networkInfos.getNetworkUuuid(), networkStoreService, equipmentInfosService, applicationInfosService, collectionThreshold);
150-
List<ApplicationStatus> groupsApplicationStatuses;
151152
if (preloadingStrategy == PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW) {
152-
groupsApplicationStatuses = largeNetworkModificationExecutionService
153-
.supplyAsync(() -> apply(modificationInfosGroups, listener))
153+
return largeNetworkModificationExecutionService
154+
.supplyAsync(() -> applyAndFlush(modificationInfosGroups, listener))
154155
.join();
155156
} else {
156-
groupsApplicationStatuses = apply(modificationInfosGroups, listener);
157+
return applyAndFlush(modificationInfosGroups, listener);
157158
}
159+
}
158160

159-
return flushModificationApplications(groupsApplicationStatuses, listener);
161+
private NetworkModificationResult applyAndFlush(List<ModificationApplicationGroup> modificationInfosGroups,
162+
NetworkStoreListener listener) {
163+
return flushModificationApplications(apply(modificationInfosGroups, listener), listener);
160164
}
161165

162166
// This method is used when building a variant

0 commit comments

Comments
 (0)