Skip to content

Handle async network modification application results#994

Open
ayolab wants to merge 1 commit into
mainfrom
ayolab/handle-async-midification-application-results
Open

Handle async network modification application results#994
ayolab wants to merge 1 commit into
mainfrom
ayolab/handle-async-midification-application-results

Conversation

@ayolab
Copy link
Copy Markdown
Contributor

@ayolab ayolab commented May 17, 2026

No description provided.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 17, 2026

Review Change Stack

Warning

Rate limit exceeded

@ayolab has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 38 minutes and 5 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: caa586e0-b989-4cc8-856e-e31a98953ec2

📥 Commits

Reviewing files that changed from the base of the PR and between 2f2e3d8 and 61d2ea7.

📒 Files selected for processing (14)
  • src/main/java/org/gridsuite/study/server/controller/StudyController.java
  • src/main/java/org/gridsuite/study/server/dto/modification/ModificationReceiver.java
  • src/main/java/org/gridsuite/study/server/service/ConsumerService.java
  • src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java
  • src/main/java/org/gridsuite/study/server/service/RebuildNodeService.java
  • src/main/java/org/gridsuite/study/server/service/StudyService.java
  • src/main/resources/config/application.yaml
  • src/test/java/org/gridsuite/study/server/NetworkModificationTest.java
  • src/test/java/org/gridsuite/study/server/VoltageInitTest.java
  • src/test/java/org/gridsuite/study/server/WorkflowTest.java
  • src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java
  • src/test/java/org/gridsuite/study/server/studycontroller/NodeControllerTest.java
  • src/test/java/org/gridsuite/study/server/studycontroller/StudyTest.java
  • src/test/java/org/gridsuite/study/server/utils/TestUtils.java
📝 Walkthrough

Walkthrough

This PR refactors network modification workflows from synchronous result handling to asynchronous message-driven completion. The changes introduce ModificationReceiver as a message envelope, update NetworkModificationService method signatures to accept a receiver parameter and return UUID lists, and refactor StudyService to handle notifications through message-driven callbacks instead of iterating results directly.

Changes

Asynchronous modification result messaging

Layer / File(s) Summary
ModificationReceiver DTO contract
src/main/java/org/gridsuite/study/server/dto/modification/ModificationReceiver.java
New public record encapsulates study UUID, target node UUID, origin node UUID, and root network UUIDs required to route modification results and emit impact notifications.
Message consumer beans and RabbitMQ configuration
src/main/java/org/gridsuite/study/server/service/ConsumerService.java, src/main/resources/config/application.yaml
ConsumerService defines consumeApplicationResult and consumeApplicationFailed beans that deserialize ModificationReceiver from message headers and invoke StudyService callbacks. Configuration establishes Spring Cloud Stream bindings to modification.result and modification.run.dlx destinations.
NetworkModificationService API modernization
src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java
Five modification methods now accept optional ModificationReceiver parameter and return List<UUID> instead of NetworkModificationsResult. URL-encoded receiver is appended as query parameter when provided. New buildModificationReceiver helper encodes receiver payload.
StudyService async callback refactoring
src/main/java/org/gridsuite/study/server/service/StudyService.java
Modification flows (create, move, duplicate, insertComposite, insertVoltageInit) construct ModificationReceiver and call updated NetworkModificationService methods. New public methods handleApplicationResult and handleApplicationFailed receive asynchronous callbacks from message consumers and emit impact notifications and end-modification notifications. Synchronous NetworkModificationsResult iteration removed; exclusion mapping updated to derive from UUID lists.
Unblocking control-flow changes
src/main/java/org/gridsuite/study/server/controller/StudyController.java, src/main/java/org/gridsuite/study/server/service/RebuildNodeService.java
Several finally-based unconditional node-tree unblocking blocks were replaced with exception-only catch handlers that unblock and rethrow, so unblocking is performed only on exceptions in these code paths.
Test infrastructure for sending application results
src/test/java/org/gridsuite/study/server/utils/TestUtils.java
New sendApplicationResult overload family serializes ModificationReceiver from test UUIDs, URL-encodes, and sends NetworkModificationsResult to Spring Cloud Stream test input with HEADER_RECEIVER header set, enabling tests to simulate async completion.
NetworkModificationTest updates
src/test/java/org/gridsuite/study/server/NetworkModificationTest.java
Test cases for modification creation, move, duplicate, and composite operations stub POST/PUT with List<UUID> payloads. Explicit sendApplicationResult(...) calls injected after equipment-creation checks simulate async result arrival.
VoltageInitTest updates
src/test/java/org/gridsuite/study/server/VoltageInitTest.java
HTTP response mocks simplified to return UUID lists. Mock stubs for duplicateModificationsFromGroup return empty or UUID lists. Assertion ordering adjusted to send explicit application results before equipment-impact checks.
ModificationToExcludeTest updates
src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java
Mockito stubs simplified to return UUID lists directly. Argument matchers relaxed for new method signatures. Exclusion mapping logic updated to derive from UUID lists instead of result objects.
NodeControllerTest updates
src/test/java/org/gridsuite/study/server/studycontroller/NodeControllerTest.java
Cut-paste, duplicate, and cross-study node tests update stubs to use List<UUID> payloads and insert sendApplicationResult(...) calls between equipment-message assertions, synchronizing flow with async-result callbacks.
StudyTest updates
src/test/java/org/gridsuite/study/server/studycontroller/StudyTest.java
Duplicate-study flow tests update modification stubs to use List<UUID> payloads and add explicit sendApplicationResult(...) calls after equipment-creation checks for both transformer and load modifications.

