Use Schedulers.boundedElastic()

Fixes gh-7457
This commit is contained in:
Rob Winch 2019-09-19 13:51:06 -05:00
parent cb5c58eeaa
commit ff54eb878a
3 changed files with 7 additions and 6 deletions

View File

@ -34,7 +34,7 @@ import reactor.core.scheduler.Schedulers;
public class ReactiveAuthenticationManagerAdapter implements ReactiveAuthenticationManager {
private final AuthenticationManager authenticationManager;
private Scheduler scheduler = Schedulers.elastic();
private Scheduler scheduler = Schedulers.boundedElastic();
public ReactiveAuthenticationManagerAdapter(AuthenticationManager authenticationManager) {
Assert.notNull(authenticationManager, "authenticationManager cannot be null");

View File

@ -1,5 +1,5 @@
if (!project.hasProperty('reactorVersion')) {
ext.reactorVersion = 'Dysprosium-RC1'
ext.reactorVersion = 'Dysprosium-BUILD-SNAPSHOT'
}
if (!project.hasProperty('springVersion')) {

View File

@ -463,9 +463,10 @@ public final class ServletOAuth2AuthorizedClientExchangeFilterFunction
});
OAuth2AuthorizeRequest authorizeRequest = builder.build();
// NOTE: 'authorizedClientManager.authorize()' needs to be executed on a dedicated thread via subscribeOn(Schedulers.elastic())
// NOTE: 'authorizedClientManager.authorize()' needs to be executed on a dedicated thread via subscribeOn(Schedulers.boundedElastic())
// NOTE: 'authorizedClientManager.authorize()' needs to be executed on a dedicated thread via subscribeOn(Schedulers.boundedElastic())
// since it performs a blocking I/O operation using RestTemplate internally
return Mono.fromSupplier(() -> this.authorizedClientManager.authorize(authorizeRequest)).subscribeOn(Schedulers.elastic());
return Mono.fromSupplier(() -> this.authorizedClientManager.authorize(authorizeRequest)).subscribeOn(Schedulers.boundedElastic());
}
private Mono<OAuth2AuthorizedClient> authorizedClient(OAuth2AuthorizedClient authorizedClient, ClientRequest request) {
@ -491,9 +492,9 @@ public final class ServletOAuth2AuthorizedClientExchangeFilterFunction
});
OAuth2AuthorizeRequest reauthorizeRequest = builder.build();
// NOTE: 'authorizedClientManager.authorize()' needs to be executed on a dedicated thread via subscribeOn(Schedulers.elastic())
// NOTE: 'authorizedClientManager.authorize()' needs to be executed on a dedicated thread via subscribeOn(Schedulers.boundedElastic())
// since it performs a blocking I/O operation using RestTemplate internally
return Mono.fromSupplier(() -> this.authorizedClientManager.authorize(reauthorizeRequest)).subscribeOn(Schedulers.elastic());
return Mono.fromSupplier(() -> this.authorizedClientManager.authorize(reauthorizeRequest)).subscribeOn(Schedulers.boundedElastic());
}
private ClientRequest bearer(ClientRequest request, OAuth2AuthorizedClient authorizedClient) {