From d66cf9aba386eb1cd30c0b664e625e49c79e4956 Mon Sep 17 00:00:00 2001 From: "SOUISSI Maissa (Externe)" Date: Tue, 27 Oct 2026 11:25:43 +0100 Subject: [PATCH 1/2] fix Signed-off-by: SOUISSI Maissa (Externe) --- .../study/server/service/ConsumerService.java | 9 ++++++++- ...onsumerServiceSharedElementUpdateTest.java | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/gridsuite/study/server/service/ConsumerService.java b/src/main/java/org/gridsuite/study/server/service/ConsumerService.java index 4fe5a8ffe..ea8e759ad 100644 --- a/src/main/java/org/gridsuite/study/server/service/ConsumerService.java +++ b/src/main/java/org/gridsuite/study/server/service/ConsumerService.java @@ -912,6 +912,13 @@ private void handleSharedElementUpdate(Map new ArrayList<>()).add(ref.getReferenceId()); } })); - modificationUuidsByNodes.entrySet().forEach(entry -> studyService.sharedModificationsUpdatedNotification(entry.getKey(), entry.getValue(), onlyMetadata)); + // a failure on one node must not prevent notifying the other nodes + modificationUuidsByNodes.forEach((nodeUuid, modificationUuids) -> { + try { + studyService.sharedModificationsUpdatedNotification(nodeUuid, modificationUuids, onlyMetadata); + } catch (Exception e) { + LOGGER.error("Could not handle shared modifications update for node {}", nodeUuid, e); + } + }); } } diff --git a/src/test/java/org/gridsuite/study/server/service/ConsumerServiceSharedElementUpdateTest.java b/src/test/java/org/gridsuite/study/server/service/ConsumerServiceSharedElementUpdateTest.java index 4229b7e4b..8ab37ca7a 100644 --- a/src/test/java/org/gridsuite/study/server/service/ConsumerServiceSharedElementUpdateTest.java +++ b/src/test/java/org/gridsuite/study/server/service/ConsumerServiceSharedElementUpdateTest.java @@ -137,6 +137,25 @@ void testStudyNodeAndCompositeReferencesInDifferentNode() { verify(studyService, times(1)).sharedModificationsUpdatedNotification(node2Uuid, List.of(compositeModificationUuid), false); } + @Test + void testFailureOnOneNodeDoesNotPreventOtherNodesNotification() { + UUID failingNodeUuid = UUID.randomUUID(); + UUID nodeUuid = UUID.randomUUID(); + UUID failingModificationUuid = UUID.randomUUID(); + UUID modificationUuid = UUID.randomUUID(); + + doThrow(new RuntimeException("node notification failure")) + .when(studyService).sharedModificationsUpdatedNotification(eq(failingNodeUuid), anyList(), anyBoolean()); + + consumeSharedElementUpdate.accept(sharedElementUpdateMessage( + List.of(createStudyNodeReference(failingModificationUuid, failingNodeUuid)), + List.of(createCompositeReference(modificationUuid, nodeUuid)))); + + verify(studyService, times(2)).sharedModificationsUpdatedNotification(any(), anyList(), anyBoolean()); + verify(studyService, times(1)).sharedModificationsUpdatedNotification(failingNodeUuid, List.of(failingModificationUuid), false); + verify(studyService, times(1)).sharedModificationsUpdatedNotification(nodeUuid, List.of(modificationUuid), false); + } + @Test void testNoSharedCompositeUpdated() { consumeSharedElementUpdate.accept(sharedElementUpdateMessage(List.of(), List.of())); From 7d66149e61baf11e7bd3c546dfadfe556b4cdb9d Mon Sep 17 00:00:00 2001 From: "SOUISSI Maissa (Externe)" Date: Tue, 27 Oct 2026 13:56:05 +0100 Subject: [PATCH 2/2] fix Signed-off-by: SOUISSI Maissa (Externe) --- .../org/gridsuite/study/server/service/ConsumerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/gridsuite/study/server/service/ConsumerService.java b/src/main/java/org/gridsuite/study/server/service/ConsumerService.java index ea8e759ad..66b5b3fc8 100644 --- a/src/main/java/org/gridsuite/study/server/service/ConsumerService.java +++ b/src/main/java/org/gridsuite/study/server/service/ConsumerService.java @@ -917,7 +917,7 @@ private void handleSharedElementUpdate(Map