Fix execution thread for blocking and adjusts timing

* Fix execution thread for blocking DiscoveryClientServiceInstanceListSupplier.

* Desynchronise HealthCheck and Cache. Add info about using HealthCheck without Cache to docs.

See gh-760
This commit is contained in:
Olga Maciaszek-Sharma
2020-05-27 09:13:55 -05:00
committed by GitHub
parent 587f5f568a
commit 87e5d7a62b
7 changed files with 22 additions and 23 deletions

View File

@@ -39,7 +39,7 @@ public class LoadBalancerCacheProperties {
* @see <a href=
* "https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/convert/StringToDurationConverter.java">StringToDurationConverter.java</a>
*/
private Duration ttl = Duration.ofSeconds(30);
private Duration ttl = Duration.ofSeconds(35);
/**
* Initial cache capacity expressed as int.

View File

@@ -47,8 +47,8 @@ public class DiscoveryClientServiceInstanceListSupplier
Environment environment) {
this.serviceId = environment.getProperty(PROPERTY_NAME);
this.serviceInstances = Flux
.defer(() -> Flux.fromIterable(delegate.getInstances(serviceId))
.collectList().flux().subscribeOn(Schedulers.boundedElastic()));
.defer(() -> Flux.just(delegate.getInstances(serviceId)))
.subscribeOn(Schedulers.boundedElastic());
}
public DiscoveryClientServiceInstanceListSupplier(ReactiveDiscoveryClient delegate,

View File

@@ -109,21 +109,18 @@ class DiscoveryClientServiceInstanceListSupplierTests {
@Test
void shouldUpdateReturnRetrievedInstancesBlockingClient() {
when(discoveryClient.getInstances(SERVICE_ID)).thenReturn(
Lists.list(instance("1host", false), instance("2host-secure", true)));
supplier = new DiscoveryClientServiceInstanceListSupplier(discoveryClient,
environment);
StepVerifier.withVirtualTime(() -> {
when(discoveryClient.getInstances(SERVICE_ID)).thenReturn(
Lists.list(instance("1host", false), instance("2host-secure", true)));
supplier = new DiscoveryClientServiceInstanceListSupplier(discoveryClient,
environment);
supplier.get();
StepVerifier.withVirtualTime(() -> supplier.get()).expectSubscription()
.expectNext(Lists.list(instance("1host", false),
instance("2host-secure", true)))
.thenCancel().verify();
when(discoveryClient.getInstances(SERVICE_ID))
.thenReturn(Lists.list(instance("1host", false),
instance("2host-secure", true), instance("3host", false)));
StepVerifier.withVirtualTime(() -> supplier.get()).expectSubscription()
when(discoveryClient.getInstances(SERVICE_ID))
.thenReturn(Lists.list(instance("1host", false),
instance("2host-secure", true), instance("3host", false)));
return supplier.get();
}).expectSubscription()
.expectNext(Lists.list(instance("1host", false),
instance("2host-secure", true), instance("3host", false)))
.thenCancel().verify();