From 21338d19347b752378d04557bb45fb985bd84500 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Sat, 8 Sep 2018 17:44:17 -0400 Subject: [PATCH] Fix RotatingServersTests race condition https://build.spring.io/browse/INT-MASTERSPRING40-458/ We need to stop Inbound Channel Adapter first and only then wait for the latch. Otherwise there is a chance that new item is added to the collection in between `latch.await()` and `stop()` **Cherry-pick to 5.0.x** --- .../integration/ftp/inbound/RotatingServersTests.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/inbound/RotatingServersTests.java b/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/inbound/RotatingServersTests.java index c02a08b63c..39a32219cf 100644 --- a/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/inbound/RotatingServersTests.java +++ b/spring-integration-ftp/src/test/java/org/springframework/integration/ftp/inbound/RotatingServersTests.java @@ -96,8 +96,8 @@ public class RotatingServersTests extends FtpTestSupport { public void testStandard() throws Exception { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(StandardConfig.class); StandardConfig config = ctx.getBean(StandardConfig.class); - assertThat(config.latch.await(10, TimeUnit.SECONDS)).isTrue(); ctx.getBean(StandardIntegrationFlow.class).stop(); + assertThat(config.latch.await(10, TimeUnit.SECONDS)).isTrue(); List sfCalls = config.sessionSources.stream().limit(17).collect(Collectors.toList()); assertThat(sfCalls).containsExactly(1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 2, 2, 3, 3, 1, 1); File f1 = new File(tmpDir + File.separator + "standard" + File.separator + "f1"); @@ -114,8 +114,8 @@ public class RotatingServersTests extends FtpTestSupport { public void testFair() throws Exception { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(FairConfig.class); StandardConfig config = ctx.getBean(StandardConfig.class); - assertThat(config.latch.await(10, TimeUnit.SECONDS)).isTrue(); ctx.getBean(StandardIntegrationFlow.class).stop(); + assertThat(config.latch.await(10, TimeUnit.SECONDS)).isTrue(); List sfCalls = config.sessionSources.stream().limit(17).collect(Collectors.toList()); assertThat(sfCalls).containsExactly(1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3, 3, 1, 1, 2, 2, 3); File f1 = new File(tmpDir + File.separator + "fair" + File.separator + "f1");