Skip to content

Commit 7e90e02

Browse files
committed
BuildVariant, back to synchronous API because not exposed in rest controller, only rabbitmq consume
1 parent 97b96ed commit 7e90e02

File tree

6 files changed

+10
-18
lines changed

6 files changed

+10
-18
lines changed

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ private NetworkModificationResult flushModificationApplications(ApplicationStatu
138138
* Note : it is possible that the rabbitmq consumer threads here will be blocked by modifications applied directly in the other applyModifications method
139139
* and no more builds can go through. If this causes problems we should put them in separate rabbitmq queues.
140140
*/
141-
public CompletableFuture<NetworkModificationResult> applyModifications(List<ModificationApplicationGroup> modificationInfosGroups, NetworkInfos networkInfos) {
141+
public NetworkModificationResult applyModifications(List<ModificationApplicationGroup> modificationInfosGroups, NetworkInfos networkInfos) {
142142
PreloadingStrategy preloadingStrategy = modificationInfosGroups.stream()
143143
.map(ModificationApplicationGroup::modifications)
144144
.flatMap(List::stream)
@@ -151,16 +151,13 @@ public CompletableFuture<NetworkModificationResult> applyModifications(List<Modi
151151
NetworkStoreListener listener = NetworkStoreListener.create(networkInfos.getNetwork(), networkInfos.getNetworkUuuid(), networkStoreService, equipmentInfosService, applicationInfosService, collectionThreshold);
152152
if (preloadingStrategy == PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW) {
153153
return largeNetworkModificationExecutionService
154-
.supplyAsync(() -> applyAndFlush(modificationInfosGroups, listener));
154+
.supplyAsync(() -> applyAndFlush(modificationInfosGroups, listener))
155+
.join();
155156
} else {
156-
return CompletableFuture.completedFuture(applyAndFlush(modificationInfosGroups, listener));
157+
return applyAndFlush(modificationInfosGroups, listener);
157158
}
158159
}
159160

160-
public NetworkModificationResult applyModificationsBlocking(List<ModificationApplicationGroup> modificationInfosGroups, NetworkInfos networkInfos) {
161-
return this.applyModifications(modificationInfosGroups, networkInfos).join();
162-
}
163-
164161
private NetworkModificationResult applyAndFlush(List<ModificationApplicationGroup> modificationInfosGroups,
165162
NetworkStoreListener listener) {
166163
List<ApplicationStatus> groupsApplicationStatuses = apply(modificationInfosGroups, listener);

src/main/java/org/gridsuite/modification/server/service/BuildWorkerService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,7 @@ private CompletableFuture<NetworkModificationResult> execBuildVariant(BuildExecC
8484

8585
CompletableFuture<NetworkModificationResult> future = CompletableFuture.supplyAsync(() -> {
8686
LOGGER.info("Starting build on variant : {}", buildInfos.getDestinationVariantId());
87-
// TODO avoid blocking the forkjoinpool commonpool when we are using our own executor
88-
return networkModificationService.buildVariantBlocking(networkUuid, buildInfos);
87+
return networkModificationService.buildVariant(networkUuid, buildInfos);
8988
}
9089
);
9190

src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ public Network cloneNetworkVariant(UUID networkUuid,
250250
return network;
251251
}
252252

253-
public CompletableFuture<NetworkModificationResult> buildVariant(@NonNull UUID networkUuid, @NonNull BuildInfos buildInfos) {
253+
public NetworkModificationResult buildVariant(@NonNull UUID networkUuid, @NonNull BuildInfos buildInfos) {
254254
// Apply all modifications belonging to the modification groups uuids in buildInfos
255255
List<ModificationApplicationGroup> modificationGroupsInfos = new ArrayList<>();
256256
Streams.forEachPair(buildInfos.getModificationGroupUuids().stream(), buildInfos.getReportsInfos().stream(),
@@ -286,10 +286,6 @@ public CompletableFuture<NetworkModificationResult> buildVariant(@NonNull UUID n
286286
return modificationApplicator.applyModifications(modificationGroupsInfos, networkInfos);
287287
}
288288

289-
public NetworkModificationResult buildVariantBlocking(@NonNull UUID networkUuid, @NonNull BuildInfos buildInfos) {
290-
return buildVariant(networkUuid, buildInfos).join();
291-
}
292-
293289
public void buildVariantRequest(UUID networkUuid, BuildInfos buildInfos, String receiver, WorkflowType workflowType, String workflowInfos) {
294290
notificationService.emitBuildMessage(new BuildExecContext(networkUuid, buildInfos, receiver, workflowType, workflowInfos).toMessage(objectMapper));
295291
}

src/test/java/org/gridsuite/modification/server/service/BuildTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1023,7 +1023,7 @@ void testLastGroupModificationStatus(final MockWebServer server) {
10231023
);
10241024

10251025
//Global application status should be in error and last application status should be OK
1026-
NetworkModificationResult networkModificationResult = networkModificationApplicator.applyModificationsBlocking(modificationInfosGroups, new NetworkInfos(network, TEST_NETWORK_ID, true));
1026+
NetworkModificationResult networkModificationResult = networkModificationApplicator.applyModifications(modificationInfosGroups, new NetworkInfos(network, TEST_NETWORK_ID, true));
10271027
assertNotNull(networkModificationResult);
10281028
testEmptyImpactsWithErrorsLastOK(networkModificationResult);
10291029
assertTrue(TestUtils.getRequestsDone(2, server).stream().anyMatch(r -> r.matches(String.format("/v1/reports/%s", reportUuid))));

src/test/java/org/gridsuite/modification/server/service/BuildWorkerServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,12 @@ void testConsumeBuildWithWorkflowInfos() throws JsonProcessingException {
7575
headers.put(WORKFLOW_INFOS_HEADER, workflowInfos);
7676
MessageHeaders messageHeaders = new MessageHeaders(headers);
7777

78-
when(networkModificationService.buildVariantBlocking(eq(networkUuid), any(BuildInfos.class))).thenReturn(modificationResult);
78+
when(networkModificationService.buildVariant(eq(networkUuid), any(BuildInfos.class))).thenReturn(modificationResult);
7979

8080
buildWorkerService.consumeBuild().accept(MessageBuilder.createMessage(objectMapper.writeValueAsString(buildInfos), messageHeaders));
8181

8282
ArgumentCaptor<BuildInfos> buildInfosArgumentCaptor = ArgumentCaptor.forClass(BuildInfos.class);
83-
verify(networkModificationService, times(1)).buildVariantBlocking(eq(networkUuid), buildInfosArgumentCaptor.capture());
83+
verify(networkModificationService, times(1)).buildVariant(eq(networkUuid), buildInfosArgumentCaptor.capture());
8484
assertThat(buildInfosArgumentCaptor.getValue()).usingRecursiveComparison().isEqualTo(buildInfos);
8585

8686
ArgumentCaptor<Message> messageArgumentCaptor = ArgumentCaptor.forClass(Message.class);

src/test/java/org/gridsuite/modification/server/service/NetworkModificationApplicatorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ void testApplyModificationsWithGroupsAndAllCollectionsNeededForBusView() {
9494

9595
when(modificationInfosGroups.get(0).modifications().get(0).getType()).thenReturn(ModificationType.VOLTAGE_INIT_MODIFICATION.name());
9696

97-
NetworkModificationResult result = networkModificationApplicator.applyModificationsBlocking(modificationInfosGroups, networkInfos);
97+
NetworkModificationResult result = networkModificationApplicator.applyModifications(modificationInfosGroups, networkInfos);
9898

9999
assertNotNull(result);
100100
verify(largeNetworkModificationExecutionService).supplyAsync(any());

0 commit comments

Comments
 (0)