You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zipkin.apache.org by ad...@apache.org on 2019/05/10 00:19:01 UTC

[incubator-zipkin] branch scribe-polish created (now 82d6620)

This is an automated email from the ASF dual-hosted git repository.

adriancole pushed a change to branch scribe-polish
in repository https://gitbox.apache.org/repos/asf/incubator-zipkin.git.


      at 82d6620  Polishes scribe module

This branch includes the following new commits:

     new 82d6620  Polishes scribe module

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[incubator-zipkin] 01/01: Polishes scribe module

Posted by ad...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

adriancole pushed a commit to branch scribe-polish
in repository https://gitbox.apache.org/repos/asf/incubator-zipkin.git

commit 82d6620ce2624bbe833035d08d21feddf4630a0c
Author: Adrian Cole <ac...@pivotal.io>
AuthorDate: Fri May 10 08:16:47 2019 +0800

    Polishes scribe module
    
    This fixes the maven configuration of scribe resulting in a module jar
    less than half a meg. Besides reformatting files, it fixes a couple
    glitches: `Unknown channel option 'SO_BACKLOG'` in logs, and some areas
    where fatal errors weren't propagated (however unlikely).
    
    Tested under load with no errors or dropped messages.
---
 zipkin-autoconfigure/collector-scribe/README.md    |  5 +-
 zipkin-autoconfigure/collector-scribe/pom.xml      | 70 +++++-----------------
 ...ZipkinScribeCollectorAutoConfigurationTest.java | 54 +++++++----------
 .../collector/scribe/NettyScribeServer.java        | 15 +++--
 .../zipkin2/collector/scribe/ScribeCollector.java  | 21 +++----
 .../collector/scribe/ScribeInboundHandler.java     | 42 ++++++-------
 .../collector/scribe/ScribeSpanConsumer.java       | 25 ++++----
 .../collector/scribe/ITScribeCollector.java        |  9 +--
 .../collector/scribe/ScribeCollectorTest.java      | 11 ++--
 .../collector/scribe/ScribeSpanConsumerTest.java   | 64 +++++++++-----------
 10 files changed, 116 insertions(+), 200 deletions(-)

diff --git a/zipkin-autoconfigure/collector-scribe/README.md b/zipkin-autoconfigure/collector-scribe/README.md
index 982c882..5cb0ba9 100644
--- a/zipkin-autoconfigure/collector-scribe/README.md
+++ b/zipkin-autoconfigure/collector-scribe/README.md
@@ -2,9 +2,8 @@
 
 This module provides support for running the legacy Scribe collector as
 a component of Zipkin server. To activate this collector, reference the
-module jar when running the Zipkin server and configure one or more
-bootstrap brokers via the `SCRIBE_ENABLED=true` environment variable or
-the property `zipkin.collector.scribe.enabled=true`.
+module jar when running the Zipkin server set the `SCRIBE_ENABLED=true`
+environment variable or property `zipkin.collector.scribe.enabled=true`.
 
 ## Quick start
 
diff --git a/zipkin-autoconfigure/collector-scribe/pom.xml b/zipkin-autoconfigure/collector-scribe/pom.xml
index d0adc1b..9fa4967 100644
--- a/zipkin-autoconfigure/collector-scribe/pom.xml
+++ b/zipkin-autoconfigure/collector-scribe/pom.xml
@@ -17,7 +17,9 @@
     limitations under the License.
 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
@@ -38,15 +40,6 @@
       <groupId>${project.groupId}.zipkin2</groupId>
       <artifactId>zipkin-collector-scribe</artifactId>
       <version>${project.version}</version>
-      <exclusions>
-        <!-- com.facebook.swift:swift-service brings an old version which
-             leads to javax.validation.ValidationException. Exclude it!
-        -->
-        <exclusion>
-          <groupId>javax.validation</groupId>
-          <artifactId>validation-api</artifactId>
-        </exclusion>
-      </exclusions>
     </dependency>
   </dependencies>
 
@@ -61,22 +54,20 @@
             <name>zipkin</name>
           </layoutFactory>
           <classifier>module</classifier>
