From 7f58eab435b462a873814af282449efd79dc11da Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Wed, 20 Jan 2016 16:52:09 +0000 Subject: [PATCH] Make span collection thread safe in message source --- .../cloud/sleuth/stream/StreamSpanListener.java | 6 ++++-- .../sleuth/stream/StreamSpanListenerTests.java | 13 +++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/StreamSpanListener.java b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/StreamSpanListener.java index 034f7eb4d..5f298f5e7 100644 --- a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/StreamSpanListener.java +++ b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/StreamSpanListener.java @@ -17,8 +17,10 @@ package org.springframework.cloud.sleuth.stream; import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.concurrent.ConcurrentLinkedQueue; import org.springframework.cloud.sleuth.Span; import org.springframework.cloud.sleuth.event.ClientReceivedEvent; @@ -45,14 +47,14 @@ public class StreamSpanListener { public static final String SERVER_RECV = "sr"; public static final String SERVER_SEND = "ss"; - private List queue = new ArrayList<>(); + private Collection queue = new ConcurrentLinkedQueue<>(); private HostLocator endpointLocator; public StreamSpanListener(HostLocator endpointLocator) { this.endpointLocator = endpointLocator; } - public void setQueue(List queue) { + public void setQueue(Collection queue) { this.queue = queue; } diff --git a/spring-cloud-sleuth-stream/src/test/java/org/springframework/cloud/sleuth/stream/StreamSpanListenerTests.java b/spring-cloud-sleuth-stream/src/test/java/org/springframework/cloud/sleuth/stream/StreamSpanListenerTests.java index 2aeef5b65..e0a44ed2d 100644 --- a/spring-cloud-sleuth-stream/src/test/java/org/springframework/cloud/sleuth/stream/StreamSpanListenerTests.java +++ b/spring-cloud-sleuth-stream/src/test/java/org/springframework/cloud/sleuth/stream/StreamSpanListenerTests.java @@ -16,6 +16,13 @@ package org.springframework.cloud.sleuth.stream; +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.PostConstruct; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -42,12 +49,6 @@ import org.springframework.integration.annotation.ServiceActivator; import org.springframework.messaging.Message; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import javax.annotation.PostConstruct; -import java.util.ArrayList; -import java.util.List; - -import static org.junit.Assert.assertEquals; - /** * @author Dave Syer *