Suggested reviewers

  • Meklo
  • Mathieu-Deharbe
  • SlimaneAmar
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 1.14% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive No pull request description was provided by the author, making it impossible to assess whether the description relates to the changeset. Add a pull request description explaining the purpose of the async modification application results handling, the key changes involved, and any relevant context for reviewers.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Handle async network modification application results' clearly and directly summarizes the main change—refactoring network modification flows from synchronous to asynchronous handling with callback-based result processing.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (1)
src/test/java/org/gridsuite/study/server/NetworkModificationTest.java (1)

695-703: 🏗️ Heavy lift

Extract the repeated async-modification assertion flow into a helper.

The same sequence is duplicated throughout this file (request → in-progress assertions → sendApplicationResult(...) → finished assertions). Centralizing it would reduce brittleness when message ordering/contracts evolve.

♻️ Helper sketch
+private void assertAsyncModificationFlow(
+        UUID studyUuid,
+        UUID nodeUuid,
+        Runnable triggerRequest,
+        Runnable preResultAssertions,
+        Runnable postResultAssertions) {
+    triggerRequest.run();
+    checkUpdateStatusMessagesReceived(studyUuid, nodeUuid, output);
+    checkEquipmentCreatingMessagesReceived(studyUuid, nodeUuid);
+    preResultAssertions.run();
+    studyTestUtils.sendApplicationResult(studyUuid, nodeUuid);
+    checkEquipmentUpdatingFinishedMessagesReceived(studyUuid, nodeUuid);
+    postResultAssertions.run();
+}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/test/java/org/gridsuite/study/server/NetworkModificationTest.java` around
lines 695 - 703, Extract the repeated async-modification flow into a single
helper method (e.g., assertAsyncModificationFlow or
performAsyncModificationAndAssert) that encapsulates the POST call and the four
assertions: mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid,
modificationNode1Uuid).content(bodyJson).contentType(MediaType.APPLICATION_JSON).header(USER_ID_HEADER,
userId)).andExpect(status().isOk()),
checkUpdateStatusMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid,
output), checkEquipmentCreatingMessagesReceived(studyNameUserIdUuid,
modificationNode1Uuid),
studyTestUtils.sendApplicationResult(studyNameUserIdUuid,
modificationNode1Uuid), and
checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid,
modificationNode1Uuid); make the helper accept the needed parameters
(studyNameUserIdUuid, modificationNode1Uuid, bodyJson, userId, output) and
replace all duplicated sequences in NetworkModificationTest with calls to this
new helper.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/main/java/org/gridsuite/study/server/service/ConsumerService.java`:
- Around line 223-229: The catch blocks in consumeApplicationResult and
consumeApplicationFailed currently swallow all exceptions by logging only
e.toString(), which prevents retries/DLQ; update those methods (and other
consumer handlers named consumeQueuedCommand, consumeSessionStart,
consumeSessionEnd, consumeApplicationResult, consumeApplicationFailed, etc.) to
rethrow the exception after logging (or wrap and throw a RuntimeException)
instead of returning normally—locate the try/catch around objectMapper.readValue
and studyService.handleApplicationResult/handleApplicationFailed and replace the
silent LOGGER.error(e.toString()) with LOGGER.error(..., e) followed by throw e;
or if checked, throw new RuntimeException("Error processing consumer message",
e) so the framework can trigger retries/DLQ.

In `@src/main/java/org/gridsuite/study/server/service/StudyService.java`:
- Around line 2433-2441: The loop in handleApplicationResult assumes
modificationResults() and receiver.rootNetworkUuids() are the same size and may
skip emitApplicationEnd if an index error or emitNetworkModificationImpacts
throws; validate sizes first (compute minSize =
Math.min(modificationResults.size(), rootNetworkUuids.size())) and iterate only
to minSize, and wrap the per-item call to emitNetworkModificationImpacts in a
try/catch so one failure doesn’t abort the loop; move the
emitApplicationEnd(receiver) call into a finally block so it always runs
regardless of exceptions, referencing the existing methods modificationResults,
rootNetworkUuids, emitNetworkModificationImpacts, and emitApplicationEnd.
- Around line 3385-3387: The finally block currently calls
networkModificationTreeService.unblockNodeTree(rootNetworkUuid, nodeUuid)
immediately, but duplicateModificationsFromGroup(...) is now asynchronous so
unblocking there can race with the remote apply; remove the unblock from the
finally and instead invoke
networkModificationTreeService.unblockNodeTree(rootNetworkUuid, nodeUuid) inside
the async duplicateModificationsFromGroup(...) completion handlers (both success
and failure paths) so the tree is only unblocked after the async apply finishes;
locate the callsite invoking duplicateModificationsFromGroup(...) and move the
unblock logic into its async callback/then/exception handling blocks.
- Around line 2501-2515: In copyModificationsToExclude, before doing positional
mapping into mappingModificationsUuids, validate that savedUuids.size() ==
modificationsUuids.size() and copyChildren.size() == originalChildren.size(); if
either size differs, fail fast (throw an IllegalStateException or a
domain-specific exception) with a clear message identifying the mismatched
lists; then proceed to build the maps using the verified lists (references:
method copyModificationsToExclude, variables mappingModificationsUuids,
modificationsUuids, savedUuids, originalChildren, copyChildren, and calls to
networkModificationService.findAllChildrenUuids).

In `@src/test/java/org/gridsuite/study/server/NetworkModificationTest.java`:
- Around line 2228-2229: The test sends two modification UUIDs via copyUuids2
but only supplies one result entry, so update the call to
studyTestUtils.sendApplicationResult to provide a result element for each UUID
(e.g., pass a List with two Optional<NetworkModificationResult> entries) so
NetworkModificationsResult aligns with copyUuids2; adjust the List.of(...)
argument currently wrapping
Optional.of(NetworkModificationResult.builder().build()) to include a second
Optional (or an explicit Optional.empty() if intended) so
checkEquipmentMessagesReceived receives payloads for both duplicated
modification UUIDs.

In `@src/test/java/org/gridsuite/study/server/utils/TestUtils.java`:
- Around line 114-117: The test helper currently injects InputDestination
optionally which leads to a late NPE in sendApplicationResult(...) when the test
binder is missing; make the dependency required so startup fails fast (change
the setter injection for InputDestination in setInput(InputDestination) to
`@Autowired` with required=true or drop required=false) or alternatively add a
`@PostConstruct` check that throws an IllegalStateException with a clear message
referencing sendApplicationResult when input is null; apply the same pattern to
the analogous setter/field referenced around lines 139-145 so both input/output
test-binder dependencies fail fast with a clear setup error.

---

Nitpick comments:
In `@src/test/java/org/gridsuite/study/server/NetworkModificationTest.java`:
- Around line 695-703: Extract the repeated async-modification flow into a
single helper method (e.g., assertAsyncModificationFlow or
performAsyncModificationAndAssert) that encapsulates the POST call and the four
assertions: mockMvc.perform(post(URI_NETWORK_MODIF, studyNameUserIdUuid,
modificationNode1Uuid).content(bodyJson).contentType(MediaType.APPLICATION_JSON).header(USER_ID_HEADER,
userId)).andExpect(status().isOk()),
checkUpdateStatusMessagesReceived(studyNameUserIdUuid, modificationNode1Uuid,
output), checkEquipmentCreatingMessagesReceived(studyNameUserIdUuid,
modificationNode1Uuid),
studyTestUtils.sendApplicationResult(studyNameUserIdUuid,
modificationNode1Uuid), and
checkEquipmentUpdatingFinishedMessagesReceived(studyNameUserIdUuid,
modificationNode1Uuid); make the helper accept the needed parameters
(studyNameUserIdUuid, modificationNode1Uuid, bodyJson, userId, output) and
replace all duplicated sequences in NetworkModificationTest with calls to this
new helper.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 077a9acf-f37f-45ca-8939-fa8e20c0e760

