Skip to content
Snippets Groups Projects
Commit 7c77fcf7 authored by Krzysztof Witukiewicz's avatar Krzysztof Witukiewicz
Browse files

OZG-7573 OZG-7991 Send GrpcRouteForwardingRequest only once

parent 6a0dbd51
No related branches found
No related tags found
1 merge request!27OZG-7573 Dateien Weiterleiten
......@@ -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();
}
}
}
}
......
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment