From edf10fad76dc76c9218dfce8b4149110488fe426 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Fri, 21 Jul 2017 10:53:30 +0800 Subject: [PATCH] revert me: switch in-memory to simplejson --- .../zipkin/storage/InMemorySpanStore.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/zipkin/src/main/java/zipkin/storage/InMemorySpanStore.java b/zipkin/src/main/java/zipkin/storage/InMemorySpanStore.java index edd32cda341..3f35bdcf147 100644 --- a/zipkin/src/main/java/zipkin/storage/InMemorySpanStore.java +++ b/zipkin/src/main/java/zipkin/storage/InMemorySpanStore.java @@ -32,6 +32,8 @@ import zipkin.internal.MergeById; import zipkin.internal.Nullable; import zipkin.internal.Pair; +import zipkin.simplespan.SimpleSpan; +import zipkin.simplespan.SimpleSpanConverter; import static zipkin.internal.ApplyTimestampAndDuration.guessTimestamp; import static zipkin.internal.GroupByTraceId.TRACE_DESCENDING; @@ -78,7 +80,7 @@ public final class InMemorySpanStore implements SpanStore { * weak reference and traceIdToTraceIdTimeStamps a strong one. In that case, deleting the trace ID * from traceIdToTraceIdTimeStamps would lead to a purge of spans at GC time. */ - private final SortedMultimap, Span> spansByTraceIdTimeStamp = + private final SortedMultimap, SimpleSpan> spansByTraceIdTimeStamp = new LinkedListSortedMultimap<>(VALUE_2_DESCENDING); /** This supports span lookup by {@link zipkin.Span#traceId lower 64-bits of the trace ID} */ @@ -143,7 +145,7 @@ synchronized void addSpans(List spans) { Pair traceIdTimeStamp = Pair.create(span.traceId, timestamp == null ? Long.MIN_VALUE : timestamp); String spanName = span.name; - spansByTraceIdTimeStamp.put(traceIdTimeStamp, span); + spansByTraceIdTimeStamp.put(traceIdTimeStamp, SimpleSpanConverter.fromSpan(span)); traceIdToTraceIdTimeStamps.put(span.traceId, traceIdTimeStamp); acceptedSpanCount++; @@ -173,7 +175,7 @@ private int deleteOldestTrace() { for (Iterator> traceIdTimeStampIter = traceIdTimeStamps.iterator(); traceIdTimeStampIter.hasNext(); ) { Pair traceIdTimeStamp = traceIdTimeStampIter.next(); - Collection spans = spansByTraceIdTimeStamp.remove(traceIdTimeStamp); + Collection spans = spansByTraceIdTimeStamp.remove(traceIdTimeStamp); spansEvicted += spans.size(); } for (String orphanedService : serviceToTraceIds.removeServiceIfTraceId(traceId)) { @@ -357,6 +359,14 @@ int size() { return size; } + void put(K key, List values) { + Collection valueContainer = delegate.get(key); + if (valueContainer == null) { + delegate.put(key, valueContainer = valueContainer()); + } + if (valueContainer.addAll(values)) size += values.size(); + } + void put(K key, V value) { Collection valueContainer = delegate.get(key); if (valueContainer == null) { @@ -385,7 +395,9 @@ Collection get(K key) { private Collection spansByTraceId(long traceId) { Collection sameTraceId = new ArrayList<>(); for (Pair traceIdTimestamp : traceIdToTraceIdTimeStamps.get(traceId)) { - sameTraceId.addAll(spansByTraceIdTimeStamp.get(traceIdTimestamp)); + for (SimpleSpan span : spansByTraceIdTimeStamp.get(traceIdTimestamp)) { + sameTraceId.add(SimpleSpanConverter.toSpan(span)); + } } return sameTraceId; }