From 634020eea68d1f6664aae62e8eec8cfce75b2a74 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 23 Aug 2016 15:34:44 +0200 Subject: [PATCH] Synchronizing on spans in ArrayListSpanAccumulator without this change tests happen to have ConcurrentModificationException --- .../cloud/sleuth/util/ArrayListSpanAccumulator.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/util/ArrayListSpanAccumulator.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/util/ArrayListSpanAccumulator.java index bfaeac69e..2a412d167 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/util/ArrayListSpanAccumulator.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/util/ArrayListSpanAccumulator.java @@ -17,7 +17,6 @@ package org.springframework.cloud.sleuth.util; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import org.springframework.cloud.sleuth.Span; @@ -31,21 +30,25 @@ import org.springframework.cloud.sleuth.SpanReporter; * @since 1.0.0 */ public class ArrayListSpanAccumulator implements SpanReporter { - private final List spans = Collections.synchronizedList(new ArrayList()); + private final List spans = new ArrayList<>(); public List getSpans() { - return this.spans; + synchronized (this.spans) { + return this.spans; + } } @Override public String toString() { return "ArrayListSpanAccumulator{" + - "spans=" + this.spans + + "spans=" + getSpans() + '}'; } @Override public void report(Span span) { - this.spans.add(span); + synchronized (this.spans) { + this.spans.add(span); + } } }