From 018aae36328c69b7e81b629bcd176d9b36b2fc8f Mon Sep 17 00:00:00 2001 From: Olga Maciaszek-Sharma Date: Tue, 11 Aug 2020 13:05:07 +0200 Subject: [PATCH] Subscribe on flux earlier. Fixes gh-802. --- .../core/DiscoveryClientServiceInstanceListSupplier.java | 3 ++- .../core/DiscoveryClientServiceInstanceListSupplierTests.java | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/core/DiscoveryClientServiceInstanceListSupplier.java b/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/core/DiscoveryClientServiceInstanceListSupplier.java index f0d9b585..79d22a95 100644 --- a/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/core/DiscoveryClientServiceInstanceListSupplier.java +++ b/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/core/DiscoveryClientServiceInstanceListSupplier.java @@ -64,13 +64,14 @@ public class DiscoveryClientServiceInstanceListSupplier resolveTimeout(environment); this.serviceInstances = Flux .defer(() -> Flux.just(delegate.getInstances(serviceId))) + .subscribeOn(Schedulers.boundedElastic()) .timeout(timeout, Flux.defer(() -> { logTimeout(); return Flux.just(new ArrayList<>()); })).onErrorResume(error -> { logException(error); return Flux.just(new ArrayList<>()); - }).subscribeOn(Schedulers.boundedElastic()); + }); } public DiscoveryClientServiceInstanceListSupplier(ReactiveDiscoveryClient delegate, diff --git a/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/core/DiscoveryClientServiceInstanceListSupplierTests.java b/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/core/DiscoveryClientServiceInstanceListSupplierTests.java index 2e188cfe..980f7365 100644 --- a/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/core/DiscoveryClientServiceInstanceListSupplierTests.java +++ b/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/core/DiscoveryClientServiceInstanceListSupplierTests.java @@ -20,7 +20,6 @@ import java.time.Duration; import org.assertj.core.util.Lists; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.mockito.internal.stubbing.answers.AnswersWithDelay; import org.mockito.internal.stubbing.answers.Returns; @@ -173,7 +172,6 @@ class DiscoveryClientServiceInstanceListSupplierTests { .verify(VERIFICATION_TIMEOUT); } - @Disabled // see https://github.com/spring-cloud/spring-cloud-commons/issues/802 @Test void shouldReturnEmptyInstancesListOnTimeoutBlockingClient() { environment.setProperty(SERVICE_DISCOVERY_TIMEOUT, "100ms");