From 22a766790a30c9bd3c1a6df49a99812da9265521 Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Tue, 14 Jun 2022 21:53:55 -0700 Subject: [PATCH] Fix thread-unsafe emitter usage in SeekableStreamSupervisorStateTest. The TestEmitter is used from different threads without concurrency control. This patch makes the emitter thread-safe. --- .../supervisor/SeekableStreamSupervisorStateTest.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/seekablestream/supervisor/SeekableStreamSupervisorStateTest.java b/indexing-service/src/test/java/org/apache/druid/indexing/seekablestream/supervisor/SeekableStreamSupervisorStateTest.java index 15bce156b436..c67444a4de07 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/seekablestream/supervisor/SeekableStreamSupervisorStateTest.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/seekablestream/supervisor/SeekableStreamSupervisorStateTest.java @@ -24,6 +24,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import com.google.errorprone.annotations.concurrent.GuardedBy; import org.apache.druid.data.input.impl.ByteEntity; import org.apache.druid.data.input.impl.DimensionSchema; import org.apache.druid.data.input.impl.DimensionsSpec; @@ -1371,17 +1372,22 @@ protected void scheduleReporting(ScheduledExecutorService reportingExec) private static class TestEmitter extends NoopServiceEmitter { + @GuardedBy("events") private final List events = new ArrayList<>(); @Override public void emit(Event event) { - events.add(event); + synchronized (events) { + events.add(event); + } } public List getEvents() { - return events; + synchronized (events) { + return ImmutableList.copyOf(events); + } } } }