From c7d35eea7fe6cc4531ba1a8cd7f1a3d39c74022f Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 14 Sep 2017 17:14:09 +0200 Subject: [PATCH 1/5] Introduced a "shared" field in Span (#698) whenever: - a span or trace id get generated when a request / message arrives - child span is created we set the field to false whenever we find ids in the incoming request / message we set the field to true fixes #696 --- .../springframework/cloud/sleuth/Span.java | 106 +++++++++++------- .../HeaderBasedMessagingExtractor.java | 31 +++-- .../web/ZipkinHttpSpanExtractor.java | 10 +- .../cloud/sleuth/SpanTests.java | 11 +- .../cloud/sleuth/assertions/SpanAssert.java | 20 ++++ .../HeaderBasedMessagingExtractorTests.java | 18 +-- .../web/HttpServletRequestExtractorTests.java | 62 ++++++++-- .../stream/ConvertToZipkinSpanList.java | 19 ++-- .../stream/ConvertToZipkinSpanListTests.java | 43 ++++++- .../sleuth/zipkin/ZipkinSpanListener.java | 11 +- .../zipkin/ZipkinSpanListenerTests.java | 31 +++++ 11 files changed, 268 insertions(+), 94 deletions(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java index 5af2c9154..7cf921740 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java @@ -16,10 +16,6 @@ package org.springframework.cloud.sleuth; -import com.fasterxml.jackson.annotation.JsonAutoDetect; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonInclude; - import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -35,6 +31,10 @@ import java.util.concurrent.ConcurrentLinkedQueue; import org.springframework.util.Assert; import org.springframework.util.StringUtils; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; + /** * Class for gathering and reporting statistics about a block of execution. *

@@ -161,6 +161,13 @@ public class Span implements SpanContext { @JsonIgnore private final Long startNanos; private Long durationMicros; // serialized in json so micros precision isn't lost + /* + Using B3 propagation, it is most typical to share the same span ID across client and + the server. This has backend implications like who owns the timestamp (hint the + client does). When a SpanReporter receives a completed span, it should know if it + is shared or not. + */ + private final boolean shared; @SuppressWarnings("unused") private Span() { @@ -189,6 +196,7 @@ public class Span implements SpanContext { this.durationMicros = current.durationMicros; this.baggage = current.baggage; this.savedSpan = savedSpan; + this.shared = current.shared; } /** @@ -198,7 +206,7 @@ public class Span implements SpanContext { public Span(long begin, long end, String name, long traceId, List parents, long spanId, boolean remote, boolean exportable, String processId) { this(begin, end, name, traceId, parents, spanId, remote, exportable, processId, - null); + null, false); } /** @@ -207,7 +215,7 @@ public class Span implements SpanContext { @Deprecated public Span(long begin, long end, String name, long traceId, List parents, long spanId, boolean remote, boolean exportable, String processId, - Span savedSpan) { + Span savedSpan, boolean shared) { this(new SpanBuilder() .begin(begin) .end(end) @@ -218,7 +226,8 @@ public class Span implements SpanContext { .remote(remote) .exportable(exportable) .processId(processId) - .savedSpan(savedSpan)); + .savedSpan(savedSpan) + .shared(shared)); } Span(SpanBuilder builder) { @@ -248,6 +257,7 @@ public class Span implements SpanContext { this.logs.addAll(builder.logs); this.baggage = new ConcurrentHashMap<>(); this.baggage.putAll(builder.baggage); + this.shared = builder.shared; } public static SpanBuilder builder() { @@ -517,6 +527,16 @@ public class Span implements SpanContext { return this.exportable; } + /** + * Span and trace id got extracted from a carrier? + * We are adding data to the same span created by a remote client2 + * + * @since 1.3.0 + */ + public boolean isShared() { + return this.shared; + } + /** * Returns the 16 or 32 character hex representation of the span's trace ID * @@ -626,42 +646,43 @@ public class Span implements SpanContext { h *= 1000003; h ^= (this.traceIdHigh >>> 32) ^ this.traceIdHigh; h *= 1000003; - h ^= (this.traceId >>> 32) ^ this.traceId; - h *= 1000003; - h ^= (this.spanId >>> 32) ^ this.spanId; - h *= 1000003; - return h; - } + h ^= (this.traceId >>> 32) ^ this.traceId; + h *= 1000003; + h ^= (this.spanId >>> 32) ^ this.spanId; + h *= 1000003; + return h; +} - @Override - public boolean equals(Object o) { - if (o == this) { - return true; - } - if (o instanceof Span) { - Span that = (Span) o; - return (this.traceIdHigh == that.traceIdHigh) - && (this.traceId == that.traceId) - && (this.spanId == that.spanId); - } - return false; +@Override +public boolean equals(Object o) { + if (o == this) { + return true; } + if (o instanceof Span) { + Span that = (Span) o; + return (this.traceIdHigh == that.traceIdHigh) + && (this.traceId == that.traceId) + && (this.spanId == that.spanId); + } + return false; +} - public static class SpanBuilder { - private long begin; - private long end; - private String name; - private long traceIdHigh; - private long traceId; - private ArrayList parents = new ArrayList<>(); - private long spanId; - private boolean remote; - private boolean exportable = true; - private String processId; - private Span savedSpan; - private List logs = new ArrayList<>(); - private Map tags = new LinkedHashMap<>(); - private Map baggage = new LinkedHashMap<>(); +public static class SpanBuilder { + private long begin; + private long end; + private String name; + private long traceIdHigh; + private long traceId; + private ArrayList parents = new ArrayList<>(); + private long spanId; + private boolean remote; + private boolean exportable = true; + private String processId; + private Span savedSpan; + private final List logs = new ArrayList<>(); + private final Map tags = new LinkedHashMap<>(); + private final Map baggage = new LinkedHashMap<>(); + private boolean shared; SpanBuilder() { } @@ -766,6 +787,11 @@ public class Span implements SpanContext { return this; } + public Span.SpanBuilder shared(boolean shared) { + this.shared = shared; + return this; + } + public Span.SpanBuilder from(Span span) { return begin(span.begin).end(span.end).name(span.name) .traceIdHigh(span.traceIdHigh).traceId(span.traceId) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/HeaderBasedMessagingExtractor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/HeaderBasedMessagingExtractor.java index 2c02ef5e9..dc464b74a 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/HeaderBasedMessagingExtractor.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/messaging/HeaderBasedMessagingExtractor.java @@ -1,12 +1,12 @@ package org.springframework.cloud.sleuth.instrument.messaging; +import java.util.Map; +import java.util.Random; + import org.springframework.cloud.sleuth.Span; import org.springframework.cloud.sleuth.SpanTextMap; import org.springframework.cloud.sleuth.util.TextMapUtil; -import java.util.Map; -import java.util.Random; - /** * Default implementation for messaging * @@ -18,9 +18,11 @@ public class HeaderBasedMessagingExtractor implements MessagingSpanTextMapExtrac @Override public Span joinTrace(SpanTextMap textMap) { Map carrier = TextMapUtil.asMap(textMap); + boolean spanIdMissing = !hasHeader(carrier, TraceMessageHeaders.SPAN_ID_NAME); + boolean traceIdMissing = !hasHeader(carrier, TraceMessageHeaders.TRACE_ID_NAME); if (Span.SPAN_SAMPLED.equals(carrier.get(TraceMessageHeaders.SPAN_FLAGS_NAME))) { - String traceId = generateTraceIdIfMissing(carrier); - if (!carrier.containsKey(TraceMessageHeaders.SPAN_ID_NAME)) { + String traceId = generateTraceIdIfMissing(carrier, traceIdMissing); + if (spanIdMissing) { carrier.put(TraceMessageHeaders.SPAN_ID_NAME, traceId); } } else if (!hasHeader(carrier, TraceMessageHeaders.SPAN_ID_NAME) @@ -28,28 +30,32 @@ public class HeaderBasedMessagingExtractor implements MessagingSpanTextMapExtrac return null; // TODO: Consider throwing IllegalArgumentException; } - return extractSpanFromHeaders(carrier, Span.builder()); + boolean idMissing = spanIdMissing || traceIdMissing; + return extractSpanFromHeaders(carrier, Span.builder(), idMissing); } - private String generateTraceIdIfMissing(Map carrier) { - if (!hasHeader(carrier, TraceMessageHeaders.TRACE_ID_NAME)) { + private String generateTraceIdIfMissing(Map carrier, + boolean traceIdMissing) { + if (traceIdMissing) { carrier.put(TraceMessageHeaders.TRACE_ID_NAME, Span.idToHex(new Random().nextLong())); } return carrier.get(TraceMessageHeaders.TRACE_ID_NAME); } - private Span extractSpanFromHeaders(Map carrier, Span.SpanBuilder spanBuilder) { + private Span extractSpanFromHeaders(Map carrier, + Span.SpanBuilder spanBuilder, boolean idMissing) { String traceId = carrier.get(TraceMessageHeaders.TRACE_ID_NAME); spanBuilder = spanBuilder .traceIdHigh(traceId.length() == 32 ? Span.hexToId(traceId, 0) : 0) .traceId(Span.hexToId(traceId)) .spanId(Span.hexToId(carrier.get(TraceMessageHeaders.SPAN_ID_NAME))); String flags = carrier.get(TraceMessageHeaders.SPAN_FLAGS_NAME); - if (Span.SPAN_SAMPLED.equals(flags)) { + boolean debug = Span.SPAN_SAMPLED.equals(flags); + boolean spanSampled = Span.SPAN_SAMPLED.equals(carrier.get(TraceMessageHeaders.SAMPLED_NAME)); + if (debug) { spanBuilder.exportable(true); } else { - spanBuilder.exportable( - Span.SPAN_SAMPLED.equals(carrier.get(TraceMessageHeaders.SAMPLED_NAME))); + spanBuilder.exportable(spanSampled); } String processId = carrier.get(TraceMessageHeaders.PROCESS_ID_NAME); String spanName = carrier.get(TraceMessageHeaders.SPAN_NAME_NAME); @@ -61,6 +67,7 @@ public class HeaderBasedMessagingExtractor implements MessagingSpanTextMapExtrac } setParentIdIfApplicable(carrier, spanBuilder, TraceMessageHeaders.PARENT_ID_NAME); spanBuilder.remote(true); + spanBuilder.shared((debug || spanSampled) && !idMissing); for (Map.Entry entry : carrier.entrySet()) { if (entry.getKey().toLowerCase().startsWith(Span.SPAN_BAGGAGE_HEADER_PREFIX + TraceMessageHeaders.HEADER_DELIMITER)) { spanBuilder.baggage(unprefixedKey(entry.getKey()), entry.getValue()); diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/ZipkinHttpSpanExtractor.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/ZipkinHttpSpanExtractor.java index 91906e711..9881182b9 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/ZipkinHttpSpanExtractor.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/ZipkinHttpSpanExtractor.java @@ -35,7 +35,8 @@ public class ZipkinHttpSpanExtractor implements HttpSpanExtractor { public Span joinTrace(SpanTextMap textMap) { Map carrier = TextMapUtil.asMap(textMap); boolean debug = Span.SPAN_SAMPLED.equals(carrier.get(Span.SPAN_FLAGS)); - if (debug && onlySpanIdIsPresent(carrier)) { + boolean idToBeGenerated = debug && onlySpanIdIsPresent(carrier); + if (idToBeGenerated) { // we're only generating Trace ID since if there's no Span ID will assume // that it's equal to Trace ID - we're trying to fix a malformed request generateIdIfMissing(carrier, Span.TRACE_ID_NAME); @@ -48,7 +49,7 @@ public class ZipkinHttpSpanExtractor implements HttpSpanExtractor { boolean skip = this.skipPattern.matcher(uri).matches() || Span.SPAN_NOT_SAMPLED.equals(carrier.get(Span.SAMPLED_NAME)); long spanId = spanId(carrier); - return buildParentSpan(carrier, uri, skip, spanId); + return buildParentSpan(carrier, uri, skip, spanId, idToBeGenerated); } catch (Exception e) { log.error("Exception occurred while trying to extract span from carrier", e); return null; @@ -86,7 +87,8 @@ public class ZipkinHttpSpanExtractor implements HttpSpanExtractor { } } - private Span buildParentSpan(Map carrier, String uri, boolean skip, long spanId) { + private Span buildParentSpan(Map carrier, String uri, boolean skip, + long spanId, boolean idToBeGenerated) { String traceId = carrier.get(Span.TRACE_ID_NAME); Span.SpanBuilder span = Span.builder() .traceIdHigh(traceId.length() == 32 ? Span.hexToId(traceId, 0) : 0) @@ -106,6 +108,8 @@ public class ZipkinHttpSpanExtractor implements HttpSpanExtractor { span.parent(Span.hexToId(carrier.get(Span.PARENT_ID_NAME))); } span.remote(true); + // trace, span id were retrieved from the headers and span is sampled + span.shared(!(skip || idToBeGenerated)); boolean debug = Span.SPAN_SAMPLED.equals(carrier.get(Span.SPAN_FLAGS)); if (debug) { span.exportable(true); diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/SpanTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/SpanTests.java index db94a01ee..ed054661d 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/SpanTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/SpanTests.java @@ -16,16 +16,16 @@ package org.springframework.cloud.sleuth; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; +import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.assertThat; +import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then; import java.io.IOException; import java.util.concurrent.atomic.AtomicLong; import org.junit.Test; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.BDDAssertions.then; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; /** * @author Marcin Grzejszczak @@ -276,6 +276,7 @@ public class SpanTests { private Span.SpanBuilder builder() { return Span.builder().name("http:name").traceId(1L).spanId(2L).parent(3L) .begin(1L).end(2L).traceId(3L).exportable(true).parent(4L) - .baggage("foo", "bar").remote(true).tag("tag", "tag").log(new Log(System.currentTimeMillis(), "log")); + .baggage("foo", "bar") + .remote(true).shared(true).tag("tag", "tag").log(new Log(System.currentTimeMillis(), "log")); } } diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/assertions/SpanAssert.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/assertions/SpanAssert.java index 918004b7e..3ad2cb6de 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/assertions/SpanAssert.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/assertions/SpanAssert.java @@ -190,6 +190,26 @@ public class SpanAssert extends AbstractAssert { return this; } + public SpanAssert isShared() { + isNotNull(); + if (!this.actual.isShared()) { + String message = "The span is supposed to be shared but it's not!"; + log.error(message); + failWithMessage(message); + } + return this; + } + + public SpanAssert isNotShared() { + isNotNull(); + if (this.actual.isShared()) { + String message = "The span is NOT supposed to be shared but it is!"; + log.error(message); + failWithMessage(message); + } + return this; + } + public SpanAssert isNotExportable() { isNotNull(); if (this.actual.isExportable()) { diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/HeaderBasedMessagingExtractorTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/HeaderBasedMessagingExtractorTests.java index 12cecd440..572b9dfb4 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/HeaderBasedMessagingExtractorTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/messaging/HeaderBasedMessagingExtractorTests.java @@ -16,6 +16,8 @@ package org.springframework.cloud.sleuth.instrument.messaging; +import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then; + import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -24,8 +26,6 @@ import org.junit.Test; import org.springframework.cloud.sleuth.Span; import org.springframework.cloud.sleuth.SpanTextMap; -import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then; - /** * @author Marcin Grzejszczak */ @@ -42,7 +42,7 @@ public class HeaderBasedMessagingExtractorTests { Span span = extractor.joinTrace(spanTextMap); - then(span).isExportable(); + then(span).isExportable().isShared(); } @Test @@ -56,7 +56,7 @@ public class HeaderBasedMessagingExtractorTests { Span span = extractor.joinTrace(spanTextMap); - then(span).isExportable(); + then(span).isExportable().isShared(); } @Test @@ -69,7 +69,7 @@ public class HeaderBasedMessagingExtractorTests { Span span = extractor.joinTrace(spanTextMap); - then(span).isExportable(); + then(span).isExportable().isShared(); } @Test @@ -82,7 +82,7 @@ public class HeaderBasedMessagingExtractorTests { Span span = extractor.joinTrace(spanTextMap); - then(span).isNotExportable(); + then(span).isNotExportable().isNotShared(); } @Test @@ -93,7 +93,7 @@ public class HeaderBasedMessagingExtractorTests { Span span = extractor.joinTrace(spanTextMap); - then(span).isExportable(); + then(span).isExportable().isNotShared(); then(span.traceIdString()).isNotEmpty(); then(span.getSpanId()).isNotNull(); } @@ -107,7 +107,7 @@ public class HeaderBasedMessagingExtractorTests { Span span = extractor.joinTrace(spanTextMap); - then(span).isExportable(); + then(span).isExportable().isNotShared(); then(span.traceIdString()).isNotEmpty(); then(span.getSpanId()).isEqualTo(10L); } @@ -121,7 +121,7 @@ public class HeaderBasedMessagingExtractorTests { Span span = extractor.joinTrace(spanTextMap); - then(span).isExportable(); + then(span).isExportable().isNotShared(); then(span.getTraceId()).isEqualTo(10L); then(span.getSpanId()).isEqualTo(10L); } diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/HttpServletRequestExtractorTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/HttpServletRequestExtractorTests.java index 4a4568044..2a53e7b8c 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/HttpServletRequestExtractorTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/HttpServletRequestExtractorTests.java @@ -16,6 +16,8 @@ package org.springframework.cloud.sleuth.instrument.web; +import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then; + import javax.servlet.http.HttpServletRequest; import java.util.Arrays; import java.util.Random; @@ -30,8 +32,6 @@ import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.cloud.sleuth.Span; -import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then; - @RunWith(MockitoJUnitRunner.class) public class HttpServletRequestExtractorTests { @@ -82,18 +82,60 @@ public class HttpServletRequestExtractorTests { @Test public void should_accept_128bit_trace_id() { - String hex128Bits = "463ac35c9f6413ad48485a3953bb6124"; - String lower64Bits = "48485a3953bb6124"; + String hex128Bits = spanInHeaders(); - BDDMockito.given(this.request.getHeaderNames()) - .willReturn(new Vector<>(Arrays.asList(Span.TRACE_ID_NAME, Span.SPAN_ID_NAME)).elements()); - BDDMockito.given(this.request.getHeader(Span.TRACE_ID_NAME)) - .willReturn(hex128Bits); - BDDMockito.given(this.request.getHeader(Span.SPAN_ID_NAME)) - .willReturn(lower64Bits); Span span = this.extractor.joinTrace(new HttpServletRequestTextMap(this.request)); then(span.traceIdString()).isEqualTo(hex128Bits); } + + @Test + public void should_set_shared_flag_for_sampled_span_in_headers() { + spanInHeaders(); + + Span span = this.extractor.joinTrace(new HttpServletRequestTextMap(this.request)); + + then(span.isShared()).isTrue(); + } + + @Test + public void should_not_set_shared_flag_for_non_sampled_span_in_headers() { + spanInHeaders(); + BDDMockito.given(this.request.getHeader(Span.SAMPLED_NAME)) + .willReturn(Span.SPAN_NOT_SAMPLED); + + Span span = this.extractor.joinTrace(new HttpServletRequestTextMap(this.request)); + + then(span.isShared()).isFalse(); + } + + @Test + public void should_not_set_shared_flag_for_sampled_span_in_headers_without_span_trace_id() { + BDDMockito.given(this.request.getHeaderNames()) + .willReturn(new Vector<>(Arrays.asList(Span.SPAN_FLAGS, Span.SPAN_ID_NAME)).elements()); + BDDMockito.given(this.request.getHeader(Span.SPAN_FLAGS)) + .willReturn("1"); + BDDMockito.given(this.request.getHeader(Span.SPAN_ID_NAME)) + .willReturn("48485a3953bb6124"); + + Span span = this.extractor.joinTrace(new HttpServletRequestTextMap(this.request)); + + then(span.isShared()).isFalse(); + } + + private String spanInHeaders() { + String hex128Bits = "463ac35c9f6413ad48485a3953bb6124"; + String lower64Bits = "48485a3953bb6124"; + + BDDMockito.given(this.request.getHeaderNames()) + .willReturn(new Vector<>(Arrays.asList(Span.TRACE_ID_NAME, Span.SPAN_ID_NAME, Span.SAMPLED_NAME)).elements()); + BDDMockito.given(this.request.getHeader(Span.TRACE_ID_NAME)) + .willReturn(hex128Bits); + BDDMockito.given(this.request.getHeader(Span.SPAN_ID_NAME)) + .willReturn(lower64Bits); + BDDMockito.given(this.request.getHeader(Span.SAMPLED_NAME)) + .willReturn(Span.SPAN_SAMPLED); + return hex128Bits; + } } diff --git a/spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ConvertToZipkinSpanList.java b/spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ConvertToZipkinSpanList.java index bb9e50465..d2b28a8d7 100644 --- a/spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ConvertToZipkinSpanList.java +++ b/spring-cloud-sleuth-zipkin-stream/src/main/java/org/springframework/cloud/sleuth/zipkin/stream/ConvertToZipkinSpanList.java @@ -15,6 +15,10 @@ */ package org.springframework.cloud.sleuth.zipkin.stream; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import org.apache.commons.logging.Log; import org.springframework.cloud.sleuth.Span; import org.springframework.cloud.sleuth.stream.Host; @@ -26,10 +30,6 @@ import zipkin.Constants; import zipkin.Endpoint; import zipkin.Span.Builder; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - /** * This converts sleuth spans to zipkin ones, skipping invalid or unsampled. * @@ -96,9 +96,14 @@ final class ConvertToZipkinSpanList { // rather let the client do that. Worst case we were propagated an unreported ID and // Zipkin backfills timestamp and duration. if (!span.isRemote()) { - zipkinSpan.timestamp(span.getBegin() * 1000); - if (!span.isRunning()) { // duration is authoritative, only write when the span stopped - zipkinSpan.duration(calculateDurationInMicros(span)); + if (Boolean.TRUE.equals(span.isShared())) { + // don't report server-side timestamp on shared spans + zipkinSpan.timestamp(null).duration(null); + } else { + zipkinSpan.timestamp(span.getBegin() * 1000); + if (!span.isRunning()) { // duration is authoritative, only write when the span stopped + zipkinSpan.duration(calculateDurationInMicros(span)); + } } } zipkinSpan.traceIdHigh(span.getTraceIdHigh()); diff --git a/spring-cloud-sleuth-zipkin-stream/src/test/java/org/springframework/cloud/sleuth/zipkin/stream/ConvertToZipkinSpanListTests.java b/spring-cloud-sleuth-zipkin-stream/src/test/java/org/springframework/cloud/sleuth/zipkin/stream/ConvertToZipkinSpanListTests.java index 304a1b6eb..15dc2fcb8 100644 --- a/spring-cloud-sleuth-zipkin-stream/src/test/java/org/springframework/cloud/sleuth/zipkin/stream/ConvertToZipkinSpanListTests.java +++ b/spring-cloud-sleuth-zipkin-stream/src/test/java/org/springframework/cloud/sleuth/zipkin/stream/ConvertToZipkinSpanListTests.java @@ -15,6 +15,11 @@ */ package org.springframework.cloud.sleuth.zipkin.stream; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Random; + import org.assertj.core.api.Condition; import org.junit.Test; import org.springframework.cloud.sleuth.Span; @@ -23,11 +28,6 @@ import org.springframework.cloud.sleuth.stream.Spans; import zipkin.Constants; import zipkin.Endpoint; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Random; - import static org.assertj.core.api.Assertions.assertThat; public class ConvertToZipkinSpanListTests { @@ -217,6 +217,39 @@ public class ConvertToZipkinSpanListTests { assertThat(result.traceId).isEqualTo(span.getTraceId()); } + @Test + public void shouldRemoveTimestampAndDurationForNonRemoteSharedSpan() { + Span span = Span.builder() + .name("foo") + .exportable(false) + .remote(false) + .shared(true) + .build(); + Spans spans = new Spans(this.host, Collections.singletonList(span)); + + zipkin.Span result = ConvertToZipkinSpanList.convert(spans).get(0); + + assertThat(result.duration).isNull(); + assertThat(result.timestamp).isNull(); + } + + @Test + public void shouldNotRemoveTimestampAndDurationForNonRemoteNonSharedSpan() { + Span span = Span.builder() + .name("foo") + .exportable(false) + .remote(false) + .shared(false) + .build(); + span.stop(); + Spans spans = new Spans(this.host, Collections.singletonList(span)); + + zipkin.Span result = ConvertToZipkinSpanList.convert(spans).get(0); + + assertThat(result.duration).isNotNull(); + assertThat(result.timestamp).isNotNull(); + } + Span span(String name) { return span(name, false); } diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListener.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListener.java index 5e7b77744..35e1a25ed 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListener.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListener.java @@ -112,9 +112,14 @@ public class ZipkinSpanListener implements SpanReporter { // rather let the client do that. Worst case we were propagated an unreported ID and // Zipkin backfills timestamp and duration. if (!convertedSpan.isRemote()) { - zipkinSpan.timestamp(convertedSpan.getBegin() * 1000L); - if (!convertedSpan.isRunning()) { // duration is authoritative, only write when the span stopped - zipkinSpan.duration(calculateDurationInMicros(convertedSpan)); + // don't report server-side timestamp on shared spans + if (Boolean.TRUE.equals(convertedSpan.isShared())) { + zipkinSpan.timestamp(null).duration(null); + } else { + zipkinSpan.timestamp(convertedSpan.getBegin() * 1000L); + if (!convertedSpan.isRunning()) { // duration is authoritative, only write when the span stopped + zipkinSpan.duration(calculateDurationInMicros(convertedSpan)); + } } } zipkinSpan.traceIdHigh(convertedSpan.getTraceIdHigh()); diff --git a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListenerTests.java b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListenerTests.java index 8c5498b57..b9c200a72 100644 --- a/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListenerTests.java +++ b/spring-cloud-sleuth-zipkin/src/test/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanListenerTests.java @@ -315,6 +315,37 @@ public class ZipkinSpanListenerTests { assertThat(result.name).isEqualTo("foo"); } + @Test + public void shouldRemoveTimestampAndDurationForNonRemoteSharedSpan() { + Span span = Span.builder() + .name("foo") + .exportable(false) + .remote(false) + .shared(true) + .build(); + + zipkin.Span result = this.spanListener.convert(span); + + assertThat(result.duration).isNull(); + assertThat(result.timestamp).isNull(); + } + + @Test + public void shouldNotRemoveTimestampAndDurationForNonRemoteNonSharedSpan() { + Span span = Span.builder() + .name("foo") + .exportable(false) + .remote(false) + .shared(false) + .build(); + span.stop(); + + zipkin.Span result = this.spanListener.convert(span); + + assertThat(result.duration).isNotNull(); + assertThat(result.timestamp).isNotNull(); + } + @Configuration @EnableAutoConfiguration protected static class TestConfiguration { From 833bff33728c8dc970bee4801f031bb34dd36825 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 14 Sep 2017 17:15:30 +0200 Subject: [PATCH 2/5] Fixed a typo --- .../src/main/java/org/springframework/cloud/sleuth/Span.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java index 7cf921740..fc393daff 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java @@ -529,7 +529,7 @@ public class Span implements SpanContext { /** * Span and trace id got extracted from a carrier? - * We are adding data to the same span created by a remote client2 + * We are adding data to the same span created by a remote client * * @since 1.3.0 */ From 2cb7663ec8c235a2039882c0b5e06fbf01fd5081 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 3 Oct 2017 14:26:25 +0200 Subject: [PATCH 3/5] Update SNAPSHOT to 1.2.5.RELEASE --- benchmarks/pom.xml | 2 +- docs/pom.xml | 2 +- pom.xml | 12 ++++++------ spring-cloud-sleuth-core/pom.xml | 2 +- spring-cloud-sleuth-dependencies/pom.xml | 4 ++-- spring-cloud-sleuth-samples/pom.xml | 2 +- .../spring-cloud-sleuth-sample-feign/pom.xml | 2 +- .../spring-cloud-sleuth-sample-messaging/pom.xml | 2 +- .../spring-cloud-sleuth-sample-ribbon/pom.xml | 2 +- .../spring-cloud-sleuth-sample-stream/pom.xml | 2 +- .../spring-cloud-sleuth-sample-test-core/pom.xml | 2 +- .../spring-cloud-sleuth-sample-websocket/pom.xml | 2 +- .../spring-cloud-sleuth-sample-zipkin-stream/pom.xml | 2 +- .../spring-cloud-sleuth-sample-zipkin/pom.xml | 2 +- .../spring-cloud-sleuth-sample/pom.xml | 2 +- spring-cloud-sleuth-stream/pom.xml | 2 +- spring-cloud-sleuth-zipkin-stream/pom.xml | 2 +- spring-cloud-sleuth-zipkin/pom.xml | 2 +- spring-cloud-starter-sleuth/pom.xml | 2 +- spring-cloud-starter-zipkin/pom.xml | 2 +- 20 files changed, 26 insertions(+), 26 deletions(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 73e7cc87e..38b4b7c7a 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -17,7 +17,7 @@ Benchmarks Benchmarks (JMH) org.springframework.cloud - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE benchmarks diff --git a/docs/pom.xml b/docs/pom.xml index a7a0d8bcb..7a7d671b2 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE spring-cloud-sleuth-docs pom diff --git a/pom.xml b/pom.xml index 83d6e5e54..37f227afa 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE pom Spring Cloud Sleuth Spring Cloud Sleuth @@ -13,7 +13,7 @@ org.springframework.cloud spring-cloud-build - 1.3.5.BUILD-SNAPSHOT + 1.3.5.RELEASE @@ -234,10 +234,10 @@ 1.8 2.19.1 2.17 - 1.3.5.BUILD-SNAPSHOT - 1.2.4.BUILD-SNAPSHOT - Chelsea.BUILD-SNAPSHOT - 1.3.5.BUILD-SNAPSHOT + 1.3.5.RELEASE + 1.2.4.RELEASE + Chelsea.SR2 + 1.3.5.RELEASE diff --git a/spring-cloud-sleuth-core/pom.xml b/spring-cloud-sleuth-core/pom.xml index 4313bff7f..10ef4bd61 100644 --- a/spring-cloud-sleuth-core/pom.xml +++ b/spring-cloud-sleuth-core/pom.xml @@ -11,7 +11,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. diff --git a/spring-cloud-sleuth-dependencies/pom.xml b/spring-cloud-sleuth-dependencies/pom.xml index 9efa52c1d..8e286e710 100644 --- a/spring-cloud-sleuth-dependencies/pom.xml +++ b/spring-cloud-sleuth-dependencies/pom.xml @@ -5,11 +5,11 @@ spring-cloud-dependencies-parent org.springframework.cloud - 1.3.5.BUILD-SNAPSHOT + 1.3.5.RELEASE spring-cloud-sleuth-dependencies - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE pom spring-cloud-sleuth-dependencies Spring Cloud Sleuth Dependencies diff --git a/spring-cloud-sleuth-samples/pom.xml b/spring-cloud-sleuth-samples/pom.xml index 0db7a4f0c..401092119 100644 --- a/spring-cloud-sleuth-samples/pom.xml +++ b/spring-cloud-sleuth-samples/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign/pom.xml index cc7acb880..6197db8da 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign/pom.xml @@ -20,7 +20,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/pom.xml index e7711f754..003a52975 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/pom.xml index 4cb0a91ce..167bcc965 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml index 002f099af..8d8f3cae4 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml index b3e224f4d..4b47b2585 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-websocket/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-websocket/pom.xml index 4a8b5d749..22430f550 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-websocket/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-websocket/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml index 4a7e0df98..154de8d8b 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml index 3290b8959..81c176ca1 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml @@ -27,7 +27,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml index 8c1bd0ebb..05e24a0b3 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. diff --git a/spring-cloud-sleuth-stream/pom.xml b/spring-cloud-sleuth-stream/pom.xml index 604acfd9f..ef34a59f1 100644 --- a/spring-cloud-sleuth-stream/pom.xml +++ b/spring-cloud-sleuth-stream/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE diff --git a/spring-cloud-sleuth-zipkin-stream/pom.xml b/spring-cloud-sleuth-zipkin-stream/pom.xml index 896f578c5..3fadb722c 100644 --- a/spring-cloud-sleuth-zipkin-stream/pom.xml +++ b/spring-cloud-sleuth-zipkin-stream/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE diff --git a/spring-cloud-sleuth-zipkin/pom.xml b/spring-cloud-sleuth-zipkin/pom.xml index a677df065..676caa990 100644 --- a/spring-cloud-sleuth-zipkin/pom.xml +++ b/spring-cloud-sleuth-zipkin/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. diff --git a/spring-cloud-starter-sleuth/pom.xml b/spring-cloud-starter-sleuth/pom.xml index fc5efcfa0..aca67f1e1 100644 --- a/spring-cloud-starter-sleuth/pom.xml +++ b/spring-cloud-starter-sleuth/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. spring-cloud-starter-sleuth diff --git a/spring-cloud-starter-zipkin/pom.xml b/spring-cloud-starter-zipkin/pom.xml index 54788ba37..e13c68d8f 100644 --- a/spring-cloud-starter-zipkin/pom.xml +++ b/spring-cloud-starter-zipkin/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.5.RELEASE .. spring-cloud-starter-zipkin From a69610fc0d213afe6d397fc8e6e491ee64e7d5bf Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 3 Oct 2017 14:28:31 +0200 Subject: [PATCH 4/5] Going back to snapshots --- benchmarks/pom.xml | 2 +- docs/pom.xml | 2 +- pom.xml | 12 ++++++------ spring-cloud-sleuth-core/pom.xml | 2 +- spring-cloud-sleuth-dependencies/pom.xml | 4 ++-- spring-cloud-sleuth-samples/pom.xml | 2 +- .../spring-cloud-sleuth-sample-feign/pom.xml | 2 +- .../spring-cloud-sleuth-sample-messaging/pom.xml | 2 +- .../spring-cloud-sleuth-sample-ribbon/pom.xml | 2 +- .../spring-cloud-sleuth-sample-stream/pom.xml | 2 +- .../spring-cloud-sleuth-sample-test-core/pom.xml | 2 +- .../spring-cloud-sleuth-sample-websocket/pom.xml | 2 +- .../spring-cloud-sleuth-sample-zipkin-stream/pom.xml | 2 +- .../spring-cloud-sleuth-sample-zipkin/pom.xml | 2 +- .../spring-cloud-sleuth-sample/pom.xml | 2 +- spring-cloud-sleuth-stream/pom.xml | 2 +- spring-cloud-sleuth-zipkin-stream/pom.xml | 2 +- spring-cloud-sleuth-zipkin/pom.xml | 2 +- spring-cloud-starter-sleuth/pom.xml | 2 +- spring-cloud-starter-zipkin/pom.xml | 2 +- 20 files changed, 26 insertions(+), 26 deletions(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 38b4b7c7a..73e7cc87e 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -17,7 +17,7 @@ Benchmarks Benchmarks (JMH) org.springframework.cloud - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT benchmarks diff --git a/docs/pom.xml b/docs/pom.xml index 7a7d671b2..a7a0d8bcb 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT spring-cloud-sleuth-docs pom diff --git a/pom.xml b/pom.xml index 37f227afa..83d6e5e54 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 spring-cloud-sleuth - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT pom Spring Cloud Sleuth Spring Cloud Sleuth @@ -13,7 +13,7 @@ org.springframework.cloud spring-cloud-build - 1.3.5.RELEASE + 1.3.5.BUILD-SNAPSHOT @@ -234,10 +234,10 @@ 1.8 2.19.1 2.17 - 1.3.5.RELEASE - 1.2.4.RELEASE - Chelsea.SR2 - 1.3.5.RELEASE + 1.3.5.BUILD-SNAPSHOT + 1.2.4.BUILD-SNAPSHOT + Chelsea.BUILD-SNAPSHOT + 1.3.5.BUILD-SNAPSHOT diff --git a/spring-cloud-sleuth-core/pom.xml b/spring-cloud-sleuth-core/pom.xml index 10ef4bd61..4313bff7f 100644 --- a/spring-cloud-sleuth-core/pom.xml +++ b/spring-cloud-sleuth-core/pom.xml @@ -11,7 +11,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-dependencies/pom.xml b/spring-cloud-sleuth-dependencies/pom.xml index 8e286e710..9efa52c1d 100644 --- a/spring-cloud-sleuth-dependencies/pom.xml +++ b/spring-cloud-sleuth-dependencies/pom.xml @@ -5,11 +5,11 @@ spring-cloud-dependencies-parent org.springframework.cloud - 1.3.5.RELEASE + 1.3.5.BUILD-SNAPSHOT spring-cloud-sleuth-dependencies - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT pom spring-cloud-sleuth-dependencies Spring Cloud Sleuth Dependencies diff --git a/spring-cloud-sleuth-samples/pom.xml b/spring-cloud-sleuth-samples/pom.xml index 401092119..0db7a4f0c 100644 --- a/spring-cloud-sleuth-samples/pom.xml +++ b/spring-cloud-sleuth-samples/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign/pom.xml index 6197db8da..cc7acb880 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign/pom.xml @@ -20,7 +20,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/pom.xml index 003a52975..e7711f754 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/pom.xml index 167bcc965..4cb0a91ce 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml index 8d8f3cae4..002f099af 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml index 4b47b2585..b3e224f4d 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-websocket/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-websocket/pom.xml index 22430f550..4a8b5d749 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-websocket/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-websocket/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml index 154de8d8b..4a7e0df98 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml index 81c176ca1..3290b8959 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml @@ -27,7 +27,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml index 05e24a0b3..8c1bd0ebb 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-stream/pom.xml b/spring-cloud-sleuth-stream/pom.xml index ef34a59f1..604acfd9f 100644 --- a/spring-cloud-sleuth-stream/pom.xml +++ b/spring-cloud-sleuth-stream/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT diff --git a/spring-cloud-sleuth-zipkin-stream/pom.xml b/spring-cloud-sleuth-zipkin-stream/pom.xml index 3fadb722c..896f578c5 100644 --- a/spring-cloud-sleuth-zipkin-stream/pom.xml +++ b/spring-cloud-sleuth-zipkin-stream/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT diff --git a/spring-cloud-sleuth-zipkin/pom.xml b/spring-cloud-sleuth-zipkin/pom.xml index 676caa990..a677df065 100644 --- a/spring-cloud-sleuth-zipkin/pom.xml +++ b/spring-cloud-sleuth-zipkin/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. diff --git a/spring-cloud-starter-sleuth/pom.xml b/spring-cloud-starter-sleuth/pom.xml index aca67f1e1..fc5efcfa0 100644 --- a/spring-cloud-starter-sleuth/pom.xml +++ b/spring-cloud-starter-sleuth/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. spring-cloud-starter-sleuth diff --git a/spring-cloud-starter-zipkin/pom.xml b/spring-cloud-starter-zipkin/pom.xml index e13c68d8f..54788ba37 100644 --- a/spring-cloud-starter-zipkin/pom.xml +++ b/spring-cloud-starter-zipkin/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.RELEASE + 1.2.5.BUILD-SNAPSHOT .. spring-cloud-starter-zipkin From 2b7a254d9632ba3f9c672e5988cdb72d15ca42e9 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 3 Oct 2017 14:28:31 +0200 Subject: [PATCH 5/5] Bumping versions to 1.2.6.BUILD-SNAPSHOT after release --- benchmarks/pom.xml | 2 +- docs/pom.xml | 2 +- pom.xml | 2 +- spring-cloud-sleuth-core/pom.xml | 2 +- spring-cloud-sleuth-dependencies/pom.xml | 2 +- spring-cloud-sleuth-samples/pom.xml | 2 +- .../spring-cloud-sleuth-sample-feign/pom.xml | 2 +- .../spring-cloud-sleuth-sample-messaging/pom.xml | 2 +- .../spring-cloud-sleuth-sample-ribbon/pom.xml | 2 +- .../spring-cloud-sleuth-sample-stream/pom.xml | 2 +- .../spring-cloud-sleuth-sample-test-core/pom.xml | 2 +- .../spring-cloud-sleuth-sample-websocket/pom.xml | 2 +- .../spring-cloud-sleuth-sample-zipkin-stream/pom.xml | 2 +- .../spring-cloud-sleuth-sample-zipkin/pom.xml | 2 +- spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml | 2 +- spring-cloud-sleuth-stream/pom.xml | 2 +- spring-cloud-sleuth-zipkin-stream/pom.xml | 2 +- spring-cloud-sleuth-zipkin/pom.xml | 2 +- spring-cloud-starter-sleuth/pom.xml | 2 +- spring-cloud-starter-zipkin/pom.xml | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 73e7cc87e..677d3d153 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -17,7 +17,7 @@ Benchmarks Benchmarks (JMH) org.springframework.cloud - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT benchmarks diff --git a/docs/pom.xml b/docs/pom.xml index a7a0d8bcb..3d85388b4 100644 --- a/docs/pom.xml +++ b/docs/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT spring-cloud-sleuth-docs pom diff --git a/pom.xml b/pom.xml index 83d6e5e54..5273b96d2 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT pom Spring Cloud Sleuth Spring Cloud Sleuth diff --git a/spring-cloud-sleuth-core/pom.xml b/spring-cloud-sleuth-core/pom.xml index 4313bff7f..4724a43b7 100644 --- a/spring-cloud-sleuth-core/pom.xml +++ b/spring-cloud-sleuth-core/pom.xml @@ -11,7 +11,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-dependencies/pom.xml b/spring-cloud-sleuth-dependencies/pom.xml index 9efa52c1d..ffb8d5ea2 100644 --- a/spring-cloud-sleuth-dependencies/pom.xml +++ b/spring-cloud-sleuth-dependencies/pom.xml @@ -9,7 +9,7 @@ spring-cloud-sleuth-dependencies - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT pom spring-cloud-sleuth-dependencies Spring Cloud Sleuth Dependencies diff --git a/spring-cloud-sleuth-samples/pom.xml b/spring-cloud-sleuth-samples/pom.xml index 0db7a4f0c..ff82091d2 100644 --- a/spring-cloud-sleuth-samples/pom.xml +++ b/spring-cloud-sleuth-samples/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign/pom.xml index cc7acb880..de563ca5f 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-feign/pom.xml @@ -20,7 +20,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/pom.xml index e7711f754..54b1762b2 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/pom.xml index 4cb0a91ce..f5f80355e 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-ribbon/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml index 002f099af..2daf31037 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml index b3e224f4d..46525bdf6 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-test-core/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-websocket/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-websocket/pom.xml index 4a8b5d749..8e6dc8b7c 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-websocket/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-websocket/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml index 4a7e0df98..85bc2e48b 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml index 3290b8959..74f356748 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin/pom.xml @@ -27,7 +27,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml index 8c1bd0ebb..6f338d830 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth-samples - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. diff --git a/spring-cloud-sleuth-stream/pom.xml b/spring-cloud-sleuth-stream/pom.xml index 604acfd9f..d687da6a2 100644 --- a/spring-cloud-sleuth-stream/pom.xml +++ b/spring-cloud-sleuth-stream/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT diff --git a/spring-cloud-sleuth-zipkin-stream/pom.xml b/spring-cloud-sleuth-zipkin-stream/pom.xml index 896f578c5..e8d4064ca 100644 --- a/spring-cloud-sleuth-zipkin-stream/pom.xml +++ b/spring-cloud-sleuth-zipkin-stream/pom.xml @@ -12,7 +12,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT diff --git a/spring-cloud-sleuth-zipkin/pom.xml b/spring-cloud-sleuth-zipkin/pom.xml index a677df065..bce6a1356 100644 --- a/spring-cloud-sleuth-zipkin/pom.xml +++ b/spring-cloud-sleuth-zipkin/pom.xml @@ -28,7 +28,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. diff --git a/spring-cloud-starter-sleuth/pom.xml b/spring-cloud-starter-sleuth/pom.xml index fc5efcfa0..6e45cddad 100644 --- a/spring-cloud-starter-sleuth/pom.xml +++ b/spring-cloud-starter-sleuth/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. spring-cloud-starter-sleuth diff --git a/spring-cloud-starter-zipkin/pom.xml b/spring-cloud-starter-zipkin/pom.xml index 54788ba37..2d61f7a5a 100644 --- a/spring-cloud-starter-zipkin/pom.xml +++ b/spring-cloud-starter-zipkin/pom.xml @@ -5,7 +5,7 @@ org.springframework.cloud spring-cloud-sleuth - 1.2.5.BUILD-SNAPSHOT + 1.2.6.BUILD-SNAPSHOT .. spring-cloud-starter-zipkin