1
0
mirror of synced 2026-08-05 17:57:15 +00:00

Dispose default Scheduler

AbstractUserDetailsReactiveAuthenticationManager creates parallel
Scheduler with daemon=false Threads. It is recommended to dispose such
Schedulers to be able exit the VM

Fixes gh-7492
This commit is contained in:
Roman Matiushchenko
2019-09-29 20:23:05 +03:00
parent 29ed728a70
commit 39600b901f
2 changed files with 45 additions and 2 deletions
@@ -33,6 +33,8 @@ import org.springframework.security.core.userdetails.ReactiveUserDetailsService;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.password.PasswordEncoder;
import reactor.core.publisher.Mono;
import reactor.core.scheduler.Scheduler;
import reactor.core.scheduler.Schedulers;
import reactor.test.StepVerifier;
/**
@@ -136,4 +138,33 @@ public class ReactiveUserDetailsServiceAuthenticationManagerTests {
.expectError(BadCredentialsException.class)
.verify();
}
@Test
public void destroyWhenDefaultSchedulerThenShouldDispose() {
assertThat(manager.scheduler.isDisposed()).isFalse();
manager.destroy();
assertThat(manager.scheduler.isDisposed())
.as("default Scheduler should be disposed")
.isTrue();
}
@Test
public void destroyWhenCustomSchedulerThenShouldNotDispose() {
manager.setScheduler(Schedulers.parallel());
manager.destroy();
assertThat(manager.scheduler.isDisposed())
.as("custom Scheduler should not be disposed")
.isFalse();
}
@Test
public void setSchedulerWhenSetCustomSchedulerThenDisposeDefault() {
Scheduler defaultScheduler = manager.scheduler;
assertThat(defaultScheduler.isDisposed()).isFalse();
manager.setScheduler(Schedulers.parallel());
assertThat(defaultScheduler.isDisposed())
.as("default Scheduler should be disposed")
.isTrue();
}
}