From 955916716e3dafdf187d6658317651843dce539e Mon Sep 17 00:00:00 2001 From: Joris Mancini Date: Fri, 13 Dec 2024 16:07:14 +0100 Subject: [PATCH 1/3] feat: rely on rabbitmq dlq for computation errors handling Signed-off-by: Joris Mancini --- pom.xml | 5 +++++ .../SecurityAnalysisWorkerService.java | 3 --- src/main/resources/config/application.yaml | 21 ++++++++++++++----- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index 3f616b35..a0b4333a 100644 --- a/pom.xml +++ b/pom.xml @@ -86,6 +86,11 @@ + + com.powsybl + powsybl-ws-commons + 1.19.0-SNAPSHOT + com.squareup.okhttp3 okhttp-bom diff --git a/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisWorkerService.java b/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisWorkerService.java index 1bbdcdea..de75750c 100644 --- a/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisWorkerService.java +++ b/src/main/java/org/gridsuite/securityanalysis/server/service/SecurityAnalysisWorkerService.java @@ -105,9 +105,6 @@ public SecurityAnalysisResult run(SecurityAnalysisRunContext runContext) { runContext.setNetwork(network); AtomicReference rootReporter = new AtomicReference<>(); return run(runContext, null, rootReporter); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - return null; } catch (Exception e) { LOGGER.error(getFailedMessage(getComputationType()), e); return null; diff --git a/src/main/resources/config/application.yaml b/src/main/resources/config/application.yaml index 94e6263b..8bba4aca 100644 --- a/src/main/resources/config/application.yaml +++ b/src/main/resources/config/application.yaml @@ -1,7 +1,7 @@ spring: application: name: security-analysis-server - + jpa: properties: hibernate: @@ -20,6 +20,7 @@ spring: group: saGroup consumer: concurrency: 2 + max-attempts: 1 publishRun-out-0: destination: ${powsybl-ws.rabbitmq.destination.prefix:}sa.run publishResult-out-0: @@ -30,11 +31,21 @@ spring: destination: ${powsybl-ws.rabbitmq.destination.prefix:}sa.cancel publishStopped-out-0: destination: ${powsybl-ws.rabbitmq.destination.prefix:}sa.stopped - publishFailed-out-0: - destination: ${powsybl-ws.rabbitmq.destination.prefix:}sa.failed publishCancelFailed-out-0: destination: ${powsybl-ws.rabbitmq.destination.prefix:}sa.cancelfailed - output-bindings: publishRun-out-0;publishResult-out-0;publishCancel-out-0;publishStopped-out-0;publishFailed-out-;publishCancelFailed-out-0 + output-bindings: publishRun-out-0;publishResult-out-0;publishCancel-out-0;publishStopped-out-0;publishCancelFailed-out-0 + rabbit: + bindings: + consumeRun-in-0: + consumer: + auto-bind-dlq: true + dead-letter-exchange: ${powsybl-ws.rabbitmq.destination.prefix:}sa.run.dlx + dead-letter-queue-name: ${powsybl-ws.rabbitmq.destination.prefix:}sa.run.dlx.dlq + dead-letter-exchange-type: topic + quorum: + enabled: true + delivery-limit: 2 + powsybl-ws: database: @@ -89,4 +100,4 @@ security-analysis: - [ 1, 1, 1, 1 ] - [ 1, 1, 1, 1 ] - [ 1, 1, 1, 1 ] - - [ 1, 1, 1, 1 ] \ No newline at end of file + - [ 1, 1, 1, 1 ] From 793d3fc92f5a2bbbf53c406178facf23fdd1f140 Mon Sep 17 00:00:00 2001 From: Joris Mancini Date: Wed, 18 Dec 2024 14:44:41 +0100 Subject: [PATCH 2/3] fix: tests Signed-off-by: Joris Mancini --- .../server/SecurityAnalysisControllerTest.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java b/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java index 258ae503..dce45f68 100644 --- a/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java +++ b/src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java @@ -75,6 +75,7 @@ import static org.gridsuite.securityanalysis.server.util.TestUtils.assertLogMessage; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.doNothing; @@ -673,11 +674,8 @@ void runTestWithError() throws Exception { UUID resultUuid = mapper.readValue(resultAsString, UUID.class); assertEquals(RESULT_UUID, resultUuid); - // Message stopped has been sent - Message cancelMessage = output.receive(TIMEOUT, "sa.failed"); - assertEquals(RESULT_UUID.toString(), cancelMessage.getHeaders().get("resultUuid")); - assertEquals("me", cancelMessage.getHeaders().get("receiver")); - assertEquals(getFailedMessage(COMPUTATION_TYPE) + " : " + ERROR_MESSAGE, cancelMessage.getHeaders().get("message")); + // No result message + assertNull(output.receive(TIMEOUT, "sa.result")); // No result assertResultNotFound(RESULT_UUID); From 0f717d7015483f813dc6e71f8b5712d134defa10 Mon Sep 17 00:00:00 2001 From: Joris Mancini <53527338+TheMaskedTurtle@users.noreply.github.com> Date: Fri, 20 Dec 2024 11:25:32 +0100 Subject: [PATCH 3/3] Bump powsybl-ws-commons to 1.19.0 --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index a0b4333a..5fb8aff9 100644 --- a/pom.xml +++ b/pom.xml @@ -86,10 +86,10 @@ - + com.powsybl powsybl-ws-commons - 1.19.0-SNAPSHOT + 1.19.0 com.squareup.okhttp3