📥 Commits

Reviewing files that changed from the base of the PR and between f495cde and 5ddd50d.

📒 Files selected for processing (11)
  • src/main/java/org/gridsuite/study/server/dto/modification/ModificationReceiver.java
  • src/main/java/org/gridsuite/study/server/service/ConsumerService.java
  • src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java
  • src/main/java/org/gridsuite/study/server/service/StudyService.java
  • src/main/resources/config/application.yaml
  • src/test/java/org/gridsuite/study/server/NetworkModificationTest.java
  • src/test/java/org/gridsuite/study/server/VoltageInitTest.java
  • src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java
  • src/test/java/org/gridsuite/study/server/studycontroller/NodeControllerTest.java
  • src/test/java/org/gridsuite/study/server/studycontroller/StudyTest.java
  • src/test/java/org/gridsuite/study/server/utils/TestUtils.java

Comment thread src/main/java/org/gridsuite/study/server/service/StudyService.java Outdated
Comment thread src/main/java/org/gridsuite/study/server/service/StudyService.java
Comment thread src/main/java/org/gridsuite/study/server/service/StudyService.java Outdated
Comment thread src/test/java/org/gridsuite/study/server/utils/TestUtils.java
@ayolab ayolab force-pushed the ayolab/handle-async-midification-application-results branch from 5ddd50d to 2f2e3d8 Compare May 17, 2026 18:33
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/main/java/org/gridsuite/study/server/service/RebuildNodeService.java (1)

30-32: ⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

Defer rebuilds until async application completion.

These entry points still run through handleRebuildNode(...), which rebuilds previously built root networks immediately after studyService.createNetworkModification(...) / studyService.moveNetworkModifications(...) returns. After this refactor those calls only submit async application work, so the rebuild can now run before the modification result callback has applied the change and unblocked the tree. Please trigger the rebuild from the async completion path instead of keeping these operations under the synchronous handleRebuildNode(...) flow.

Also applies to: 37-42, 84-86, 123-131

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/main/java/org/gridsuite/study/server/service/RebuildNodeService.java`
around lines 30 - 32, The current createNetworkModification (and the other
similar entry points that call handleRebuildNode) invokes handleRebuildNode
synchronously around the call to handleCreateNetworkModification, which causes
rebuilds to run before the async application of the modification completes;
instead remove the synchronous handleRebuildNode wrapper and invoke
handleRebuildNode (or the rebuild logic) from the async
completion/callback/future returned by the studyService call (the path that
actually applies the modification result), so change createNetworkModification,
moveNetworkModifications and the other listed methods to only submit the async
work (call handleCreateNetworkModification / handleMoveNetworkModifications) and
attach a continuation that calls handleRebuildNode(studyUuid, nodeUuid, userId)
after the studyService.createNetworkModification /
studyService.moveNetworkModifications completion promise/callback indicates the
change is applied.
🧹 Nitpick comments (1)
src/main/java/org/gridsuite/study/server/service/StudyService.java (1)

2445-2457: 💤 Low value

Past review concern partially addressed: finally block now ensures cleanup.

The emitApplicationEnd(receiver) is now in a finally block, so the node will always be unblocked even if emitNetworkModificationImpacts throws. However, if modificationResults.size() > rootNetworkUuids.size(), an IndexOutOfBoundsException would occur at line 2452. While cleanup will still happen, adding a size check would provide clearer error handling.

🛡️ Optional defensive size validation
 public void handleApplicationResult(ModificationReceiver receiver, NetworkModificationsResult result) {
     try {
         List<Optional<NetworkModificationResult>> modificationResults = result.modificationResults();
         List<UUID> rootNetworkUuids = receiver.rootNetworkUuids();
+        if (modificationResults.size() != rootNetworkUuids.size()) {
+            LOGGER.warn("Mismatch between modification results ({}) and root networks ({})",
+                modificationResults.size(), rootNetworkUuids.size());
+        }
+        int limit = Math.min(modificationResults.size(), rootNetworkUuids.size());
-        for (int i = 0; i < modificationResults.size(); i++) {
+        for (int i = 0; i < limit; i++) {
             final int index = i;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/main/java/org/gridsuite/study/server/service/StudyService.java` around
