Updates to zipkin-java 0.4.3

This commit is contained in:
Adrian Cole
2016-01-20 12:22:18 +08:00
parent da60403321
commit 9bcab5b0c6
31 changed files with 83 additions and 86 deletions

View File

@@ -11,7 +11,7 @@ import org.springframework.cloud.sleuth.TraceAccessor;
*
* <ul>
* <li>We're taking the TraceID into consideration for sampling to be consistent</li>
* <li>We apply the Zipkin algorithm to define whether we should sample or not (we're comparing against thresholdg) - https://github.com/openzipkin/zipkin-java/blob/master/zipkin-java-core/src/main/java/io/zipkin/TraceIdSampler.java#L78</li>
* <li>We apply the Zipkin algorithm to define whether we should sample or not (we're comparing against thresholdg) - https://github.com/openzipkin/zipkin-java/blob/master/zipkin/src/main/java/zipkin/Sampler.java</li>
* </ul>
*
* The value provided from SamplerConfiguration in terms of percentage is an estimation. It might occur that amount

View File

@@ -17,7 +17,7 @@
<brave.version>3.4.0</brave.version>
<spring-cloud-netflix.version>1.1.0.BUILD-SNAPSHOT</spring-cloud-netflix.version>
<aspectj.version>1.8.4</aspectj.version>
<zipkin-java.version>0.4.1</zipkin-java.version>
<zipkin-java.version>0.4.3</zipkin-java.version>
</properties>
<dependencyManagement>
<dependencies>
@@ -74,18 +74,18 @@
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>io.zipkin</groupId>
<artifactId>zipkin-java-core</artifactId>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin</artifactId>
<version>${zipkin-java.version}</version>
</dependency>
<dependency>
<groupId>io.zipkin</groupId>
<artifactId>zipkin-java-server</artifactId>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>${zipkin-java.version}</version>
</dependency>
<dependency>
<groupId>io.zipkin</groupId>
<artifactId>zipkin-java-jdbc</artifactId>
<groupId>io.zipkin.java</groupId>
<artifactId>spanstore-jdbc</artifactId>
<version>${zipkin-java.version}</version>
</dependency>
</dependencies>

View File

@@ -83,15 +83,15 @@
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.zipkin</groupId>
<artifactId>zipkin-java-core</artifactId>
<version>0.4.1</version>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin</artifactId>
<version>0.4.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.zipkin</groupId>
<artifactId>zipkin-java-server</artifactId>
<version>0.4.1</version>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>0.4.3</version>
<scope>compile</scope>
</dependency>
</dependencies>

View File

@@ -15,9 +15,9 @@
*/
package integration;
import io.zipkin.Span;
import lombok.extern.apachecommons.CommonsLog;
import org.springframework.cloud.sleuth.zipkin.ZipkinSpanReporter;
import zipkin.Span;
import java.util.Collections;
import java.util.LinkedList;

View File

@@ -108,8 +108,8 @@
<artifactId>docker-compose</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin</groupId>
<artifactId>zipkin-java-core</artifactId>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin</artifactId>
</dependency>
</dependencies>

View File

@@ -17,11 +17,11 @@ package tools;
import com.jayway.awaitility.Awaitility;
import com.jayway.awaitility.core.ConditionFactory;
import io.zipkin.Codec;
import io.zipkin.Span;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.*;
import org.springframework.web.client.RestTemplate;
import zipkin.Codec;
import zipkin.Span;
import java.net.URI;
import java.util.*;
@@ -122,7 +122,7 @@ public abstract class AbstractIntegrationTest {
};
}
protected List<String> serviceNamesNotFoundInZipkin(List<io.zipkin.Span> spans) {
protected List<String> serviceNamesNotFoundInZipkin(List<zipkin.Span> spans) {
List<String> serviceNamesFoundInAnnotations = spans.stream()
.filter(span -> span.annotations != null)
.map(span -> span.annotations)
@@ -151,7 +151,7 @@ public abstract class AbstractIntegrationTest {
return "unknown";
}
protected List<String> annotationsNotFoundInZipkin(List<io.zipkin.Span> spans) {
protected List<String> annotationsNotFoundInZipkin(List<zipkin.Span> spans) {
String binaryAnnotationName = getRequiredBinaryAnnotationName();
Optional<String> names = spans.stream()
.filter(span -> span.binaryAnnotations != null)

View File

@@ -11,7 +11,7 @@ import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import example.ZipkinStreamServerApplication;
import io.zipkin.SpanStore;
import zipkin.SpanStore;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ZipkinStreamServerApplication.class)

View File

@@ -3,7 +3,7 @@ mysql:
ports:
- 3306:3306
query:
image: openzipkin/zipkin-java:0.4.1
image: openzipkin/zipkin-java:0.4.3
environment:
# Remove TRANSPORT_TYPE to disable tracing
- TRANSPORT_TYPE=http

View File

@@ -83,8 +83,8 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.zipkin</groupId>
<artifactId>zipkin-java-server</artifactId>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
<groupId>com.github.kristofa</groupId>

View File

@@ -16,7 +16,6 @@
package sample;
import io.zipkin.Span;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -54,7 +53,7 @@ public class SampleZipkinApplication {
public ZipkinSpanReporter spanCollector() {
return new ZipkinSpanReporter() {
@Override
public void report(Span span) {
public void report(zipkin.Span span) {
log.info("Reporting span [{}]", span);
}
};

View File

@@ -16,7 +16,6 @@
package integration;
import integration.ZipkinTests.WaitUntilZipkinIsUpConfig;
import io.zipkin.server.ZipkinServer;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.junit.Before;
@@ -33,6 +32,7 @@ import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import sample.SampleZipkinApplication;
import tools.AbstractIntegrationTest;
import zipkin.server.ZipkinServer;
import java.util.Random;

View File

@@ -2,7 +2,7 @@
There are 4 parts to Zipkin: the instrumented client apps, the web UI, the backend database and the query server. The database for this implementation is MySQL.
> There is a running instance on PWS: http://zipkin-web.cfapps.io. It is backed by a `zipkin-java-server` with a MySQL backend and RabbitMQ (Spring Cloud Stream) for span transport.
> There is a running instance on PWS: http://zipkin-web.cfapps.io. It is backed by a `zipkin-server` with a MySQL backend and RabbitMQ (Spring Cloud Stream) for span transport.
## Instrumenting Apps

View File

@@ -58,12 +58,12 @@
<artifactId>spring-boot-starter-cloud-connectors</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin</groupId>
<artifactId>zipkin-java-server</artifactId>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin</groupId>
<artifactId>zipkin-java-jdbc</artifactId>
<groupId>io.zipkin.java</groupId>
<artifactId>spanstore-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>

View File

@@ -23,7 +23,7 @@ import org.springframework.cloud.sleuth.stream.SleuthSink;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.context.annotation.Import;
import io.zipkin.server.EnableZipkinServer;
import zipkin.server.EnableZipkinServer;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)

View File

@@ -15,7 +15,6 @@
*/
package org.springframework.cloud.sleuth.zipkin.stream;
import io.zipkin.Sampler;
import java.util.Iterator;
import java.util.NoSuchElementException;
import lombok.extern.apachecommons.CommonsLog;
@@ -23,17 +22,18 @@ import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.stream.Host;
import org.springframework.cloud.sleuth.stream.SleuthSink;
import org.springframework.cloud.sleuth.stream.Spans;
import zipkin.Sampler;
/**
* This converts sleuth spans to zipkin ones, skipping invalid or unsampled.
*/
@CommonsLog
final class SamplingZipkinSpanIterator implements Iterator<io.zipkin.Span> {
final class SamplingZipkinSpanIterator implements Iterator<zipkin.Span> {
private final Sampler sampler;
private final Iterator<Span> delegate;
private final Host host;
private io.zipkin.Span peeked;
private zipkin.Span peeked;
SamplingZipkinSpanIterator(Sampler sampler, Spans input) {
this.sampler = sampler;
@@ -50,10 +50,10 @@ final class SamplingZipkinSpanIterator implements Iterator<io.zipkin.Span> {
}
@Override
public io.zipkin.Span next() {
public zipkin.Span next() {
// implicitly peeks
if (!hasNext()) throw new NoSuchElementException();
io.zipkin.Span result = peeked;
zipkin.Span result = peeked;
peeked = null;
return result;
}
@@ -64,9 +64,9 @@ final class SamplingZipkinSpanIterator implements Iterator<io.zipkin.Span> {
}
/** returns a converted span or null if it is invalid or unsampled. */
io.zipkin.Span convertAndSample(Span input, Host host) {
zipkin.Span convertAndSample(Span input, Host host) {
if (!input.getName().equals("message/" + SleuthSink.INPUT)) {
io.zipkin.Span result = ZipkinMessageListener.convert(input, host);
zipkin.Span result = ZipkinMessageListener.convert(input, host);
if (this.sampler.isSampled(result.traceId)) {
return result;
}

View File

@@ -1,8 +1,5 @@
package org.springframework.cloud.sleuth.zipkin.stream;
import io.zipkin.*;
import io.zipkin.BinaryAnnotation.Type;
import io.zipkin.Span.Builder;
import lombok.extern.apachecommons.CommonsLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -26,6 +23,9 @@ import org.springframework.core.type.AnnotatedTypeMetadata;
import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.integration.annotation.ServiceActivator;
import org.springframework.util.StringUtils;
import zipkin.*;
import zipkin.BinaryAnnotation.Type;
import zipkin.Span.Builder;
import javax.sql.DataSource;
import java.io.UnsupportedEncodingException;
@@ -48,7 +48,7 @@ public class ZipkinMessageListener {
@ServiceActivator(inputChannel = SleuthSink.INPUT)
public void sink(Spans input) {
Iterator<io.zipkin.Span> sampled = new SamplingZipkinSpanIterator(sampler, input);
Iterator<zipkin.Span> sampled = new SamplingZipkinSpanIterator(sampler, input);
if (sampled.hasNext()) {
this.spanStore.accept(sampled);
}
@@ -63,8 +63,8 @@ public class ZipkinMessageListener {
* </ul>
*/
// VisibleForTesting
static io.zipkin.Span convert(Span span, Host host) {
Builder zipkinSpan = new io.zipkin.Span.Builder();
static zipkin.Span convert(Span span, Host host) {
Builder zipkinSpan = new zipkin.Span.Builder();
Endpoint ep = Endpoint.create(host.getServiceName(), host.getIpv4(),
host.getPort().shortValue());

View File

@@ -15,12 +15,12 @@
*/
package org.springframework.cloud.sleuth.zipkin.stream;
import io.zipkin.Sampler;
import org.junit.Test;
import org.springframework.cloud.sleuth.MilliSpan;
import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.stream.Host;
import org.springframework.cloud.sleuth.stream.Spans;
import zipkin.Sampler;
import java.util.Arrays;
import java.util.Collections;
@@ -38,7 +38,7 @@ public class SamplingZipkinSpanIteratorTests {
public void skipsInputSpans() {
Spans spans = new Spans(host, Arrays.asList(span("message/sleuth")));
Iterator<io.zipkin.Span> result = new SamplingZipkinSpanIterator(Sampler.create(1.0f), spans);
Iterator<zipkin.Span> result = new SamplingZipkinSpanIterator(Sampler.create(1.0f), spans);
assertThat(result).isEmpty();
}
@@ -47,7 +47,7 @@ public class SamplingZipkinSpanIteratorTests {
public void retainsValidSpans() {
Spans spans = new Spans(host, Arrays.asList(span("foo"), span("bar"), span("baz")));
Iterator<io.zipkin.Span> result = new SamplingZipkinSpanIterator(Sampler.create(1.0f), spans);
Iterator<zipkin.Span> result = new SamplingZipkinSpanIterator(Sampler.create(1.0f), spans);
assertThat(result).extracting(s -> s.name).containsExactly("foo", "bar", "baz");
}
@@ -64,7 +64,7 @@ public class SamplingZipkinSpanIteratorTests {
}
};
Iterator<io.zipkin.Span> result = new SamplingZipkinSpanIterator(everyOtherSampler, spans);
Iterator<zipkin.Span> result = new SamplingZipkinSpanIterator(everyOtherSampler, spans);
assertThat(result).extracting(s -> s.name).containsExactly("foo", "baz");
}

View File

@@ -16,9 +16,9 @@
package org.springframework.cloud.sleuth.zipkin.stream;
import io.zipkin.BinaryAnnotation;
import io.zipkin.Endpoint;
import java.util.Collections;
import zipkin.BinaryAnnotation;
import zipkin.Endpoint;
import org.junit.Test;
import org.springframework.cloud.sleuth.MilliSpan;
@@ -37,7 +37,7 @@ public class ZipkinMessageListenerTests {
long start = System.currentTimeMillis();
span.log("http/request/retry"); // System.currentTimeMillis
io.zipkin.Span result = ZipkinMessageListener.convert(span, host);
zipkin.Span result = ZipkinMessageListener.convert(span, host);
assertThat(result.timestamp)
.isEqualTo(span.getBegin() * 1000);
@@ -54,7 +54,7 @@ public class ZipkinMessageListenerTests {
span.log("http/request/retry");
span.tag("spring-boot/version", "1.3.1.RELEASE");
io.zipkin.Span result = ZipkinMessageListener.convert(span, host);
zipkin.Span result = ZipkinMessageListener.convert(span, host);
assertThat(result.annotations.get(0).endpoint)
.isEqualTo(endpoint);
@@ -69,7 +69,7 @@ public class ZipkinMessageListenerTests {
*/
@Test
public void spanWithoutAnnotationsLogsComponent() {
io.zipkin.Span result = ZipkinMessageListener.convert(span, host);
zipkin.Span result = ZipkinMessageListener.convert(span, host);
assertThat(result.binaryAnnotations).hasSize(1);
assertThat(result.binaryAnnotations.get(0)).isEqualToComparingFieldByField(
@@ -81,7 +81,7 @@ public class ZipkinMessageListenerTests {
public void nullProcessIdCoercesToUnknownServiceName() {
MilliSpan noProcessId = MilliSpan.builder().traceId(1L).name("parent").remote(true).build();
io.zipkin.Span result = ZipkinMessageListener.convert(noProcessId, host);
zipkin.Span result = ZipkinMessageListener.convert(noProcessId, host);
assertThat(result.binaryAnnotations)
.containsOnly(BinaryAnnotation.create("lc", "unknown", endpoint));

View File

@@ -13,7 +13,7 @@ import org.springframework.cloud.sleuth.zipkin.stream.ZipkinServerApplicationTes
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import io.zipkin.SpanStore;
import zipkin.SpanStore;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ZipkinStreamServerApplication.class)

View File

@@ -3,7 +3,7 @@ mysql:
ports:
- 3306:3306
query:
image: openzipkin/zipkin-java:0.4.1
image: openzipkin/zipkin-java:0.4.3
environment:
# Remove TRANSPORT_TYPE to disable tracing
- TRANSPORT_TYPE=http

View File

@@ -42,8 +42,8 @@
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.zipkin</groupId>
<artifactId>zipkin-java-core</artifactId>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>

View File

@@ -20,7 +20,7 @@ import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.util.InetUtils;
import io.zipkin.Endpoint;
import zipkin.Endpoint;
/**
* An {@link EndpointLocator} that tries to find local service information from a

View File

@@ -16,7 +16,7 @@
package org.springframework.cloud.sleuth.zipkin;
import io.zipkin.Endpoint;
import zipkin.Endpoint;
/**
* Strategy for locating a zipkin {@linkplain Endpoint} for the current process.

View File

@@ -1,7 +1,7 @@
package org.springframework.cloud.sleuth.zipkin;
import io.zipkin.Endpoint;
import lombok.extern.slf4j.Slf4j;
import zipkin.Endpoint;
/**
* Endpoint locator that will try to call an endpoint via Discovery Client

View File

@@ -1,7 +1,5 @@
package org.springframework.cloud.sleuth.zipkin;
import io.zipkin.Codec;
import io.zipkin.Span;
import java.io.Closeable;
import java.io.Flushable;
import java.io.IOException;
@@ -17,6 +15,8 @@ import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ScheduledExecutorService;
import lombok.extern.apachecommons.CommonsLog;
import zipkin.Codec;
import zipkin.Span;
import static java.util.concurrent.TimeUnit.SECONDS;

View File

@@ -21,7 +21,7 @@ import org.springframework.boot.context.embedded.EmbeddedServletContainerInitial
import org.springframework.cloud.util.InetUtils;
import org.springframework.context.event.EventListener;
import io.zipkin.Endpoint;
import zipkin.Endpoint;
/**
* @author Dave Syer

View File

@@ -16,10 +16,6 @@
package org.springframework.cloud.sleuth.zipkin;
import io.zipkin.Annotation;
import io.zipkin.BinaryAnnotation;
import io.zipkin.Constants;
import io.zipkin.Endpoint;
import lombok.extern.apachecommons.CommonsLog;
import org.springframework.cloud.sleuth.Log;
import org.springframework.cloud.sleuth.Span;
@@ -32,6 +28,10 @@ import org.springframework.cloud.sleuth.event.SpanReleasedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.core.annotation.Order;
import org.springframework.util.StringUtils;
import zipkin.Annotation;
import zipkin.BinaryAnnotation;
import zipkin.Constants;
import zipkin.Endpoint;
import java.nio.charset.Charset;
import java.util.Map;
@@ -119,8 +119,8 @@ public class ZipkinSpanListener {
* </ul>
*/
// Visible for testing
io.zipkin.Span convert(Span span) {
io.zipkin.Span.Builder zipkinSpan = new io.zipkin.Span.Builder();
zipkin.Span convert(Span span) {
zipkin.Span.Builder zipkinSpan = new zipkin.Span.Builder();
// A zipkin span without any annotations cannot be queried, add special "lc" to avoid that.
if (span.logs().isEmpty() && span.tags().isEmpty()) {
@@ -158,7 +158,7 @@ public class ZipkinSpanListener {
/**
* Add annotations from the sleuth Span.
*/
private void addZipkinAnnotations(io.zipkin.Span.Builder zipkinSpan,
private void addZipkinAnnotations(zipkin.Span.Builder zipkinSpan,
Span span, Endpoint endpoint) {
for (Log ta : span.logs()) {
Annotation zipkinAnnotation = new Annotation.Builder()
@@ -174,7 +174,7 @@ public class ZipkinSpanListener {
*
* @return list of Annotations that could be added to Zipkin Span.
*/
private void addZipkinBinaryAnnotations(io.zipkin.Span.Builder zipkinSpan,
private void addZipkinBinaryAnnotations(zipkin.Span.Builder zipkinSpan,
Span span, Endpoint endpoint) {
for (Map.Entry<String, String> e : span.tags().entrySet()) {
BinaryAnnotation binaryAnn = new BinaryAnnotation.Builder()

View File

@@ -1,11 +1,9 @@
package org.springframework.cloud.sleuth.zipkin;
import io.zipkin.Span;
public interface ZipkinSpanReporter {
/**
* Receives completed spans from {@link ZipkinSpanListener} and submits them to a Zipkin
* collector.
*/
void report(Span span);
void report(zipkin.Span span);
}

View File

@@ -1,11 +1,11 @@
package org.springframework.cloud.sleuth.zipkin;
import io.zipkin.Endpoint;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.BDDMockito;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import zipkin.Endpoint;
import static org.assertj.core.api.BDDAssertions.then;

View File

@@ -4,11 +4,11 @@ import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import okhttp3.mockwebserver.RecordedRequest;
import okhttp3.mockwebserver.SocketPolicy;
import io.zipkin.Codec;
import io.zipkin.Span;
import java.util.List;
import org.junit.Rule;
import org.junit.Test;
import zipkin.Codec;
import zipkin.Span;
import static org.assertj.core.api.Assertions.assertThat;
@@ -59,7 +59,7 @@ public class HttpZipkinSpanReporterTest {
assertThat(request.getHeader("Content-Type")).isEqualTo("application/json");
// Now, let's read back the spans we sent!
List<io.zipkin.Span> zipkinSpans = Codec.JSON.readSpans(request.getBody().readByteArray());
List<Span> zipkinSpans = Codec.JSON.readSpans(request.getBody().readByteArray());
assertThat(zipkinSpans).containsExactly(
span(1L, "foo"),
span(2L, "bar")
@@ -91,6 +91,6 @@ public class HttpZipkinSpanReporterTest {
}
static Span span(long traceId, String spanName) {
return new io.zipkin.Span.Builder().traceId(traceId).id(traceId).name(spanName).build();
return new Span.Builder().traceId(traceId).id(traceId).name(spanName).build();
}
}

View File

@@ -80,7 +80,7 @@ public class ZipkinSpanListenerTests {
long start = System.currentTimeMillis();
parent.log("http/request/retry"); // System.currentTimeMillis
io.zipkin.Span result = listener.convert(parent);
zipkin.Span result = listener.convert(parent);
assertThat(result.timestamp)
.isEqualTo(parent.getBegin() * 1000);
@@ -97,7 +97,7 @@ public class ZipkinSpanListenerTests {
parent.log("http/request/retry");
parent.tag("spring-boot/version", "1.3.1.RELEASE");
io.zipkin.Span result = listener.convert(parent);
zipkin.Span result = listener.convert(parent);
assertThat(result.annotations.get(0).endpoint)
.isEqualTo(listener.localEndpoint);
@@ -146,7 +146,7 @@ public class ZipkinSpanListenerTests {
@Configuration
protected static class ZipkinTestConfiguration {
private List<io.zipkin.Span> spans = new ArrayList<>();
private List<zipkin.Span> spans = new ArrayList<>();
@Bean
public Sampler<?> defaultSampler() {