From d70df11975b43797dab3a61811e230ed2fbc354f Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Mon, 27 Aug 2018 12:20:26 -0400 Subject: [PATCH] PollerAdviceTests: synchronized list actions https://build.spring.io/browse/INT-MASTERSPRING40-441 Even if we `stop()` a `SourcePollingChannelAdapter` that doesn't mean that task-in-progress can't deliver its result to the source consumer. * Wrap a list `add()` and iterator operations to avoid a `ConcurrentModificationException` --- .../integration/endpoint/PollerAdviceTests.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/spring-integration-core/src/test/java/org/springframework/integration/endpoint/PollerAdviceTests.java b/spring-integration-core/src/test/java/org/springframework/integration/endpoint/PollerAdviceTests.java index 9dcafaddc0..cbaa30e1d9 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/endpoint/PollerAdviceTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/endpoint/PollerAdviceTests.java @@ -257,7 +257,9 @@ public class PollerAdviceTests { final LinkedList triggerPeriods = new LinkedList<>(); final DynamicPeriodicTrigger trigger = new DynamicPeriodicTrigger(10); adapter.setSource(() -> { - triggerPeriods.add(trigger.getPeriod()); + synchronized (triggerPeriods) { + triggerPeriods.add(trigger.getPeriod()); + } Message m = null; if (latch.getCount() % 2 == 0) { m = new GenericMessage<>("foo"); @@ -275,10 +277,9 @@ public class PollerAdviceTests { adapter.start(); assertTrue(latch.await(10, TimeUnit.SECONDS)); adapter.stop(); - while (triggerPeriods.size() > 5) { - triggerPeriods.removeLast(); + synchronized (triggerPeriods) { + assertThat(triggerPeriods.subList(0, 5), contains(10L, 12L, 11L, 12L, 11L)); } - assertThat(triggerPeriods, contains(10L, 12L, 11L, 12L, 11L)); } @Test @@ -308,10 +309,7 @@ public class PollerAdviceTests { assertTrue(latch.await(10, TimeUnit.SECONDS)); adapter.stop(); synchronized (overridePresent) { - while (overridePresent.size() > 5) { - overridePresent.removeLast(); - } - assertThat(overridePresent, contains(null, override, null, override, null)); + assertThat(overridePresent.subList(0, 5), contains(null, override, null, override, null)); } verify(override, atLeast(2)).nextExecutionTime(any(TriggerContext.class)); }