-          <!-- exclude dependencies already packaged in zipkin-server -->
-          <!-- https://github.com/spring-projects/spring-boot/issues/3426 transitive exclude doesn't work -->
-          <excludeGroupIds>
-            org.springframework.boot,org.springframework,org.slf4j,commons-logging,com.google.code.gson,com.google.guava
-          </excludeGroupIds>
-          <!-- excludes direct dependency instead of the group id, as otherwise we'd exclude ourselves -->
-          <excludes>
-            <exclude>
+          <includes>
+            <dependency>
               <groupId>${project.groupId}.zipkin2</groupId>
-              <artifactId>zipkin</artifactId>
-            </exclude>
-            <exclude>
-              <groupId>${project.groupId}.zipkin2</groupId>
-              <artifactId>zipkin-collector</artifactId>
-            </exclude>
-          </excludes>
+              <artifactId>zipkin-collector-scribe</artifactId>
+            </dependency>
+            <include>
+              <groupId>com.linecorp.armeria</groupId>
+              <artifactId>armeria-thrift</artifactId>
+            </include>
+            <include>
+              <groupId>org.apache.thrift</groupId>
+              <artifactId>libthrift</artifactId>
+            </include>
+          </includes>
         </configuration>
         <dependencies>
           <dependency>
@@ -88,33 +79,4 @@
       </plugin>
     </plugins>
   </build>
-
-  <profiles>
-    <profile>
-      <id>jigsaw</id>
-      <activation>
-        <jdk>[1.9,)</jdk>
-      </activation>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.rat</groupId>
-            <artifactId>apache-rat-plugin</artifactId>
-            <configuration>
-              <!-- we cannot use rat until RAT-239 is fixed, as it fails when forkCount=0 -->
-              <skip>true</skip>
-            </configuration>
-          </plugin>
-          <plugin>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <!-- to prevent class not found in tests -->
-            <configuration>
-              <forkCount>0</forkCount>
-              <argLine>--add-modules java.xml.bind</argLine>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
 </project>
diff --git a/zipkin-autoconfigure/collector-scribe/src/test/java/zipkin2/autoconfigure/collector/scribe/ZipkinScribeCollectorAutoConfigurationTest.java b/zipkin-autoconfigure/collector-scribe/src/test/java/zipkin2/autoconfigure/collector/scribe/ZipkinScribeCollectorAutoConfigurationTest.java
index bd99895..c8994d2 100644
--- a/zipkin-autoconfigure/collector-scribe/src/test/java/zipkin2/autoconfigure/collector/scribe/ZipkinScribeCollectorAutoConfigurationTest.java
+++ b/zipkin-autoconfigure/collector-scribe/src/test/java/zipkin2/autoconfigure/collector/scribe/ZipkinScribeCollectorAutoConfigurationTest.java
@@ -38,22 +38,17 @@ public class ZipkinScribeCollectorAutoConfigurationTest {
 
   @Rule public ExpectedException thrown = ExpectedException.none();
 
-  AnnotationConfigApplicationContext context;
+  AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
 
-  @After
-  public void close() {
-    if (context != null) {
-      context.close();
-    }
+  @After public void close() {
+    context.close();
   }
 
-  @Test
-  public void doesntProvidesCollectorComponent_byDefault() {
-    context = new AnnotationConfigApplicationContext();
+  @Test public void doesntProvidesCollectorComponent_byDefault() {
     context.register(
-        PropertyPlaceholderAutoConfiguration.class,
-        ZipkinScribeCollectorAutoConfiguration.class,
-        InMemoryConfiguration.class);
+      PropertyPlaceholderAutoConfiguration.class,
+      ZipkinScribeCollectorAutoConfiguration.class,
+      InMemoryConfiguration.class);
     context.refresh();
 
     thrown.expect(NoSuchBeanDefinitionException.class);
@@ -61,30 +56,26 @@ public class ZipkinScribeCollectorAutoConfigurationTest {
   }
 
   /** Note: this will flake if you happen to be running a server on port 9410! */
-  @Test
-  public void providesCollectorComponent_whenEnabled() {
-    context = new AnnotationConfigApplicationContext();
+  @Test public void providesCollectorComponent_whenEnabled() {
     TestPropertyValues.of("zipkin.collector.scribe.enabled:true").applyTo(context);
     context.register(
-        PropertyPlaceholderAutoConfiguration.class,
-        ZipkinScribeCollectorAutoConfiguration.class,
-        InMemoryConfiguration.class);
+      PropertyPlaceholderAutoConfiguration.class,
+      ZipkinScribeCollectorAutoConfiguration.class,
+      InMemoryConfiguration.class);
     context.refresh();
 
     assertThat(context.getBean(ScribeCollector.class)).isNotNull();
   }
 
-  @Test
-  public void canOverrideProperty_port() {
-    context = new AnnotationConfigApplicationContext();
+  @Test public void canOverrideProperty_port() {
     TestPropertyValues.of(
-        "zipkin.collector.scribe.enabled:true",
-        "zipkin.collector.scribe.port:9999")
-    .applyTo(context);
+      "zipkin.collector.scribe.enabled:true",
+      "zipkin.collector.scribe.port:9999")
+      .applyTo(context);
     context.register(
-        PropertyPlaceholderAutoConfiguration.class,
-        ZipkinScribeCollectorAutoConfiguration.class,
-        InMemoryConfiguration.class);
+      PropertyPlaceholderAutoConfiguration.class,
+      ZipkinScribeCollectorAutoConfiguration.class,
+      InMemoryConfiguration.class);
     context.refresh();
 
     assertThat(context.getBean(ZipkinScribeCollectorProperties.class).getPort()).isEqualTo(9999);
@@ -92,18 +83,15 @@ public class ZipkinScribeCollectorAutoConfigurationTest {
 
   @Configuration
   static class InMemoryConfiguration {
-    @Bean
-    CollectorSampler sampler() {
+    @Bean CollectorSampler sampler() {
       return CollectorSampler.ALWAYS_SAMPLE;
     }
 
-    @Bean
-    CollectorMetrics metrics() {
+    @Bean CollectorMetrics metrics() {
       return CollectorMetrics.NOOP_METRICS;
     }
 
-    @Bean
-    StorageComponent storage() {
+    @Bean StorageComponent storage() {
       return InMemoryStorage.newBuilder().build();
     }
   }
diff --git a/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/NettyScribeServer.java b/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/NettyScribeServer.java
index 009150e..5018be3 100644
--- a/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/NettyScribeServer.java
+++ b/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/NettyScribeServer.java
@@ -21,15 +21,16 @@ import com.linecorp.armeria.common.util.EventLoopGroups;
 import io.netty.bootstrap.ServerBootstrap;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelInitializer;
-import io.netty.channel.ChannelOption;
 import io.netty.channel.EventLoopGroup;
 import io.netty.channel.socket.SocketChannel;
 import java.net.InetSocketAddress;
 
-class NettyScribeServer {
+import static zipkin2.Call.propagateIfFatal;
 
-  private final int port;
-  private final ScribeSpanConsumer scribe;
+final class NettyScribeServer {
+
+  final int port;
+  final ScribeSpanConsumer scribe;
 
   volatile EventLoopGroup bossGroup;
   volatile Channel channel;
@@ -48,17 +49,15 @@ class NettyScribeServer {
       channel = b.group(bossGroup, workerGroup)
         .channel(EventLoopGroups.serverChannelType(bossGroup))
         .childHandler(new ChannelInitializer<SocketChannel>() {
-          @Override
-          protected void initChannel(SocketChannel ch) {
+          @Override protected void initChannel(SocketChannel ch) {
             ch.pipeline().addLast(new ScribeInboundHandler(scribe));
           }
         })
-        // Uses same value as the previously used swift library for consistency.
-        .childOption(ChannelOption.SO_BACKLOG, 1024)
         .bind(port)
         .syncUninterruptibly()
         .channel();
     } catch (Throwable t) {
+      propagateIfFatal(t);
       throw new RuntimeException("Could not start scribe server.", t);
     }
   }
diff --git a/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/ScribeCollector.java b/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/ScribeCollector.java
index 7d72bf3..abfffe1 100644
--- a/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/ScribeCollector.java
+++ b/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/ScribeCollector.java
@@ -42,22 +42,19 @@ public final class ScribeCollector extends CollectorComponent {
     String category = "zipkin";
     int port = 9410;
 
-    @Override
-    public Builder storage(StorageComponent storage) {
+    @Override public Builder storage(StorageComponent storage) {
       delegate.storage(storage);
       return this;
     }
 
-    @Override
-    public Builder metrics(CollectorMetrics metrics) {
+    @Override public Builder metrics(CollectorMetrics metrics) {
       if (metrics == null) throw new NullPointerException("metrics == null");
       this.metrics = metrics.forTransport("scribe");
       delegate.metrics(this.metrics);
       return this;
     }
 
-    @Override
-    public Builder sampler(CollectorSampler sampler) {
+    @Override public Builder sampler(CollectorSampler sampler) {
       delegate.sampler(sampler);
       return this;
     }
@@ -75,8 +72,7 @@ public final class ScribeCollector extends CollectorComponent {
       return this;
     }
 
-    @Override
-    public ScribeCollector build() {
+    @Override public ScribeCollector build() {
       return new ScribeCollector(this);
     }
   }
@@ -89,22 +85,19 @@ public final class ScribeCollector extends CollectorComponent {
   }
 
   /** Will throw an exception if the {@link Builder#port(int) port} is already in use. */
-  @Override
-  public ScribeCollector start() {
+  @Override public ScribeCollector start() {
     server.start();
     return this;
   }
 
-  @Override
-  public CheckResult check() {
+  @Override public CheckResult check() {
     if (!server.isRunning()) {
       return CheckResult.failed(new IllegalStateException("server not running"));
     }
     return CheckResult.OK;
   }
 
-  @Override
-  public void close() {
+  @Override public void close() {
     server.close();
   }
 }
diff --git a/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/ScribeInboundHandler.java b/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/ScribeInboundHandler.java
index 465809b..ef11a63 100644
--- a/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/ScribeInboundHandler.java
+++ b/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/ScribeInboundHandler.java
@@ -42,7 +42,9 @@ import java.util.Map;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-class ScribeInboundHandler extends ChannelInboundHandlerAdapter {
+import static zipkin2.Call.propagateIfFatal;
+
+final class ScribeInboundHandler extends ChannelInboundHandlerAdapter {
 
   static final Logger logger = LoggerFactory.getLogger(ScribeInboundHandler.class);
 
@@ -73,18 +75,13 @@ class ScribeInboundHandler extends ChannelInboundHandlerAdapter {
   int nextResponseIndex = 0;
   int previouslySentResponseIndex = -1;
 
-  @Override
-  public void channelActive(ChannelHandlerContext ctx) throws Exception {
+  @Override public void channelActive(ChannelHandlerContext ctx) {
     pending = ctx.alloc().compositeBuffer();
     state = ReadState.HEADER;
   }
 
-  @Override
-  public void channelRead(final ChannelHandlerContext ctx, Object msg) {
-    if (pending == null) {
-      // Already closed (probably due to an exception).
-      return;
-    }
+  @Override public void channelRead(final ChannelHandlerContext ctx, Object msg) {
+    if (pending == null) return; // Already closed (probably due to an exception).
 
     assert msg instanceof ByteBuf;
     ByteBuf buf = (ByteBuf) msg;
@@ -100,13 +97,11 @@ class ScribeInboundHandler extends ChannelInboundHandlerAdapter {
     }
   }
 
-  @Override
-  public void channelInactive(ChannelHandlerContext ctx) {
+  @Override public void channelInactive(ChannelHandlerContext ctx) {
     release();
   }
 
-  @Override
-  public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
+  @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
     Exceptions.logIfUnexpected(logger, ctx.channel(), cause);
 
     release();
@@ -114,18 +109,15 @@ class ScribeInboundHandler extends ChannelInboundHandlerAdapter {
   }
 
   void maybeReadHeader(ChannelHandlerContext ctx) {
-    if (pending.readableBytes() < 4) {
-      return;
-    }
+    if (pending.readableBytes() < 4) return;
+
     nextFrameSize = pending.readInt();
     state = ReadState.PAYLOAD;
     maybeReadPayload(ctx);
   }
 
   void maybeReadPayload(ChannelHandlerContext ctx) {
-    if (pending.readableBytes() < nextFrameSize) {
-      return;
-    }
+    if (pending.readableBytes() < nextFrameSize) return;
 
     ByteBuf payload = ctx.alloc().buffer(nextFrameSize);
     pending.readBytes(payload, nextFrameSize);
@@ -133,9 +125,8 @@ class ScribeInboundHandler extends ChannelInboundHandlerAdapter {
 
     state = ReadState.HEADER;
 
-    HttpRequest request = HttpRequest.of(
-      THRIFT_HEADERS.toMutable(),
-      new ByteBufHttpData(payload, true));
+    HttpRequest request =
+      HttpRequest.of(THRIFT_HEADERS.toMutable(), new ByteBufHttpData(payload, true));
     ServiceRequestContextBuilder requestContextBuilder = ServiceRequestContextBuilder.of(request)
       .service(scribeService)
       .alloc(ctx.alloc());
@@ -147,10 +138,11 @@ class ScribeInboundHandler extends ChannelInboundHandlerAdapter {
     ServiceRequestContext requestContext = requestContextBuilder.build();
 
     final HttpResponse response;
-    try (SafeCloseable unused = requestContext.push()){
+    try (SafeCloseable unused = requestContext.push()) {
       response = scribeService.serve(requestContext, request);
-    } catch (Exception e) {
-      exceptionCaught(ctx, e);
+    } catch (Throwable t) {
+      propagateIfFatal(t);
+      exceptionCaught(ctx, t);
       return;
     }
 
diff --git a/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/ScribeSpanConsumer.java b/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/ScribeSpanConsumer.java
index 35ea7dc..e043be9 100644
--- a/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/ScribeSpanConsumer.java
+++ b/zipkin-collector/scribe/src/main/java/zipkin2/collector/scribe/ScribeSpanConsumer.java
@@ -29,9 +29,8 @@ import zipkin2.collector.CollectorMetrics;
 import zipkin2.collector.scribe.generated.LogEntry;
 import zipkin2.collector.scribe.generated.ResultCode;
 import zipkin2.collector.scribe.generated.Scribe;
-import zipkin2.internal.Nullable;
 
-class ScribeSpanConsumer implements Scribe.AsyncIface {
+final class ScribeSpanConsumer implements Scribe.AsyncIface {
   final Collector collector;
   final CollectorMetrics metrics;
   final String category;
@@ -63,19 +62,15 @@ class ScribeSpanConsumer implements Scribe.AsyncIface {
       metrics.incrementBytes(byteCount);
     }
 
-    collector.accept(
-      spans,
-      new Callback<Void>() {
-        @Override
-        public void onSuccess(@Nullable Void value) {
-          resultHandler.onComplete(ResultCode.OK);
-        }
+    collector.accept(spans, new Callback<Void>() {
+      @Override public void onSuccess(Void value) {
+        resultHandler.onComplete(ResultCode.OK);
+      }
 
-        @Override
-        public void onError(Throwable t) {
-          Exception error = t instanceof Exception ? (Exception) t : new RuntimeException(t);
-          resultHandler.onError(error);
-        }
-      });
+      @Override public void onError(Throwable t) {
+        Exception error = t instanceof Exception ? (Exception) t : new RuntimeException(t);
+        resultHandler.onError(error);
+      }
+    });
   }
 }
diff --git a/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ITScribeCollector.java b/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ITScribeCollector.java
index 8274cc1..939219f 100644
--- a/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ITScribeCollector.java
+++ b/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ITScribeCollector.java
@@ -53,8 +53,7 @@ public class ITScribeCollector {
 
   private static NettyScribeServer server;
 
-  @BeforeClass
-  public static void startServer() {
+  @BeforeClass public static void startServer() {
     collector = mock(Collector.class);
     doAnswer(invocation -> {
       Callback<Void> callback = invocation.getArgument(1);
@@ -68,13 +67,11 @@ public class ITScribeCollector {
     server.start();
   }
 
-  @AfterClass
-  public static void stopServer() {
+  @AfterClass public static void stopServer() {
     server.close();
   }
 
-  @Test
-  public void normal() throws Exception {
+  @Test public void normal() throws Exception {
     // Java version of this sample code
     // https://github.com/facebookarchive/scribe/wiki/Logging-Messages
     TTransport transport = new TFramedTransport(new TSocket("localhost", server.port()));
diff --git a/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ScribeCollectorTest.java b/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ScribeCollectorTest.java
index ca53997..a725b2f 100644
--- a/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ScribeCollectorTest.java
+++ b/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ScribeCollectorTest.java
@@ -28,10 +28,9 @@ public class ScribeCollectorTest {
   InMemoryStorage storage = InMemoryStorage.newBuilder().build();
   @Rule public ExpectedException thrown = ExpectedException.none();
 
-  @Test
-  public void check_failsWhenNotStarted() {
+  @Test public void check_failsWhenNotStarted() {
     try (ScribeCollector scribe =
-        ScribeCollector.newBuilder().storage(storage).port(12345).build()) {
+           ScribeCollector.newBuilder().storage(storage).port(12345).build()) {
 
       CheckResult result = scribe.check();
       assertThat(result.ok()).isFalse();
@@ -42,15 +41,15 @@ public class ScribeCollectorTest {
     }
   }
 
-  @Test
-  public void start_failsWhenCantBindPort() {
+  @Test public void start_failsWhenCantBindPort() {
     thrown.expect(RuntimeException.class);
     thrown.expectMessage("Could not start scribe server.");
 
     ScribeCollector.Builder builder = ScribeCollector.newBuilder().storage(storage).port(12345);
 
     try (ScribeCollector first = builder.build().start()) {
-      try (ScribeCollector samePort = builder.build().start()) {}
+      try (ScribeCollector samePort = builder.build().start()) {
+      }
     }
   }
 }
diff --git a/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ScribeSpanConsumerTest.java b/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ScribeSpanConsumerTest.java
index fdea0bc..fb00c05 100644
--- a/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ScribeSpanConsumerTest.java
+++ b/zipkin-collector/scribe/src/test/java/zipkin2/collector/scribe/ScribeSpanConsumerTest.java
@@ -70,34 +70,32 @@ public class ScribeSpanConsumerTest {
   }
 
   Endpoint zipkinQuery =
-      Endpoint.newBuilder().serviceName("zipkin-query").ip("127.0.0.1").port(9411).build();
+    Endpoint.newBuilder().serviceName("zipkin-query").ip("127.0.0.1").port(9411).build();
   Endpoint zipkinQuery0 = zipkinQuery.toBuilder().port(null).build();
 
-  V1Span v1 =
-      V1Span.newBuilder()
-          .traceId(-6054243957716233329L)
-          .name("getTracesByIds")
-          .id(-3615651937927048332L)
-          .parentId(-6054243957716233329L)
-          .addAnnotation(1442493420635000L, "sr", zipkinQuery)
-          .addAnnotation(1442493420747000L, reallyLongAnnotation, zipkinQuery)
-          .addAnnotation(
-              1442493422583586L,
-              "Gc(9,0.PSScavenge,2015-09-17 12:37:02 +0000,304.milliseconds+762.microseconds)",
-              zipkinQuery)
-          .addAnnotation(1442493422680000L, "ss", zipkinQuery)
-          .addBinaryAnnotation("srv/finagle.version", "6.28.0", zipkinQuery0)
-          .addBinaryAnnotation("sa", zipkinQuery)
-          .addBinaryAnnotation("ca", zipkinQuery.toBuilder().port(63840).build())
-          .debug(false)
-          .build();
+  V1Span v1 = V1Span.newBuilder()
+    .traceId(-6054243957716233329L)
+    .name("getTracesByIds")
+    .id(-3615651937927048332L)
+    .parentId(-6054243957716233329L)
+    .addAnnotation(1442493420635000L, "sr", zipkinQuery)
+    .addAnnotation(1442493420747000L, reallyLongAnnotation, zipkinQuery)
+    .addAnnotation(
+      1442493422583586L,
+      "Gc(9,0.PSScavenge,2015-09-17 12:37:02 +0000,304.milliseconds+762.microseconds)",
+      zipkinQuery)
+    .addAnnotation(1442493422680000L, "ss", zipkinQuery)
+    .addBinaryAnnotation("srv/finagle.version", "6.28.0", zipkinQuery0)
+    .addBinaryAnnotation("sa", zipkinQuery)
+    .addBinaryAnnotation("ca", zipkinQuery.toBuilder().port(63840).build())
+    .debug(false)
+    .build();
 
   Span v2 = V1SpanConverter.create().convert(v1).get(0);
   byte[] bytes = SpanBytesEncoder.THRIFT.encode(v2);
   String encodedSpan = new String(Base64.getEncoder().encode(bytes), UTF_8);
 
-  @Test
-  public void entriesWithSpansAreConsumed() throws Exception {
+  @Test public void entriesWithSpansAreConsumed() {
     ScribeSpanConsumer scribe = newScribeSpanConsumer("zipkin", consumer);
 
     LogEntry entry = new LogEntry();
@@ -115,8 +113,7 @@ public class ScribeSpanConsumerTest {
     assertThat(scribeMetrics.spansDropped()).isZero();
   }
 
-  @Test
-  public void entriesWithoutSpansAreSkipped() throws Exception {
+  @Test public void entriesWithoutSpansAreSkipped() {
     SpanConsumer consumer = (callback) -> {
       throw new AssertionError(); // as we shouldn't get here.
     };
@@ -142,8 +139,7 @@ public class ScribeSpanConsumerTest {
     assertThat(callback.resultCode).isEqualTo(ResultCode.OK);
   }
 
-  @Test
-  public void malformedDataIsDropped() throws Exception {
+  @Test public void malformedDataIsDropped() {
     ScribeSpanConsumer scribe = newScribeSpanConsumer("zipkin", consumer);
 
     LogEntry entry = new LogEntry();
@@ -161,8 +157,7 @@ public class ScribeSpanConsumerTest {
     assertThat(scribeMetrics.spansDropped()).isZero();
   }
 
-  @Test
-  public void consumerExceptionBeforeCallbackSetsFutureException() throws Exception {
+  @Test public void consumerExceptionBeforeCallbackSetsFutureException() {
     consumer = (input) -> {
       throw new NullPointerException("endpoint was null");
     };
@@ -188,8 +183,7 @@ public class ScribeSpanConsumerTest {
    * Callbacks are performed asynchronously. If they throw, it hints that we are chaining futures
    * when we shouldn't
    */
-  @Test
-  public void callbackExceptionDoesntThrow() throws Exception {
+  @Test public void callbackExceptionDoesntThrow() {
     consumer = (input) -> new Call.Base<Void>() {
       @Override protected Void doExecute() {
         throw new AssertionError();
@@ -199,8 +193,7 @@ public class ScribeSpanConsumerTest {
         callback.onError(new NullPointerException());
       }
 
-      @Override
-      public Call<Void> clone() {
+      @Override public Call<Void> clone() {
         throw new AssertionError();
       }
     };
@@ -221,13 +214,12 @@ public class ScribeSpanConsumerTest {
   }
 
   /** Finagle's zipkin tracer breaks on a column width with a trailing newline */
-  @Test
-  public void decodesSpanGeneratedByFinagle() throws Exception {
+  @Test public void decodesSpanGeneratedByFinagle() throws Exception {
     LogEntry entry = new LogEntry();
     entry.category = "zipkin";
-    entry.message =
-        "CgABq/sBMnzE048LAAMAAAAOZ2V0VHJhY2VzQnlJZHMKAATN0p+4EGfTdAoABav7ATJ8xNOPDwAGDAAAAAQKAAEABR/wq+2DeAsAAgAAAAJzcgwAAwgAAX8AAAEGAAIkwwsAAwAAAAx6aXBraW4tcXVlcnkAAAoAAQAFH/Cr7zj4CwACAAAIAGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF [...]
-            + "YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhY [...]
+    entry.message = ""
+      + "CgABq/sBMnzE048LAAMAAAAOZ2V0VHJhY2VzQnlJZHMKAATN0p+4EGfTdAoABav7ATJ8xNOPDwAGDAAAAAQKAAEABR/wq+2DeAsAAgAAAAJzcgwAAwgAAX8AAAEGAAIkwwsAAwAAAAx6aXBraW4tcXVlcnkAAAoAAQAFH/Cr7zj4CwACAAAIAGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF [...]
+      + "YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF [...]
 
     ScribeSpanConsumer scribe = newScribeSpanConsumer(entry.category, consumer);