From 7c77fcf7efb19b890634a976456b5b83eadf772c Mon Sep 17 00:00:00 2001 From: Krzysztof <krzysztof.witukiewicz@mgm-tp.com> Date: Mon, 7 Apr 2025 17:09:35 +0200 Subject: [PATCH] OZG-7573 OZG-7991 Send GrpcRouteForwardingRequest only once --- .../vorgang/redirect/EingangForwarder.java | 16 ++++++---------- .../vorgang/redirect/EingangForwarderTest.java | 10 ++++++++++ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/EingangForwarder.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/EingangForwarder.java index 144022330..655df82a5 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/EingangForwarder.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/EingangForwarder.java @@ -68,7 +68,7 @@ import net.devh.boot.grpc.client.inject.GrpcClient; @Log4j2 class EingangForwarder { - static final int TIMEOUT_MINUTES = 10; + static final int TIMEOUT_MINUTES = 2; @GrpcClient("forwarder") private final RouteForwardingServiceGrpc.RouteForwardingServiceStub serviceStub; @@ -102,9 +102,12 @@ class EingangForwarder { } Runnable getSendRouteForwardingRunnable(GrpcRouteForwarding grpcRouteForwarding, CompletableFuture<Void> future) { + var executed = new AtomicBoolean(); return () -> { - requestObserver.onNext(GrpcRouteForwardingRequest.newBuilder().setRouteForwarding(grpcRouteForwarding).build()); - future.complete(null); + if (!executed.compareAndExchange(false, true)) { + requestObserver.onNext(GrpcRouteForwardingRequest.newBuilder().setRouteForwarding(grpcRouteForwarding).build()); + future.complete(null); + } }; } @@ -284,13 +287,6 @@ class EingangForwarder { var delegate = this.delegate.get(); if (delegate != null) { delegate.run(); - } else { - try { - wait(100); - } catch (InterruptedException e) { - LOG.debug("Interrupted while waiting for delegate to be set"); - Thread.currentThread().interrupt(); - } } } } diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/EingangForwarderTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/EingangForwarderTest.java index 9681f8c6f..3c58b837e 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/EingangForwarderTest.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/EingangForwarderTest.java @@ -44,6 +44,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import java.util.function.BiFunction; import java.util.function.Consumer; +import java.util.stream.IntStream; import org.apache.commons.lang3.RandomUtils; import org.junit.jupiter.api.AfterEach; @@ -260,6 +261,15 @@ class EingangForwarderTest { verify(future).complete(null); } + + @Test + void shouldRunOnlyOnce() { + var runnable = forwarder.getSendRouteForwardingRunnable(grpcRouteForwarding, future); + + IntStream.range(0, 3).forEach(i -> runnable.run()); + + verify(requestObserver, times(1)).onNext(any()); + } } @Nested -- GitLab