lines 2445 - 2457, In handleApplicationResult, guard against a possible
IndexOutOfBoundsException when modificationResults.size() >
rootNetworkUuids.size() by validating sizes before accessing rootNetworkUuids:
compute the smaller of result.modificationResults().size() and
receiver.rootNetworkUuids().size() (or explicitly check and log/throw a
descriptive IllegalStateException) and iterate up to that bound when calling
emitNetworkModificationImpacts(receiver.studyUuid(), receiver.nodeUuid(),
rootNetworkUuids.get(index), r); keep the existing finally block with
emitApplicationEnd(receiver) unchanged so cleanup still runs.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@src/main/java/org/gridsuite/study/server/service/RebuildNodeService.java`:
- Around line 30-32: The current createNetworkModification (and the other
similar entry points that call handleRebuildNode) invokes handleRebuildNode
synchronously around the call to handleCreateNetworkModification, which causes
rebuilds to run before the async application of the modification completes;
instead remove the synchronous handleRebuildNode wrapper and invoke
handleRebuildNode (or the rebuild logic) from the async
completion/callback/future returned by the studyService call (the path that
actually applies the modification result), so change createNetworkModification,
moveNetworkModifications and the other listed methods to only submit the async
work (call handleCreateNetworkModification / handleMoveNetworkModifications) and
attach a continuation that calls handleRebuildNode(studyUuid, nodeUuid, userId)
after the studyService.createNetworkModification /
studyService.moveNetworkModifications completion promise/callback indicates the
change is applied.

---

Nitpick comments:
In `@src/main/java/org/gridsuite/study/server/service/StudyService.java`:
- Around line 2445-2457: In handleApplicationResult, guard against a possible
IndexOutOfBoundsException when modificationResults.size() >
rootNetworkUuids.size() by validating sizes before accessing rootNetworkUuids:
compute the smaller of result.modificationResults().size() and
receiver.rootNetworkUuids().size() (or explicitly check and log/throw a
descriptive IllegalStateException) and iterate up to that bound when calling
emitNetworkModificationImpacts(receiver.studyUuid(), receiver.nodeUuid(),
rootNetworkUuids.get(index), r); keep the existing finally block with
emitApplicationEnd(receiver) unchanged so cleanup still runs.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 405080c3-8cfe-4e3c-9a8b-e4a0403e7d98

📥 Commits

Reviewing files that changed from the base of the PR and between 5ddd50d and 2f2e3d8.

📒 Files selected for processing (13)
  • src/main/java/org/gridsuite/study/server/controller/StudyController.java
  • src/main/java/org/gridsuite/study/server/dto/modification/ModificationReceiver.java
  • src/main/java/org/gridsuite/study/server/service/ConsumerService.java
  • src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java
  • src/main/java/org/gridsuite/study/server/service/RebuildNodeService.java
  • src/main/java/org/gridsuite/study/server/service/StudyService.java
  • src/main/resources/config/application.yaml
  • src/test/java/org/gridsuite/study/server/NetworkModificationTest.java
  • src/test/java/org/gridsuite/study/server/VoltageInitTest.java
  • src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java
  • src/test/java/org/gridsuite/study/server/studycontroller/NodeControllerTest.java
  • src/test/java/org/gridsuite/study/server/studycontroller/StudyTest.java
  • src/test/java/org/gridsuite/study/server/utils/TestUtils.java
🚧 Files skipped from review as they are similar to previous changes (10)
  • src/main/java/org/gridsuite/study/server/dto/modification/ModificationReceiver.java
  • src/main/resources/config/application.yaml
  • src/test/java/org/gridsuite/study/server/utils/TestUtils.java
  • src/test/java/org/gridsuite/study/server/rootnetworks/ModificationToExcludeTest.java
  • src/test/java/org/gridsuite/study/server/studycontroller/StudyTest.java
  • src/test/java/org/gridsuite/study/server/studycontroller/NodeControllerTest.java
  • src/test/java/org/gridsuite/study/server/NetworkModificationTest.java
  • src/main/java/org/gridsuite/study/server/service/ConsumerService.java
  • src/main/java/org/gridsuite/study/server/service/NetworkModificationService.java
  • src/test/java/org/gridsuite/study/server/VoltageInitTest.java

Signed-off-by: Ayoub LABIDI <ayoub.labidi@protonmail.com>
@ayolab ayolab force-pushed the ayolab/handle-async-midification-application-results branch from 2f2e3d8 to 61d2ea7 Compare May 17, 2026 18:55
@sonarqubecloud
Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant