From 52065a5be08d4d6f44f5f293efd54c8e9aab32fa Mon Sep 17 00:00:00 2001 From: forozco Date: Thu, 29 Aug 2019 12:57:52 +0100 Subject: [PATCH 01/24] tracing demo project --- settings.gradle | 7 +- tracing-demos/build.gradle | 7 ++ .../com/palantir/tracing/TracingDemos.java | 90 +++++++++++++++++++ 3 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 tracing-demos/build.gradle create mode 100644 tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java diff --git a/settings.gradle b/settings.gradle index 9f169c2c2..8640fb1b2 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,10 +2,11 @@ rootProject.name = 'tracing-java' include 'tracing' include 'tracing-api' +include 'tracing-benchmarks' +include 'tracing-demos' include 'tracing-jaxrs' -include 'tracing-okhttp3' include 'tracing-jersey' +include 'tracing-okhttp3' include 'tracing-servlet' -include 'tracing-undertow' -include 'tracing-benchmarks' include 'tracing-test-utils' +include 'tracing-undertow' diff --git a/tracing-demos/build.gradle b/tracing-demos/build.gradle new file mode 100644 index 000000000..5ad8a08f8 --- /dev/null +++ b/tracing-demos/build.gradle @@ -0,0 +1,7 @@ +dependencies { + testImplementation project(":tracing") + testImplementation project(":tracing-test-utils") + testCompileOnly "org.immutables:value::annotations" + testImplementation 'org.assertj:assertj-core' + testImplementation 'org.junit.jupiter:junit-jupiter' +} diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java new file mode 100644 index 000000000..3623d1d4f --- /dev/null +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -0,0 +1,90 @@ +/* + * (c) Copyright 2019 Palantir Technologies Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.palantir.tracing; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.google.common.util.concurrent.SettableFuture; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.stream.IntStream; +import org.junit.jupiter.api.Test; + +class TracingDemos { + + @Test + @TestTracing(snapshot = true, layout = LayoutStrategy.SPLIT_BY_TRACE) + @SuppressWarnings("FutureReturnValueIgnored") + void handles_async_spans() throws Exception { + int numThreads = 2; + int numTasks = 4; + int taskDurationMillis = 1000; + int expectedDurationMillis = numTasks * taskDurationMillis / numThreads; + + ExecutorService executorService = Executors.newFixedThreadPool(numThreads); + CountDownLatch countDownLatch = new CountDownLatch(numTasks); + + try (CloseableTracer root = CloseableTracer.startSpan("root")) { + IntStream.range(0, numTasks).forEach(i -> { + // DetachedSpan detachedSpan = DetachedSpan.start("task-queue-time" + i); + + executorService.submit(() -> { + // detachedSpan.close(); + try { + emit_nested_spans(); + countDownLatch.countDown(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }); + }); + } + + assertThat(countDownLatch.await(expectedDurationMillis + 1000, TimeUnit.MILLISECONDS)).isTrue(); + } + + @Test + void async_future() { + int numThreads = 2; + ExecutorService executorService = Executors.newFixedThreadPool(numThreads); + final SettableFuture objectSettableFuture = SettableFuture.create(); + + try (CloseableTracer root = CloseableTracer.startSpan("root")) { + // DetachedSpan listener = DetachedSpan.start("listener"); + objectSettableFuture.addListener(() -> { + + }), executorService; + } + } + + private static void emit_nested_spans() throws InterruptedException { + try (CloseableTracer root = CloseableTracer.startSpan("root")) { + try (CloseableTracer first = CloseableTracer.startSpan("first")) { + Thread.sleep(100); + try (CloseableTracer nested = CloseableTracer.startSpan("nested")) { + Thread.sleep(90); + } + Thread.sleep(10); + } + try (CloseableTracer second = CloseableTracer.startSpan("second")) { + Thread.sleep(100); + } + } + } +} From ae4edb9bbb4b5d4de8d9f38481848e4d186b86e3 Mon Sep 17 00:00:00 2001 From: Dan Fox Date: Thu, 29 Aug 2019 13:18:27 +0100 Subject: [PATCH 02/24] Scheduling backoffs --- .../com/palantir/tracing/TracingDemos.java | 71 +++++++++++++++---- .../backoffs_on_a_scheduled_executor.log | 9 +++ 2 files changed, 67 insertions(+), 13 deletions(-) create mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index 3623d1d4f..2637d2172 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -18,10 +18,12 @@ import static org.assertj.core.api.Assertions.assertThat; +import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.stream.IntStream; import org.junit.jupiter.api.Test; @@ -46,12 +48,8 @@ void handles_async_spans() throws Exception { executorService.submit(() -> { // detachedSpan.close(); - try { - emit_nested_spans(); - countDownLatch.countDown(); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } + emit_nested_spans(); + countDownLatch.countDown(); }); }); } @@ -67,23 +65,70 @@ void async_future() { try (CloseableTracer root = CloseableTracer.startSpan("root")) { // DetachedSpan listener = DetachedSpan.start("listener"); - objectSettableFuture.addListener(() -> { + // objectSettableFuture.addListener(() -> { + // + // }), executorService; + } + } + + @Test + @TestTracing(snapshot = true, layout = LayoutStrategy.SPLIT_BY_TRACE) + void backoffs_on_a_scheduled_executor() throws InterruptedException { + ScheduledExecutorService executor = Tracers.wrap(Executors.newScheduledThreadPool(2)); + CountDownLatch latch = new CountDownLatch(1); + + try (CloseableTracer t = CloseableTracer.startSpan("some-request")) { + executor.execute(() -> { + // first attempt at a network call + sleep(100, "first attempt"); + + executor.schedule(() -> { + // attempt number 2 + sleep(100, "second attempt"); + + executor.schedule(() -> { + // attempt number 3 + sleep(100, "final attempt"); + + latch.countDown(); + }, 100, TimeUnit.MILLISECONDS); + + sleep(200, "second tidying"); + }, 100, TimeUnit.MILLISECONDS); - }), executorService; + sleep(200, "first tidying"); + + }); + + assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); } + + MoreExecutors.shutdownAndAwaitTermination(executor, 1, TimeUnit.SECONDS); + } + + private static void sleep(int i, String operation) { + try (CloseableTracer t = CloseableTracer.startSpan(operation)) { + Thread.sleep(i); + } catch (InterruptedException e) { + throw new RuntimeException("dont care", e); + } + } + + private static void sleep(int i) { + sleep(i, "sleep " + i); } - private static void emit_nested_spans() throws InterruptedException { + private static void emit_nested_spans() { try (CloseableTracer root = CloseableTracer.startSpan("root")) { try (CloseableTracer first = CloseableTracer.startSpan("first")) { - Thread.sleep(100); + sleep(100); try (CloseableTracer nested = CloseableTracer.startSpan("nested")) { - Thread.sleep(90); + sleep(90); } - Thread.sleep(10); + sleep(10); } try (CloseableTracer second = CloseableTracer.startSpan("second")) { - Thread.sleep(100); + sleep(100); } } } diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log new file mode 100644 index 000000000..e4d23d3f0 --- /dev/null +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log @@ -0,0 +1,9 @@ +{"traceId":"0875499283a0b645","parentSpanId":"f57bff76dda9bccd","spanId":"1f9685688afb892b","operation":"first attempt","startTimeMicroSeconds":1567081023561883,"durationNanoSeconds":107114618,"metadata":{}} +{"traceId":"0875499283a0b645","parentSpanId":"f57bff76dda9bccd","spanId":"d28d4828a150e70b","operation":"first tidying","startTimeMicroSeconds":1567081023676041,"durationNanoSeconds":200386672,"metadata":{}} +{"traceId":"0875499283a0b645","parentSpanId":"8fddcb256eeeb15a","spanId":"f57bff76dda9bccd","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567081023561824,"durationNanoSeconds":314967929,"metadata":{}} +{"traceId":"0875499283a0b645","parentSpanId":"df0540811612a1b2","spanId":"4ad94d822f100358","operation":"second attempt","startTimeMicroSeconds":1567081023777701,"durationNanoSeconds":100733508,"metadata":{}} +{"traceId":"0875499283a0b645","parentSpanId":"f65d492c10c83ecd","spanId":"2bbf7eb3b51093e2","operation":"final attempt","startTimeMicroSeconds":1567081023983056,"durationNanoSeconds":100766995,"metadata":{}} +{"traceId":"0875499283a0b645","parentSpanId":"df0540811612a1b2","spanId":"beadbcad1c24eebe","operation":"second tidying","startTimeMicroSeconds":1567081023879549,"durationNanoSeconds":204268808,"metadata":{}} +{"traceId":"0875499283a0b645","parentSpanId":"f57bff76dda9bccd","spanId":"df0540811612a1b2","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567081023777644,"durationNanoSeconds":306243186,"metadata":{}} +{"traceId":"0875499283a0b645","parentSpanId":"df0540811612a1b2","spanId":"f65d492c10c83ecd","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567081023983012,"durationNanoSeconds":100901662,"metadata":{}} +{"traceId":"0875499283a0b645","parentSpanId":null,"spanId":"8fddcb256eeeb15a","operation":"some-request","startTimeMicroSeconds":1567081023513315,"durationNanoSeconds":635798768,"metadata":{}} From ce2a390a66461cde20cb6b750a040c86849892bc Mon Sep 17 00:00:00 2001 From: forozco Date: Thu, 29 Aug 2019 14:10:38 +0100 Subject: [PATCH 03/24] more tests --- .../com/palantir/tracing/TracingDemos.java | 71 ++++++++++++++++--- .../tracing/TracingDemos/async_future.log | 21 ++++++ .../TracingDemos/handles_async_spans.log | 33 +++++++++ 3 files changed, 116 insertions(+), 9 deletions(-) create mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log create mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index 2637d2172..6dfd09fe7 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -18,14 +18,19 @@ import static org.assertj.core.api.Assertions.assertThat; +import com.google.common.util.concurrent.FutureCallback; +import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.PriorityBlockingQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.stream.IntStream; +import org.checkerframework.checker.nullness.qual.Nullable; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; class TracingDemos { @@ -45,7 +50,6 @@ void handles_async_spans() throws Exception { try (CloseableTracer root = CloseableTracer.startSpan("root")) { IntStream.range(0, numTasks).forEach(i -> { // DetachedSpan detachedSpan = DetachedSpan.start("task-queue-time" + i); - executorService.submit(() -> { // detachedSpan.close(); emit_nested_spans(); @@ -58,16 +62,66 @@ void handles_async_spans() throws Exception { } @Test - void async_future() { + @TestTracing(snapshot = true, layout = LayoutStrategy.SPLIT_BY_TRACE) + void async_future() throws InterruptedException { int numThreads = 2; - ExecutorService executorService = Executors.newFixedThreadPool(numThreads); + int numCallbacks = 10; + ExecutorService executorService = Tracers.wrap(Executors.newFixedThreadPool(numThreads)); final SettableFuture objectSettableFuture = SettableFuture.create(); + CountDownLatch latch = new CountDownLatch(numCallbacks); - try (CloseableTracer root = CloseableTracer.startSpan("root")) { - // DetachedSpan listener = DetachedSpan.start("listener"); - // objectSettableFuture.addListener(() -> { - // - // }), executorService; + IntStream.range(0, numCallbacks).forEach(i -> + Futures.addCallback(objectSettableFuture, new FutureCallback() { + @Override + public void onSuccess(@Nullable Object result) { + sleep(10, "success" + i); + latch.countDown(); + } + @Override + public void onFailure(Throwable t) { + Assertions.fail(); + } + }, executorService)); + + executorService.submit(() -> { + try (CloseableTracer root = CloseableTracer.startSpan("root")) { + objectSettableFuture.set(null); + } + }); + + assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); + } + + @Test + // Unable to snapshot since the output trace is unstable + @TestTracing(layout = LayoutStrategy.SPLIT_BY_TRACE) + void multi_producer_single_consumer() throws InterruptedException { + int numProducers = 2; + int numElem = 20; + PriorityBlockingQueue work = new PriorityBlockingQueue<>(); + + CountDownLatch latch = new CountDownLatch(numElem); + ExecutorService producerExecutorService = Tracers.wrap(Executors.newFixedThreadPool(numProducers)); + ExecutorService consumerExecutorService = Tracers.wrap(Executors.newFixedThreadPool(1)); + + try (CloseableTracer submit = CloseableTracer.startSpan("submit")) { + IntStream.range(0, numElem).forEach(i -> { + producerExecutorService.submit(() -> { + try (CloseableTracer closeableTracer = CloseableTracer.startSpan("submit-work" + i)) { + work.add("work" + i); + } + }); + }); + + consumerExecutorService.submit(() -> { + for (int i = 0; i < numElem; i++) { + String poll = work.take(); + sleep(10, "processing" + poll); + latch.countDown(); + } + return null; + }); + assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); } } @@ -97,7 +151,6 @@ void backoffs_on_a_scheduled_executor() throws InterruptedException { }, 100, TimeUnit.MILLISECONDS); sleep(200, "first tidying"); - }); assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log new file mode 100644 index 000000000..40a874b11 --- /dev/null +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log @@ -0,0 +1,21 @@ +{"traceId":"d545f2dc62c95370","parentSpanId":null,"spanId":"d4a82ce1d0b7c9ae","operation":"root","startTimeMicroSeconds":1567084000551052,"durationNanoSeconds":2219562,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"bfa5123d9dec003d","spanId":"612ecc8ad2651fb9","operation":"success0","startTimeMicroSeconds":1567084000556032,"durationNanoSeconds":10312056,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"bfa5123d9dec003d","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000553307,"durationNanoSeconds":13120623,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"82f85707b579ee10","spanId":"4bd643bc0d4f43df","operation":"success1","startTimeMicroSeconds":1567084000556055,"durationNanoSeconds":10419937,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"82f85707b579ee10","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000553348,"durationNanoSeconds":13164323,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"fa9e58518f8d03ba","spanId":"718296e9bcb7d5e1","operation":"success3","startTimeMicroSeconds":1567084000566586,"durationNanoSeconds":10475697,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"fa9e58518f8d03ba","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000566571,"durationNanoSeconds":10537431,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"9df0e0c69b32826a","spanId":"9721c786259e9dfd","operation":"success2","startTimeMicroSeconds":1567084000566535,"durationNanoSeconds":12526663,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"9df0e0c69b32826a","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000566511,"durationNanoSeconds":12578626,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"54594d5512d0335a","spanId":"0f973e825b762b9d","operation":"success4","startTimeMicroSeconds":1567084000577193,"durationNanoSeconds":10065016,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"54594d5512d0335a","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000577174,"durationNanoSeconds":10174865,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"d2c91d4295678b11","spanId":"9dc056e98c0fc872","operation":"success5","startTimeMicroSeconds":1567084000579178,"durationNanoSeconds":11540281,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"d2c91d4295678b11","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000579161,"durationNanoSeconds":11778650,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"7d5172fa27973008","spanId":"156332e8dfadd9f0","operation":"success6","startTimeMicroSeconds":1567084000587452,"durationNanoSeconds":10290319,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"7d5172fa27973008","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000587427,"durationNanoSeconds":10524029,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"2d417ddbd2e5b677","spanId":"b880d5f769ebac62","operation":"success7","startTimeMicroSeconds":1567084000591093,"durationNanoSeconds":12594213,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"2d417ddbd2e5b677","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000591052,"durationNanoSeconds":12689004,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"2b64b3cd71712bd5","spanId":"08f475a3c82ee0a9","operation":"success8","startTimeMicroSeconds":1567084000598208,"durationNanoSeconds":10162597,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"2b64b3cd71712bd5","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000598152,"durationNanoSeconds":10274988,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"985136e997c47f05","spanId":"3747cdce17335bea","operation":"success9","startTimeMicroSeconds":1567084000603883,"durationNanoSeconds":10218861,"metadata":{}} +{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"985136e997c47f05","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000603855,"durationNanoSeconds":10489810,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log new file mode 100644 index 000000000..d973d9a0a --- /dev/null +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log @@ -0,0 +1,33 @@ +{"traceId":"6df3ba56f991bd3c","parentSpanId":null,"spanId":"1e408d974e9a34e1","operation":"root","startTimeMicroSeconds":1567083998623608,"durationNanoSeconds":7281920,"metadata":{}} +{"traceId":"e83bc82b26726b87","parentSpanId":"b3794ecadedaf8fe","spanId":"7251b66c6e772329","operation":"sleep 100","startTimeMicroSeconds":1567083998626931,"durationNanoSeconds":100483960,"metadata":{}} +{"traceId":"a3decc2e97b3e403","parentSpanId":"b5ef64121d5f4bc7","spanId":"712cee1c0af620aa","operation":"sleep 100","startTimeMicroSeconds":1567083998626934,"durationNanoSeconds":100481955,"metadata":{}} +{"traceId":"e83bc82b26726b87","parentSpanId":"7d233f880db57a8c","spanId":"b97182bcdcf41b76","operation":"sleep 90","startTimeMicroSeconds":1567083998727620,"durationNanoSeconds":91496591,"metadata":{}} +{"traceId":"e83bc82b26726b87","parentSpanId":"b3794ecadedaf8fe","spanId":"7d233f880db57a8c","operation":"nested","startTimeMicroSeconds":1567083998727604,"durationNanoSeconds":91543922,"metadata":{}} +{"traceId":"a3decc2e97b3e403","parentSpanId":"cb641e2f9c610f10","spanId":"07d16fdd11cb1810","operation":"sleep 90","startTimeMicroSeconds":1567083998727629,"durationNanoSeconds":91758772,"metadata":{}} +{"traceId":"a3decc2e97b3e403","parentSpanId":"b5ef64121d5f4bc7","spanId":"cb641e2f9c610f10","operation":"nested","startTimeMicroSeconds":1567083998727616,"durationNanoSeconds":91793342,"metadata":{}} +{"traceId":"e83bc82b26726b87","parentSpanId":"b3794ecadedaf8fe","spanId":"72c00d665bf201ed","operation":"sleep 10","startTimeMicroSeconds":1567083998819176,"durationNanoSeconds":10291356,"metadata":{}} +{"traceId":"e83bc82b26726b87","parentSpanId":"f1387dc28ad337e5","spanId":"b3794ecadedaf8fe","operation":"first","startTimeMicroSeconds":1567083998626893,"durationNanoSeconds":202610302,"metadata":{}} +{"traceId":"a3decc2e97b3e403","parentSpanId":"b5ef64121d5f4bc7","spanId":"97b23e77a2df4262","operation":"sleep 10","startTimeMicroSeconds":1567083998819430,"durationNanoSeconds":10274735,"metadata":{}} +{"traceId":"a3decc2e97b3e403","parentSpanId":"c7791b4bedc339b2","spanId":"b5ef64121d5f4bc7","operation":"first","startTimeMicroSeconds":1567083998626894,"durationNanoSeconds":202834336,"metadata":{}} +{"traceId":"e83bc82b26726b87","parentSpanId":"b29d8d2f3dea9a66","spanId":"fc6f175a63f6fe49","operation":"sleep 100","startTimeMicroSeconds":1567083998829549,"durationNanoSeconds":101378312,"metadata":{}} +{"traceId":"a3decc2e97b3e403","parentSpanId":"1f119ea8e7d2517d","spanId":"d5c7b4e7231fabf8","operation":"sleep 100","startTimeMicroSeconds":1567083998829760,"durationNanoSeconds":101167544,"metadata":{}} +{"traceId":"e83bc82b26726b87","parentSpanId":"f1387dc28ad337e5","spanId":"b29d8d2f3dea9a66","operation":"second","startTimeMicroSeconds":1567083998829535,"durationNanoSeconds":101426029,"metadata":{}} +{"traceId":"a3decc2e97b3e403","parentSpanId":"c7791b4bedc339b2","spanId":"1f119ea8e7d2517d","operation":"second","startTimeMicroSeconds":1567083998829749,"durationNanoSeconds":101219782,"metadata":{}} +{"traceId":"e83bc82b26726b87","parentSpanId":null,"spanId":"f1387dc28ad337e5","operation":"root","startTimeMicroSeconds":1567083998626854,"durationNanoSeconds":304129572,"metadata":{}} +{"traceId":"a3decc2e97b3e403","parentSpanId":null,"spanId":"c7791b4bedc339b2","operation":"root","startTimeMicroSeconds":1567083998626878,"durationNanoSeconds":304113205,"metadata":{}} +{"traceId":"f3edabdc88434047","parentSpanId":"c7b11ea631102d7b","spanId":"128b4b2d4fdcb252","operation":"sleep 100","startTimeMicroSeconds":1567083998931344,"durationNanoSeconds":100466350,"metadata":{}} +{"traceId":"e0f23219a5aebc3a","parentSpanId":"1e358e05a94c5e17","spanId":"6440903138d7766f","operation":"sleep 100","startTimeMicroSeconds":1567083998931329,"durationNanoSeconds":104203779,"metadata":{}} +{"traceId":"f3edabdc88434047","parentSpanId":"bf4f2eb14d227e40","spanId":"efe0c95fbd6a46a5","operation":"sleep 90","startTimeMicroSeconds":1567083999031881,"durationNanoSeconds":93729812,"metadata":{}} +{"traceId":"f3edabdc88434047","parentSpanId":"c7b11ea631102d7b","spanId":"bf4f2eb14d227e40","operation":"nested","startTimeMicroSeconds":1567083999031865,"durationNanoSeconds":93776917,"metadata":{}} +{"traceId":"e0f23219a5aebc3a","parentSpanId":"073a80628f6c626f","spanId":"32c68d1223730037","operation":"sleep 90","startTimeMicroSeconds":1567083999035621,"durationNanoSeconds":90057860,"metadata":{}} +{"traceId":"e0f23219a5aebc3a","parentSpanId":"1e358e05a94c5e17","spanId":"073a80628f6c626f","operation":"nested","startTimeMicroSeconds":1567083999035603,"durationNanoSeconds":90091144,"metadata":{}} +{"traceId":"e0f23219a5aebc3a","parentSpanId":"1e358e05a94c5e17","spanId":"978e268ef2f2d4d6","operation":"sleep 10","startTimeMicroSeconds":1567083999125715,"durationNanoSeconds":10141892,"metadata":{}} +{"traceId":"e0f23219a5aebc3a","parentSpanId":"92d2cdaee0dd3b67","spanId":"1e358e05a94c5e17","operation":"first","startTimeMicroSeconds":1567083998931321,"durationNanoSeconds":204570793,"metadata":{}} +{"traceId":"f3edabdc88434047","parentSpanId":"c7b11ea631102d7b","spanId":"cc10d810db370d79","operation":"sleep 10","startTimeMicroSeconds":1567083999125671,"durationNanoSeconds":10265755,"metadata":{}} +{"traceId":"f3edabdc88434047","parentSpanId":"f98189a81ba9d8e3","spanId":"c7b11ea631102d7b","operation":"first","startTimeMicroSeconds":1567083998931333,"durationNanoSeconds":204617676,"metadata":{}} +{"traceId":"e0f23219a5aebc3a","parentSpanId":"fd3c9072acb752cf","spanId":"280d073e9e2f261b","operation":"sleep 100","startTimeMicroSeconds":1567083999135948,"durationNanoSeconds":102803249,"metadata":{}} +{"traceId":"e0f23219a5aebc3a","parentSpanId":"92d2cdaee0dd3b67","spanId":"fd3c9072acb752cf","operation":"second","startTimeMicroSeconds":1567083999135938,"durationNanoSeconds":102848516,"metadata":{}} +{"traceId":"e0f23219a5aebc3a","parentSpanId":null,"spanId":"92d2cdaee0dd3b67","operation":"root","startTimeMicroSeconds":1567083998931310,"durationNanoSeconds":307500144,"metadata":{}} +{"traceId":"f3edabdc88434047","parentSpanId":"c3b6498254604d82","spanId":"5ae9e0a0197f0bb3","operation":"sleep 100","startTimeMicroSeconds":1567083999135994,"durationNanoSeconds":105051937,"metadata":{}} +{"traceId":"f3edabdc88434047","parentSpanId":"f98189a81ba9d8e3","spanId":"c3b6498254604d82","operation":"second","startTimeMicroSeconds":1567083999135970,"durationNanoSeconds":105089543,"metadata":{}} +{"traceId":"f3edabdc88434047","parentSpanId":null,"spanId":"f98189a81ba9d8e3","operation":"root","startTimeMicroSeconds":1567083998931324,"durationNanoSeconds":309749767,"metadata":{}} From 5039907d834a3c0654a6fa95bad61b54f7aa774a Mon Sep 17 00:00:00 2001 From: forozco Date: Thu, 29 Aug 2019 14:11:31 +0100 Subject: [PATCH 04/24] cleanup --- tracing-demos/build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/tracing-demos/build.gradle b/tracing-demos/build.gradle index 5ad8a08f8..3b234774b 100644 --- a/tracing-demos/build.gradle +++ b/tracing-demos/build.gradle @@ -1,7 +1,6 @@ dependencies { testImplementation project(":tracing") testImplementation project(":tracing-test-utils") - testCompileOnly "org.immutables:value::annotations" testImplementation 'org.assertj:assertj-core' testImplementation 'org.junit.jupiter:junit-jupiter' } From e7182eb6bffab538283d2e44409a7a2f2f8a233a Mon Sep 17 00:00:00 2001 From: forozco Date: Thu, 29 Aug 2019 14:41:55 +0100 Subject: [PATCH 05/24] test transformed futures --- .../com/palantir/tracing/TracingDemos.java | 60 +++++++++++++----- .../multi_producer_single_consumer.log | 62 +++++++++++++++++++ .../TracingDemos/transformed_future.log | 5 ++ 3 files changed, 113 insertions(+), 14 deletions(-) create mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log create mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index 6dfd09fe7..c6286516e 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -18,6 +18,7 @@ import static org.assertj.core.api.Assertions.assertThat; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.MoreExecutors; @@ -33,11 +34,11 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +@SuppressWarnings("FutureReturnValueIgnored") class TracingDemos { @Test @TestTracing(snapshot = true, layout = LayoutStrategy.SPLIT_BY_TRACE) - @SuppressWarnings("FutureReturnValueIgnored") void handles_async_spans() throws Exception { int numThreads = 2; int numTasks = 4; @@ -67,25 +68,25 @@ void async_future() throws InterruptedException { int numThreads = 2; int numCallbacks = 10; ExecutorService executorService = Tracers.wrap(Executors.newFixedThreadPool(numThreads)); - final SettableFuture objectSettableFuture = SettableFuture.create(); + final SettableFuture future = SettableFuture.create(); CountDownLatch latch = new CountDownLatch(numCallbacks); IntStream.range(0, numCallbacks).forEach(i -> - Futures.addCallback(objectSettableFuture, new FutureCallback() { + Futures.addCallback(future, new FutureCallback() { @Override public void onSuccess(@Nullable Object result) { sleep(10, "success" + i); latch.countDown(); } @Override - public void onFailure(Throwable t) { + public void onFailure(Throwable throwable) { Assertions.fail(); } }, executorService)); executorService.submit(() -> { try (CloseableTracer root = CloseableTracer.startSpan("root")) { - objectSettableFuture.set(null); + future.set(null); } }); @@ -93,14 +94,14 @@ public void onFailure(Throwable t) { } @Test - // Unable to snapshot since the output trace is unstable - @TestTracing(layout = LayoutStrategy.SPLIT_BY_TRACE) + @TestTracing(snapshot = true, layout = LayoutStrategy.SPLIT_BY_TRACE) void multi_producer_single_consumer() throws InterruptedException { int numProducers = 2; int numElem = 20; PriorityBlockingQueue work = new PriorityBlockingQueue<>(); - CountDownLatch latch = new CountDownLatch(numElem); + CountDownLatch submitLatch = new CountDownLatch(numElem); + CountDownLatch consumeLatch = new CountDownLatch(numElem); ExecutorService producerExecutorService = Tracers.wrap(Executors.newFixedThreadPool(numProducers)); ExecutorService consumerExecutorService = Tracers.wrap(Executors.newFixedThreadPool(1)); @@ -109,19 +110,21 @@ void multi_producer_single_consumer() throws InterruptedException { producerExecutorService.submit(() -> { try (CloseableTracer closeableTracer = CloseableTracer.startSpan("submit-work" + i)) { work.add("work" + i); + submitLatch.countDown(); } }); }); + assertThat(submitLatch.await(10, TimeUnit.SECONDS)).isTrue(); consumerExecutorService.submit(() -> { for (int i = 0; i < numElem; i++) { String poll = work.take(); sleep(10, "processing" + poll); - latch.countDown(); + consumeLatch.countDown(); } return null; }); - assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); + assertThat(consumeLatch.await(10, TimeUnit.SECONDS)).isTrue(); } } @@ -159,18 +162,47 @@ void backoffs_on_a_scheduled_executor() throws InterruptedException { MoreExecutors.shutdownAndAwaitTermination(executor, 1, TimeUnit.SECONDS); } - private static void sleep(int i, String operation) { + @Test + @TestTracing(snapshot = true, layout = LayoutStrategy.SPLIT_BY_TRACE) + @SuppressWarnings("CheckReturnValue") + void transformed_future() throws InterruptedException { + SettableFuture future = SettableFuture.create(); + ScheduledExecutorService executor = Tracers.wrap(Executors.newScheduledThreadPool(2)); + CountDownLatch latch = new CountDownLatch(1); + + FluentFuture.from(future) + .transform(result -> { + sleep(100, "first"); + return result; + }, executor) + .transform(result -> { + sleep(100, "second"); + latch.countDown(); + return result; + }, executor); + + executor.submit(() -> { + try (CloseableTracer root = CloseableTracer.startSpan("root")) { + future.set(null); + } + }); + + assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); + } + + private static void sleep(int millis, String operation) { try (CloseableTracer t = CloseableTracer.startSpan(operation)) { - Thread.sleep(i); + Thread.sleep(millis); } catch (InterruptedException e) { throw new RuntimeException("dont care", e); } } - private static void sleep(int i) { - sleep(i, "sleep " + i); + private static void sleep(int millis) { + sleep(millis, "sleep " + millis); } + @SuppressWarnings("NestedTryDepth") private static void emit_nested_spans() { try (CloseableTracer root = CloseableTracer.startSpan("root")) { try (CloseableTracer first = CloseableTracer.startSpan("first")) { diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log new file mode 100644 index 000000000..1d11ede45 --- /dev/null +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log @@ -0,0 +1,62 @@ +{"traceId":"7fc65698fb689a79","parentSpanId":"210c1c7db8875417","spanId":"1efd6ebadd0bd64b","operation":"submit-work0","startTimeMicroSeconds":1567085337013974,"durationNanoSeconds":39841,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"210c1c7db8875417","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337013943,"durationNanoSeconds":108897,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"a34d7d56b03cd96f","spanId":"fd9cda4a1b765ccc","operation":"submit-work1","startTimeMicroSeconds":1567085337014034,"durationNanoSeconds":24233,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"a34d7d56b03cd96f","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014019,"durationNanoSeconds":66998,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"886a1f523665c44b","spanId":"454ad9f0720d03d7","operation":"submit-work2","startTimeMicroSeconds":1567085337014138,"durationNanoSeconds":17869,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"886a1f523665c44b","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014125,"durationNanoSeconds":49184,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"61fdaaf9cd851c1c","spanId":"a20f8b6e77550e30","operation":"submit-work3","startTimeMicroSeconds":1567085337014166,"durationNanoSeconds":15948,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"61fdaaf9cd851c1c","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014154,"durationNanoSeconds":48283,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"dbe753d46ebe574c","spanId":"56d4282c4f916d97","operation":"submit-work4","startTimeMicroSeconds":1567085337014248,"durationNanoSeconds":14180,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"dbe753d46ebe574c","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014237,"durationNanoSeconds":43777,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"d57110dff3042e3a","spanId":"7ae4c867401c45a3","operation":"submit-work5","startTimeMicroSeconds":1567085337014274,"durationNanoSeconds":15565,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"d57110dff3042e3a","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014262,"durationNanoSeconds":46064,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"b25bde3e08fd4a95","spanId":"81d082ca33a0bdb2","operation":"submit-work6","startTimeMicroSeconds":1567085337014350,"durationNanoSeconds":15284,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"b25bde3e08fd4a95","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014338,"durationNanoSeconds":52926,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"3537dc0f8f9bcff7","spanId":"b6b03e342e3e00dc","operation":"submit-work7","startTimeMicroSeconds":1567085337014411,"durationNanoSeconds":15168,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"3537dc0f8f9bcff7","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014395,"durationNanoSeconds":54505,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"de0febee44ad465d","spanId":"4e1c18ba00250f34","operation":"submit-work8","startTimeMicroSeconds":1567085337014460,"durationNanoSeconds":14124,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"de0febee44ad465d","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014449,"durationNanoSeconds":44948,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"61a2a2e869daea1c","spanId":"3af1d89d88aec79d","operation":"submit-work9","startTimeMicroSeconds":1567085337014524,"durationNanoSeconds":36316,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"61a2a2e869daea1c","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014512,"durationNanoSeconds":69480,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"f86e50abc238bd55","spanId":"167055f9c7963f0d","operation":"submit-work10","startTimeMicroSeconds":1567085337014590,"durationNanoSeconds":23766,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"f86e50abc238bd55","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014578,"durationNanoSeconds":57526,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"1a6b78f7c3e18784","spanId":"d20e6599d63b406b","operation":"submit-work11","startTimeMicroSeconds":1567085337014656,"durationNanoSeconds":93000,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"0bbec5c5cfd13bf3","spanId":"6a0b7a2ebf7a0751","operation":"submit-work12","startTimeMicroSeconds":1567085337014708,"durationNanoSeconds":60551,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"1a6b78f7c3e18784","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014644,"durationNanoSeconds":125485,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"0bbec5c5cfd13bf3","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014696,"durationNanoSeconds":93112,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a1b8729f6a0996a","spanId":"53741fd9525bbd80","operation":"submit-work13","startTimeMicroSeconds":1567085337014841,"durationNanoSeconds":14399,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"6a1b8729f6a0996a","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014829,"durationNanoSeconds":44206,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"5ba3f51290af73a7","spanId":"792bb7e24a2df21c","operation":"submit-work14","startTimeMicroSeconds":1567085337014866,"durationNanoSeconds":14779,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"5ba3f51290af73a7","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014848,"durationNanoSeconds":52153,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"71b6deee963a87f5","spanId":"c52c4254ea7f3e7a","operation":"submit-work15","startTimeMicroSeconds":1567085337014942,"durationNanoSeconds":17763,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"71b6deee963a87f5","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014931,"durationNanoSeconds":49221,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"4030170f00d26fba","spanId":"6a084ae4b1b83c36","operation":"submit-work16","startTimeMicroSeconds":1567085337014969,"durationNanoSeconds":15052,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"4030170f00d26fba","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014958,"durationNanoSeconds":43944,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"62a282a696cddfc5","spanId":"c6f1b837cd6b5fdd","operation":"submit-work17","startTimeMicroSeconds":1567085337015049,"durationNanoSeconds":16336,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"62a282a696cddfc5","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337015038,"durationNanoSeconds":45468,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"ff3733fc34b11ec5","spanId":"284574ff62d61d73","operation":"submit-work18","startTimeMicroSeconds":1567085337015072,"durationNanoSeconds":13919,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"ff3733fc34b11ec5","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337015061,"durationNanoSeconds":42458,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"4ca9f9d4b5b3e81e","spanId":"d896ee13b3fab14e","operation":"submit-work19","startTimeMicroSeconds":1567085337015154,"durationNanoSeconds":23203,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"4ca9f9d4b5b3e81e","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337015140,"durationNanoSeconds":55663,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"e1ba907d1fe2eec5","operation":"processingwork0","startTimeMicroSeconds":1567085337015824,"durationNanoSeconds":10356179,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"83997f6b6ed59275","operation":"processingwork1","startTimeMicroSeconds":1567085337026307,"durationNanoSeconds":11306856,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"cc9d9baa09c2ec84","operation":"processingwork10","startTimeMicroSeconds":1567085337037719,"durationNanoSeconds":12552373,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"022409d797133826","operation":"processingwork11","startTimeMicroSeconds":1567085337050363,"durationNanoSeconds":12496281,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"627c1d8a807b017d","operation":"processingwork12","startTimeMicroSeconds":1567085337062934,"durationNanoSeconds":11004739,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"1cc5c7a58c073a67","operation":"processingwork13","startTimeMicroSeconds":1567085337074031,"durationNanoSeconds":12593612,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"f8cf41730abfbf59","operation":"processingwork14","startTimeMicroSeconds":1567085337086771,"durationNanoSeconds":11305291,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"8880a760d2862740","operation":"processingwork15","startTimeMicroSeconds":1567085337098191,"durationNanoSeconds":11210129,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"6eedb91f5d7dc477","operation":"processingwork16","startTimeMicroSeconds":1567085337109542,"durationNanoSeconds":12596060,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"57dcc75644d32370","operation":"processingwork17","startTimeMicroSeconds":1567085337122282,"durationNanoSeconds":10576953,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"adab6f768a2dd073","operation":"processingwork18","startTimeMicroSeconds":1567085337133037,"durationNanoSeconds":12643346,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"ae1c6783f968e50b","operation":"processingwork19","startTimeMicroSeconds":1567085337145859,"durationNanoSeconds":11125043,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"31cc070a4fc2abf3","operation":"processingwork2","startTimeMicroSeconds":1567085337157131,"durationNanoSeconds":12387835,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"beb8ec56a176c8d3","operation":"processingwork3","startTimeMicroSeconds":1567085337169668,"durationNanoSeconds":10322091,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"17161680dd5e788d","operation":"processingwork4","startTimeMicroSeconds":1567085337180137,"durationNanoSeconds":11613708,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"4a15773e319efaf1","operation":"processingwork5","startTimeMicroSeconds":1567085337191860,"durationNanoSeconds":12609148,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"f63847f2296067b9","operation":"processingwork6","startTimeMicroSeconds":1567085337204625,"durationNanoSeconds":12596208,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"ae7b4b67ad58b96c","operation":"processingwork7","startTimeMicroSeconds":1567085337217371,"durationNanoSeconds":12610069,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"916d088aa2e5a9a9","operation":"processingwork8","startTimeMicroSeconds":1567085337230123,"durationNanoSeconds":12613471,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"314b00c6b3dfb12b","operation":"processingwork9","startTimeMicroSeconds":1567085337242867,"durationNanoSeconds":12614361,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"239959a506e900e3","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337015777,"durationNanoSeconds":239853736,"metadata":{}} +{"traceId":"7fc65698fb689a79","parentSpanId":null,"spanId":"6a3424d45e4ffa2b","operation":"submit","startTimeMicroSeconds":1567085337011919,"durationNanoSeconds":243813430,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log new file mode 100644 index 000000000..0c60f1e67 --- /dev/null +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log @@ -0,0 +1,5 @@ +{"traceId":"a6640e2cda24d499","parentSpanId":null,"spanId":"4d5de768dffc371a","operation":"root","startTimeMicroSeconds":1567085335148594,"durationNanoSeconds":7302262,"metadata":{}} +{"traceId":"a6640e2cda24d499","parentSpanId":"aa42b81f0b669f45","spanId":"584c485e1abe0e8d","operation":"first","startTimeMicroSeconds":1567085335152009,"durationNanoSeconds":100990393,"metadata":{}} +{"traceId":"a6640e2cda24d499","parentSpanId":"4d5de768dffc371a","spanId":"aa42b81f0b669f45","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085335151043,"durationNanoSeconds":102154732,"metadata":{}} +{"traceId":"a6640e2cda24d499","parentSpanId":"f1c617aeb0e16805","spanId":"5a47668355b72dd5","operation":"second","startTimeMicroSeconds":1567085335253301,"durationNanoSeconds":100526216,"metadata":{}} +{"traceId":"a6640e2cda24d499","parentSpanId":"aa42b81f0b669f45","spanId":"f1c617aeb0e16805","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085335253276,"durationNanoSeconds":100633142,"metadata":{}} From 25e27ee3255a34f9d41153c17fdb76739fd99ef4 Mon Sep 17 00:00:00 2001 From: forozco Date: Thu, 29 Aug 2019 15:12:09 +0100 Subject: [PATCH 06/24] fix conccurent equality check --- .../com/palantir/tracing/SpanAnalyzer.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/tracing-test-utils/src/main/java/com/palantir/tracing/SpanAnalyzer.java b/tracing-test-utils/src/main/java/com/palantir/tracing/SpanAnalyzer.java index 76662ac28..c15b40ebf 100644 --- a/tracing-test-utils/src/main/java/com/palantir/tracing/SpanAnalyzer.java +++ b/tracing-test-utils/src/main/java/com/palantir/tracing/SpanAnalyzer.java @@ -141,18 +141,21 @@ static Stream compareSpansRecursively( return Stream.of(ComparisonFailure.incompatibleStructure(ex, ac)); } - if (actualContainsOverlappingSpans && !compatibleOverlappingSpans( - expected, actual, sortedExpectedChildren, sortedActualChildren)) { - return Stream.of(ComparisonFailure.unequalChildren(ex, ac, sortedExpectedChildren, sortedActualChildren)); + if (!actualContainsOverlappingSpans) { + return IntStream.range(0, sortedActualChildren.size()) + .mapToObj(i -> compareSpansRecursively( + expected, + actual, + sortedExpectedChildren.get(i), + sortedActualChildren.get(i))) + .flatMap(Function.identity()); } - return IntStream.range(0, sortedActualChildren.size()) - .mapToObj(i -> compareSpansRecursively( - expected, - actual, - sortedExpectedChildren.get(i), - sortedActualChildren.get(i))) - .flatMap(Function.identity()); + if (!compatibleOverlappingSpans(expected, actual, sortedExpectedChildren, sortedActualChildren)) { + return Stream.of(ComparisonFailure.unequalChildren( + ex, ac, sortedExpectedChildren, sortedActualChildren)); + } + return Stream.empty(); } /** From 96c4a1027bf8d1035e119b6471741374ed8290a5 Mon Sep 17 00:00:00 2001 From: Dan Fox Date: Thu, 29 Aug 2019 16:30:34 +0100 Subject: [PATCH 07/24] WIP? --- .../com/palantir/tracing/CrossThreadSpan.java | 106 ++++++++++++++++++ .../java/com/palantir/tracing/Tracer.java | 6 +- 2 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java diff --git a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java new file mode 100644 index 000000000..8553ca931 --- /dev/null +++ b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java @@ -0,0 +1,106 @@ +/* + * (c) Copyright 2019 Palantir Technologies Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.palantir.tracing; + +import com.google.errorprone.annotations.CheckReturnValue; +import com.google.errorprone.annotations.MustBeClosed; +import com.palantir.logsafe.Preconditions; +import com.palantir.tracing.api.OpenSpan; +import com.palantir.tracing.api.Span; +import com.palantir.tracing.api.SpanType; +import java.util.Collections; +import java.util.Optional; +import java.util.concurrent.atomic.AtomicReference; +import javax.annotation.concurrent.ThreadSafe; + +/** + * For low-level library code only. + */ +@ThreadSafe +public final class CrossThreadSpan { + + private final String traceId; + private boolean observable; + private final AtomicReference openSpan; + + private CrossThreadSpan(String traceId, boolean observable, AtomicReference openSpan) { + this.traceId = traceId; + this.observable = observable; + this.openSpan = openSpan; + } + + // intentionally not using AutoCloseable and '@MustBeClosed' because try-with-resources isn't convenient across + // threads + @CheckReturnValue + public static CrossThreadSpan startSpan(String operation) { + return startSpan(operation, SpanType.LOCAL); + } + + @CheckReturnValue + public static CrossThreadSpan startSpan(String operation, SpanType spanType) { + // copy our current state is + String traceId = "TODO"; + Optional parentSpanId = Optional.of("TODO"); + Optional originatingSpanId = Optional.of("TODO"); + + OpenSpan openSpan = OpenSpan.of(operation, Tracers.randomId(), spanType, parentSpanId, originatingSpanId); + + return new CrossThreadSpan(traceId, Tracer.isTraceObservable(), new AtomicReference<>(openSpan)); + } + + /** Destructive operation - once you call this, you can't use it anymore. */ + @MustBeClosed + public CloseableTracer completeAndStartSpan(String nextOperationName) { + complete(); + + // nuke the current thread locals - we may or may not be throwing away an existing trace with an + // unclosed OpenSpan. + Tracer.clearCurrentTrace(); + + // a fresh copy doesn't have any of the old spans + Trace rehydratedTrace = Trace.of(true, traceId); + Tracer.setTrace(rehydratedTrace); + + return CloseableTracer.startSpan(nextOperationName); + } + + /** Destructive operation - once you call this, you can't use it anymore. */ + public void complete() { + OpenSpan openSpan1 = openSpan.getAndSet(null); + Preconditions.checkState(openSpan1 != null, "CrossThreadSpan may only be completed once"); + + // end the span + Span span = Tracer.toSpan(openSpan1, Collections.emptyMap(), traceId); + + // emit stuff based on the portable thread state + Tracer.notifyObservers(span); + } + + @CheckReturnValue + public CrossThreadSpan startChildSpan(String operation, SpanType spanType) { + // copy our current state is + + OpenSpan openSpan1 = openSpan.get(); + Preconditions.checkState(openSpan1 != null, "Can't create startChildSpan after complete has been called"); + + OpenSpan openSpan = OpenSpan.of( + operation, Tracers.randomId(), spanType, + openSpan1.getParentSpanId(), openSpan1.getOriginatingSpanId()); + + return new CrossThreadSpan(traceId, Tracer.isTraceObservable(), new AtomicReference<>(openSpan)); + } +} diff --git a/tracing/src/main/java/com/palantir/tracing/Tracer.java b/tracing/src/main/java/com/palantir/tracing/Tracer.java index 11af98ae4..cdf13a4ee 100644 --- a/tracing/src/main/java/com/palantir/tracing/Tracer.java +++ b/tracing/src/main/java/com/palantir/tracing/Tracer.java @@ -224,7 +224,7 @@ public static Optional completeSpan(Map metadata) { return maybeSpan; } - private static void notifyObservers(Span span) { + static void notifyObservers(Span span) { compositeObserver.accept(span); } @@ -236,7 +236,7 @@ private static Optional popCurrentSpan(Trace trace) { return span; } - private static Span toSpan(OpenSpan openSpan, Map metadata, String traceId) { + static Span toSpan(OpenSpan openSpan, Map metadata, String traceId) { return Span.builder() .traceId(traceId) .spanId(openSpan.getSpanId()) @@ -378,7 +378,7 @@ private static Trace getOrCreateCurrentTrace() { return trace; } - private static void clearCurrentTrace() { + static void clearCurrentTrace() { currentTrace.remove(); MDC.remove(Tracers.TRACE_ID_KEY); MDC.remove(Tracers.TRACE_SAMPLED_KEY); From 0b1897a36d7d7de1865a553f52d849a06e02d3d4 Mon Sep 17 00:00:00 2001 From: Dan Fox Date: Thu, 29 Aug 2019 16:37:42 +0100 Subject: [PATCH 08/24] Utility methods --- .../com/palantir/tracing/CrossThreadSpan.java | 57 +++++++++++-------- .../java/com/palantir/tracing/Tracer.java | 2 +- 2 files changed, 34 insertions(+), 25 deletions(-) diff --git a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java index 8553ca931..abcdba77c 100644 --- a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java +++ b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java @@ -23,7 +23,6 @@ import com.palantir.tracing.api.Span; import com.palantir.tracing.api.SpanType; import java.util.Collections; -import java.util.Optional; import java.util.concurrent.atomic.AtomicReference; import javax.annotation.concurrent.ThreadSafe; @@ -52,19 +51,33 @@ public static CrossThreadSpan startSpan(String operation) { @CheckReturnValue public static CrossThreadSpan startSpan(String operation, SpanType spanType) { - // copy our current state is - String traceId = "TODO"; - Optional parentSpanId = Optional.of("TODO"); - Optional originatingSpanId = Optional.of("TODO"); + Trace trace = Tracer.getOrCreateCurrentTrace(); - OpenSpan openSpan = OpenSpan.of(operation, Tracers.randomId(), spanType, parentSpanId, originatingSpanId); + // TODO don't make this if we don't need it + OpenSpan openSpan = OpenSpan.of( + operation, + Tracers.randomId(), + spanType, + trace.top().map(OpenSpan::getSpanId), + trace.getOriginatingSpanId()); - return new CrossThreadSpan(traceId, Tracer.isTraceObservable(), new AtomicReference<>(openSpan)); + return new CrossThreadSpan(trace.getTraceId(), trace.isObservable(), new AtomicReference<>(openSpan)); + } + + /** Destructive operation - once you call this, you can't use it anymore. */ + public void complete() { + OpenSpan openSpan1 = openSpan.getAndSet(null); + Preconditions.checkState(openSpan1 != null, "CrossThreadSpan may only be completed once"); + + // end the span + Span span = Tracer.toSpan(openSpan1, Collections.emptyMap(), traceId); + + Tracer.notifyObservers(span); } /** Destructive operation - once you call this, you can't use it anymore. */ @MustBeClosed - public CloseableTracer completeAndStartSpan(String nextOperationName) { + public CloseableTracer completeAndStartSpan(String nextOperationName, SpanType spanType) { complete(); // nuke the current thread locals - we may or may not be throwing away an existing trace with an @@ -72,28 +85,14 @@ public CloseableTracer completeAndStartSpan(String nextOperationName) { Tracer.clearCurrentTrace(); // a fresh copy doesn't have any of the old spans - Trace rehydratedTrace = Trace.of(true, traceId); + Trace rehydratedTrace = Trace.of(observable, traceId); Tracer.setTrace(rehydratedTrace); - return CloseableTracer.startSpan(nextOperationName); - } - - /** Destructive operation - once you call this, you can't use it anymore. */ - public void complete() { - OpenSpan openSpan1 = openSpan.getAndSet(null); - Preconditions.checkState(openSpan1 != null, "CrossThreadSpan may only be completed once"); - - // end the span - Span span = Tracer.toSpan(openSpan1, Collections.emptyMap(), traceId); - - // emit stuff based on the portable thread state - Tracer.notifyObservers(span); + return CloseableTracer.startSpan(nextOperationName, spanType); } @CheckReturnValue public CrossThreadSpan startChildSpan(String operation, SpanType spanType) { - // copy our current state is - OpenSpan openSpan1 = openSpan.get(); Preconditions.checkState(openSpan1 != null, "Can't create startChildSpan after complete has been called"); @@ -103,4 +102,14 @@ public CrossThreadSpan startChildSpan(String operation, SpanType spanType) { return new CrossThreadSpan(traceId, Tracer.isTraceObservable(), new AtomicReference<>(openSpan)); } + + @MustBeClosed + public CloseableTracer completeAndStartSpan(String nextOperationName) { + return completeAndStartSpan(nextOperationName, SpanType.LOCAL); + } + + @CheckReturnValue + public CrossThreadSpan startChildSpan(String operation) { + return startChildSpan(operation, SpanType.LOCAL); + } } diff --git a/tracing/src/main/java/com/palantir/tracing/Tracer.java b/tracing/src/main/java/com/palantir/tracing/Tracer.java index cdf13a4ee..7cf0d5f6b 100644 --- a/tracing/src/main/java/com/palantir/tracing/Tracer.java +++ b/tracing/src/main/java/com/palantir/tracing/Tracer.java @@ -369,7 +369,7 @@ private static void setTraceSampledMdcIfObservable(boolean observable) { } } - private static Trace getOrCreateCurrentTrace() { + static Trace getOrCreateCurrentTrace() { Trace trace = currentTrace.get(); if (trace == null) { trace = createTrace(Observability.UNDECIDED, Tracers.randomId()); From c789947bb4c2d2d02e80d2150794f99e65d951f0 Mon Sep 17 00:00:00 2001 From: Dan Fox Date: Thu, 29 Aug 2019 17:05:44 +0100 Subject: [PATCH 09/24] Try it out with some demos --- .../com/palantir/tracing/TracingDemos.java | 59 +++++++++++------- .../tracing/TracingDemos/async_future.log | 43 ++++++------- .../backoffs_on_a_scheduled_executor.log | 9 --- .../TracingDemos/handles_async_spans.log | 33 ---------- .../multi_producer_single_consumer.log | 62 ------------------- .../TracingDemos/transformed_future.log | 5 -- .../com/palantir/tracing/CrossThreadSpan.java | 5 ++ .../java/com/palantir/tracing/Tracer.java | 2 +- 8 files changed, 65 insertions(+), 153 deletions(-) delete mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log delete mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log delete mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log delete mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index c6286516e..5a892cb50 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -48,16 +48,17 @@ void handles_async_spans() throws Exception { ExecutorService executorService = Executors.newFixedThreadPool(numThreads); CountDownLatch countDownLatch = new CountDownLatch(numTasks); - try (CloseableTracer root = CloseableTracer.startSpan("root")) { - IntStream.range(0, numTasks).forEach(i -> { - // DetachedSpan detachedSpan = DetachedSpan.start("task-queue-time" + i); - executorService.submit(() -> { - // detachedSpan.close(); + IntStream.range(0, numTasks).forEach(i -> { + Tracer.clearCurrentTrace(); // just pretending all these tasks are on a fresh request + + CrossThreadSpan crossThread = CrossThreadSpan.startSpan("task-queue-time" + i); + executorService.submit(() -> { + try (CloseableTracer t = crossThread.completeAndStartSpan("task" + i)) { emit_nested_spans(); countDownLatch.countDown(); - }); + } }); - } + }); assertThat(countDownLatch.await(expectedDurationMillis + 1000, TimeUnit.MILLISECONDS)).isTrue(); } @@ -71,25 +72,39 @@ void async_future() throws InterruptedException { final SettableFuture future = SettableFuture.create(); CountDownLatch latch = new CountDownLatch(numCallbacks); - IntStream.range(0, numCallbacks).forEach(i -> - Futures.addCallback(future, new FutureCallback() { - @Override - public void onSuccess(@Nullable Object result) { - sleep(10, "success" + i); + assertThat(Tracer.hasTraceId()).isFalse(); + + IntStream.range(0, numCallbacks).forEach(i -> { + + Tracer.clearCurrentTrace(); + + CrossThreadSpan span = CrossThreadSpan.startSpan("callback-pending" + i + " (cross thread span)"); + Futures.addCallback(future, new FutureCallback() { + @Override + public void onSuccess(@Nullable Object result) { + try (CloseableTracer t = span.completeAndStartSpan("success" + i)) { + Thread.sleep(10); latch.countDown(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException(e); } - @Override - public void onFailure(Throwable throwable) { - Assertions.fail(); - } - }, executorService)); + } - executorService.submit(() -> { - try (CloseableTracer root = CloseableTracer.startSpan("root")) { - future.set(null); - } + @Override + public void onFailure(Throwable throwable) { + Assertions.fail(); + } + }, executorService); }); + try (CloseableTracer root = CloseableTracer.startSpan("bbb")) { + executorService.submit(() -> { + future.set(null); + }); + } + + assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); } @@ -204,7 +219,7 @@ private static void sleep(int millis) { @SuppressWarnings("NestedTryDepth") private static void emit_nested_spans() { - try (CloseableTracer root = CloseableTracer.startSpan("root")) { + try (CloseableTracer root = CloseableTracer.startSpan("emit_nested_spans")) { try (CloseableTracer first = CloseableTracer.startSpan("first")) { sleep(100); try (CloseableTracer nested = CloseableTracer.startSpan("nested")) { diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log index 40a874b11..e84dc65a7 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log @@ -1,21 +1,22 @@ -{"traceId":"d545f2dc62c95370","parentSpanId":null,"spanId":"d4a82ce1d0b7c9ae","operation":"root","startTimeMicroSeconds":1567084000551052,"durationNanoSeconds":2219562,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"bfa5123d9dec003d","spanId":"612ecc8ad2651fb9","operation":"success0","startTimeMicroSeconds":1567084000556032,"durationNanoSeconds":10312056,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"bfa5123d9dec003d","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000553307,"durationNanoSeconds":13120623,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"82f85707b579ee10","spanId":"4bd643bc0d4f43df","operation":"success1","startTimeMicroSeconds":1567084000556055,"durationNanoSeconds":10419937,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"82f85707b579ee10","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000553348,"durationNanoSeconds":13164323,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"fa9e58518f8d03ba","spanId":"718296e9bcb7d5e1","operation":"success3","startTimeMicroSeconds":1567084000566586,"durationNanoSeconds":10475697,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"fa9e58518f8d03ba","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000566571,"durationNanoSeconds":10537431,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"9df0e0c69b32826a","spanId":"9721c786259e9dfd","operation":"success2","startTimeMicroSeconds":1567084000566535,"durationNanoSeconds":12526663,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"9df0e0c69b32826a","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000566511,"durationNanoSeconds":12578626,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"54594d5512d0335a","spanId":"0f973e825b762b9d","operation":"success4","startTimeMicroSeconds":1567084000577193,"durationNanoSeconds":10065016,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"54594d5512d0335a","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000577174,"durationNanoSeconds":10174865,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"d2c91d4295678b11","spanId":"9dc056e98c0fc872","operation":"success5","startTimeMicroSeconds":1567084000579178,"durationNanoSeconds":11540281,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"d2c91d4295678b11","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000579161,"durationNanoSeconds":11778650,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"7d5172fa27973008","spanId":"156332e8dfadd9f0","operation":"success6","startTimeMicroSeconds":1567084000587452,"durationNanoSeconds":10290319,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"7d5172fa27973008","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000587427,"durationNanoSeconds":10524029,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"2d417ddbd2e5b677","spanId":"b880d5f769ebac62","operation":"success7","startTimeMicroSeconds":1567084000591093,"durationNanoSeconds":12594213,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"2d417ddbd2e5b677","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000591052,"durationNanoSeconds":12689004,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"2b64b3cd71712bd5","spanId":"08f475a3c82ee0a9","operation":"success8","startTimeMicroSeconds":1567084000598208,"durationNanoSeconds":10162597,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"2b64b3cd71712bd5","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000598152,"durationNanoSeconds":10274988,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"985136e997c47f05","spanId":"3747cdce17335bea","operation":"success9","startTimeMicroSeconds":1567084000603883,"durationNanoSeconds":10218861,"metadata":{}} -{"traceId":"d545f2dc62c95370","parentSpanId":"d4a82ce1d0b7c9ae","spanId":"985136e997c47f05","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567084000603855,"durationNanoSeconds":10489810,"metadata":{}} +{"traceId":"de8d28959f7c877c","parentSpanId":null,"spanId":"509461891c57c125","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567094727576000,"durationNanoSeconds":57254953,"metadata":{}} +{"traceId":"69185e9a04ed31ec","parentSpanId":"5bbd58faeb6c4e09","spanId":"f43ef6d444ff35ad","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567094727629000,"durationNanoSeconds":5479355,"metadata":{}} +{"traceId":"69185e9a04ed31ec","parentSpanId":null,"spanId":"5bbd58faeb6c4e09","operation":"bbb","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":49664644,"metadata":{}} +{"traceId":"3795c7de69501938","parentSpanId":null,"spanId":"bb0c8a0c342ee4b6","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567094727583000,"durationNanoSeconds":56348237,"metadata":{}} +{"traceId":"de8d28959f7c877c","parentSpanId":null,"spanId":"24658fbdb338e1f8","operation":"success0","startTimeMicroSeconds":1567094727640000,"durationNanoSeconds":10303267,"metadata":{}} +{"traceId":"c445c5d3f3772b7d","parentSpanId":null,"spanId":"3d0671a6fa0b2c26","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":66633078,"metadata":{}} +{"traceId":"3795c7de69501938","parentSpanId":null,"spanId":"40156d68bfd20c37","operation":"success1","startTimeMicroSeconds":1567094727640000,"durationNanoSeconds":10293078,"metadata":{}} +{"traceId":"09a6e231e07a9b37","parentSpanId":null,"spanId":"592867cbac8299d9","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":66719166,"metadata":{}} +{"traceId":"09a6e231e07a9b37","parentSpanId":null,"spanId":"bb4d063784c10414","operation":"success3","startTimeMicroSeconds":1567094727650000,"durationNanoSeconds":10341413,"metadata":{}} +{"traceId":"a5f16aef9890211b","parentSpanId":null,"spanId":"30d0a616c706143b","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":77191270,"metadata":{}} +{"traceId":"c445c5d3f3772b7d","parentSpanId":null,"spanId":"3b81d8c59609a81f","operation":"success2","startTimeMicroSeconds":1567094727650000,"durationNanoSeconds":12174431,"metadata":{}} +{"traceId":"52bbebfa9c27c337","parentSpanId":null,"spanId":"198bb43063bdbc9f","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":78904924,"metadata":{}} +{"traceId":"a5f16aef9890211b","parentSpanId":null,"spanId":"5e9cdb857f591bc9","operation":"success4","startTimeMicroSeconds":1567094727661000,"durationNanoSeconds":10096043,"metadata":{}} +{"traceId":"a12b75d7cd365210","parentSpanId":null,"spanId":"80cd29287353778a","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":87437124,"metadata":{}} +{"traceId":"52bbebfa9c27c337","parentSpanId":null,"spanId":"5e28c8c7f54d52c2","operation":"success5","startTimeMicroSeconds":1567094727663000,"durationNanoSeconds":10080740,"metadata":{}} +{"traceId":"bd6707b8eaa618cf","parentSpanId":null,"spanId":"fa6b20874912cf86","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":89062721,"metadata":{}} +{"traceId":"a12b75d7cd365210","parentSpanId":null,"spanId":"549f83e62e9198ef","operation":"success6","startTimeMicroSeconds":1567094727671000,"durationNanoSeconds":10170135,"metadata":{}} +{"traceId":"af3826f51b080683","parentSpanId":null,"spanId":"2cfbe57fe34d07a6","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":97677854,"metadata":{}} +{"traceId":"bd6707b8eaa618cf","parentSpanId":null,"spanId":"a3325e9d490253e8","operation":"success7","startTimeMicroSeconds":1567094727673000,"durationNanoSeconds":10098145,"metadata":{}} +{"traceId":"69185e9a04ed31ec","parentSpanId":null,"spanId":"29e4c5bdd8f874fe","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":99191796,"metadata":{}} +{"traceId":"af3826f51b080683","parentSpanId":null,"spanId":"fc4d9c882198d274","operation":"success8","startTimeMicroSeconds":1567094727681000,"durationNanoSeconds":10212348,"metadata":{}} +{"traceId":"69185e9a04ed31ec","parentSpanId":null,"spanId":"b54c20675f07bc9a","operation":"success9","startTimeMicroSeconds":1567094727683000,"durationNanoSeconds":11201594,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log deleted file mode 100644 index e4d23d3f0..000000000 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log +++ /dev/null @@ -1,9 +0,0 @@ -{"traceId":"0875499283a0b645","parentSpanId":"f57bff76dda9bccd","spanId":"1f9685688afb892b","operation":"first attempt","startTimeMicroSeconds":1567081023561883,"durationNanoSeconds":107114618,"metadata":{}} -{"traceId":"0875499283a0b645","parentSpanId":"f57bff76dda9bccd","spanId":"d28d4828a150e70b","operation":"first tidying","startTimeMicroSeconds":1567081023676041,"durationNanoSeconds":200386672,"metadata":{}} -{"traceId":"0875499283a0b645","parentSpanId":"8fddcb256eeeb15a","spanId":"f57bff76dda9bccd","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567081023561824,"durationNanoSeconds":314967929,"metadata":{}} -{"traceId":"0875499283a0b645","parentSpanId":"df0540811612a1b2","spanId":"4ad94d822f100358","operation":"second attempt","startTimeMicroSeconds":1567081023777701,"durationNanoSeconds":100733508,"metadata":{}} -{"traceId":"0875499283a0b645","parentSpanId":"f65d492c10c83ecd","spanId":"2bbf7eb3b51093e2","operation":"final attempt","startTimeMicroSeconds":1567081023983056,"durationNanoSeconds":100766995,"metadata":{}} -{"traceId":"0875499283a0b645","parentSpanId":"df0540811612a1b2","spanId":"beadbcad1c24eebe","operation":"second tidying","startTimeMicroSeconds":1567081023879549,"durationNanoSeconds":204268808,"metadata":{}} -{"traceId":"0875499283a0b645","parentSpanId":"f57bff76dda9bccd","spanId":"df0540811612a1b2","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567081023777644,"durationNanoSeconds":306243186,"metadata":{}} -{"traceId":"0875499283a0b645","parentSpanId":"df0540811612a1b2","spanId":"f65d492c10c83ecd","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567081023983012,"durationNanoSeconds":100901662,"metadata":{}} -{"traceId":"0875499283a0b645","parentSpanId":null,"spanId":"8fddcb256eeeb15a","operation":"some-request","startTimeMicroSeconds":1567081023513315,"durationNanoSeconds":635798768,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log deleted file mode 100644 index d973d9a0a..000000000 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log +++ /dev/null @@ -1,33 +0,0 @@ -{"traceId":"6df3ba56f991bd3c","parentSpanId":null,"spanId":"1e408d974e9a34e1","operation":"root","startTimeMicroSeconds":1567083998623608,"durationNanoSeconds":7281920,"metadata":{}} -{"traceId":"e83bc82b26726b87","parentSpanId":"b3794ecadedaf8fe","spanId":"7251b66c6e772329","operation":"sleep 100","startTimeMicroSeconds":1567083998626931,"durationNanoSeconds":100483960,"metadata":{}} -{"traceId":"a3decc2e97b3e403","parentSpanId":"b5ef64121d5f4bc7","spanId":"712cee1c0af620aa","operation":"sleep 100","startTimeMicroSeconds":1567083998626934,"durationNanoSeconds":100481955,"metadata":{}} -{"traceId":"e83bc82b26726b87","parentSpanId":"7d233f880db57a8c","spanId":"b97182bcdcf41b76","operation":"sleep 90","startTimeMicroSeconds":1567083998727620,"durationNanoSeconds":91496591,"metadata":{}} -{"traceId":"e83bc82b26726b87","parentSpanId":"b3794ecadedaf8fe","spanId":"7d233f880db57a8c","operation":"nested","startTimeMicroSeconds":1567083998727604,"durationNanoSeconds":91543922,"metadata":{}} -{"traceId":"a3decc2e97b3e403","parentSpanId":"cb641e2f9c610f10","spanId":"07d16fdd11cb1810","operation":"sleep 90","startTimeMicroSeconds":1567083998727629,"durationNanoSeconds":91758772,"metadata":{}} -{"traceId":"a3decc2e97b3e403","parentSpanId":"b5ef64121d5f4bc7","spanId":"cb641e2f9c610f10","operation":"nested","startTimeMicroSeconds":1567083998727616,"durationNanoSeconds":91793342,"metadata":{}} -{"traceId":"e83bc82b26726b87","parentSpanId":"b3794ecadedaf8fe","spanId":"72c00d665bf201ed","operation":"sleep 10","startTimeMicroSeconds":1567083998819176,"durationNanoSeconds":10291356,"metadata":{}} -{"traceId":"e83bc82b26726b87","parentSpanId":"f1387dc28ad337e5","spanId":"b3794ecadedaf8fe","operation":"first","startTimeMicroSeconds":1567083998626893,"durationNanoSeconds":202610302,"metadata":{}} -{"traceId":"a3decc2e97b3e403","parentSpanId":"b5ef64121d5f4bc7","spanId":"97b23e77a2df4262","operation":"sleep 10","startTimeMicroSeconds":1567083998819430,"durationNanoSeconds":10274735,"metadata":{}} -{"traceId":"a3decc2e97b3e403","parentSpanId":"c7791b4bedc339b2","spanId":"b5ef64121d5f4bc7","operation":"first","startTimeMicroSeconds":1567083998626894,"durationNanoSeconds":202834336,"metadata":{}} -{"traceId":"e83bc82b26726b87","parentSpanId":"b29d8d2f3dea9a66","spanId":"fc6f175a63f6fe49","operation":"sleep 100","startTimeMicroSeconds":1567083998829549,"durationNanoSeconds":101378312,"metadata":{}} -{"traceId":"a3decc2e97b3e403","parentSpanId":"1f119ea8e7d2517d","spanId":"d5c7b4e7231fabf8","operation":"sleep 100","startTimeMicroSeconds":1567083998829760,"durationNanoSeconds":101167544,"metadata":{}} -{"traceId":"e83bc82b26726b87","parentSpanId":"f1387dc28ad337e5","spanId":"b29d8d2f3dea9a66","operation":"second","startTimeMicroSeconds":1567083998829535,"durationNanoSeconds":101426029,"metadata":{}} -{"traceId":"a3decc2e97b3e403","parentSpanId":"c7791b4bedc339b2","spanId":"1f119ea8e7d2517d","operation":"second","startTimeMicroSeconds":1567083998829749,"durationNanoSeconds":101219782,"metadata":{}} -{"traceId":"e83bc82b26726b87","parentSpanId":null,"spanId":"f1387dc28ad337e5","operation":"root","startTimeMicroSeconds":1567083998626854,"durationNanoSeconds":304129572,"metadata":{}} -{"traceId":"a3decc2e97b3e403","parentSpanId":null,"spanId":"c7791b4bedc339b2","operation":"root","startTimeMicroSeconds":1567083998626878,"durationNanoSeconds":304113205,"metadata":{}} -{"traceId":"f3edabdc88434047","parentSpanId":"c7b11ea631102d7b","spanId":"128b4b2d4fdcb252","operation":"sleep 100","startTimeMicroSeconds":1567083998931344,"durationNanoSeconds":100466350,"metadata":{}} -{"traceId":"e0f23219a5aebc3a","parentSpanId":"1e358e05a94c5e17","spanId":"6440903138d7766f","operation":"sleep 100","startTimeMicroSeconds":1567083998931329,"durationNanoSeconds":104203779,"metadata":{}} -{"traceId":"f3edabdc88434047","parentSpanId":"bf4f2eb14d227e40","spanId":"efe0c95fbd6a46a5","operation":"sleep 90","startTimeMicroSeconds":1567083999031881,"durationNanoSeconds":93729812,"metadata":{}} -{"traceId":"f3edabdc88434047","parentSpanId":"c7b11ea631102d7b","spanId":"bf4f2eb14d227e40","operation":"nested","startTimeMicroSeconds":1567083999031865,"durationNanoSeconds":93776917,"metadata":{}} -{"traceId":"e0f23219a5aebc3a","parentSpanId":"073a80628f6c626f","spanId":"32c68d1223730037","operation":"sleep 90","startTimeMicroSeconds":1567083999035621,"durationNanoSeconds":90057860,"metadata":{}} -{"traceId":"e0f23219a5aebc3a","parentSpanId":"1e358e05a94c5e17","spanId":"073a80628f6c626f","operation":"nested","startTimeMicroSeconds":1567083999035603,"durationNanoSeconds":90091144,"metadata":{}} -{"traceId":"e0f23219a5aebc3a","parentSpanId":"1e358e05a94c5e17","spanId":"978e268ef2f2d4d6","operation":"sleep 10","startTimeMicroSeconds":1567083999125715,"durationNanoSeconds":10141892,"metadata":{}} -{"traceId":"e0f23219a5aebc3a","parentSpanId":"92d2cdaee0dd3b67","spanId":"1e358e05a94c5e17","operation":"first","startTimeMicroSeconds":1567083998931321,"durationNanoSeconds":204570793,"metadata":{}} -{"traceId":"f3edabdc88434047","parentSpanId":"c7b11ea631102d7b","spanId":"cc10d810db370d79","operation":"sleep 10","startTimeMicroSeconds":1567083999125671,"durationNanoSeconds":10265755,"metadata":{}} -{"traceId":"f3edabdc88434047","parentSpanId":"f98189a81ba9d8e3","spanId":"c7b11ea631102d7b","operation":"first","startTimeMicroSeconds":1567083998931333,"durationNanoSeconds":204617676,"metadata":{}} -{"traceId":"e0f23219a5aebc3a","parentSpanId":"fd3c9072acb752cf","spanId":"280d073e9e2f261b","operation":"sleep 100","startTimeMicroSeconds":1567083999135948,"durationNanoSeconds":102803249,"metadata":{}} -{"traceId":"e0f23219a5aebc3a","parentSpanId":"92d2cdaee0dd3b67","spanId":"fd3c9072acb752cf","operation":"second","startTimeMicroSeconds":1567083999135938,"durationNanoSeconds":102848516,"metadata":{}} -{"traceId":"e0f23219a5aebc3a","parentSpanId":null,"spanId":"92d2cdaee0dd3b67","operation":"root","startTimeMicroSeconds":1567083998931310,"durationNanoSeconds":307500144,"metadata":{}} -{"traceId":"f3edabdc88434047","parentSpanId":"c3b6498254604d82","spanId":"5ae9e0a0197f0bb3","operation":"sleep 100","startTimeMicroSeconds":1567083999135994,"durationNanoSeconds":105051937,"metadata":{}} -{"traceId":"f3edabdc88434047","parentSpanId":"f98189a81ba9d8e3","spanId":"c3b6498254604d82","operation":"second","startTimeMicroSeconds":1567083999135970,"durationNanoSeconds":105089543,"metadata":{}} -{"traceId":"f3edabdc88434047","parentSpanId":null,"spanId":"f98189a81ba9d8e3","operation":"root","startTimeMicroSeconds":1567083998931324,"durationNanoSeconds":309749767,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log deleted file mode 100644 index 1d11ede45..000000000 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log +++ /dev/null @@ -1,62 +0,0 @@ -{"traceId":"7fc65698fb689a79","parentSpanId":"210c1c7db8875417","spanId":"1efd6ebadd0bd64b","operation":"submit-work0","startTimeMicroSeconds":1567085337013974,"durationNanoSeconds":39841,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"210c1c7db8875417","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337013943,"durationNanoSeconds":108897,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"a34d7d56b03cd96f","spanId":"fd9cda4a1b765ccc","operation":"submit-work1","startTimeMicroSeconds":1567085337014034,"durationNanoSeconds":24233,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"a34d7d56b03cd96f","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014019,"durationNanoSeconds":66998,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"886a1f523665c44b","spanId":"454ad9f0720d03d7","operation":"submit-work2","startTimeMicroSeconds":1567085337014138,"durationNanoSeconds":17869,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"886a1f523665c44b","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014125,"durationNanoSeconds":49184,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"61fdaaf9cd851c1c","spanId":"a20f8b6e77550e30","operation":"submit-work3","startTimeMicroSeconds":1567085337014166,"durationNanoSeconds":15948,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"61fdaaf9cd851c1c","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014154,"durationNanoSeconds":48283,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"dbe753d46ebe574c","spanId":"56d4282c4f916d97","operation":"submit-work4","startTimeMicroSeconds":1567085337014248,"durationNanoSeconds":14180,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"dbe753d46ebe574c","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014237,"durationNanoSeconds":43777,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"d57110dff3042e3a","spanId":"7ae4c867401c45a3","operation":"submit-work5","startTimeMicroSeconds":1567085337014274,"durationNanoSeconds":15565,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"d57110dff3042e3a","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014262,"durationNanoSeconds":46064,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"b25bde3e08fd4a95","spanId":"81d082ca33a0bdb2","operation":"submit-work6","startTimeMicroSeconds":1567085337014350,"durationNanoSeconds":15284,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"b25bde3e08fd4a95","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014338,"durationNanoSeconds":52926,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"3537dc0f8f9bcff7","spanId":"b6b03e342e3e00dc","operation":"submit-work7","startTimeMicroSeconds":1567085337014411,"durationNanoSeconds":15168,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"3537dc0f8f9bcff7","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014395,"durationNanoSeconds":54505,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"de0febee44ad465d","spanId":"4e1c18ba00250f34","operation":"submit-work8","startTimeMicroSeconds":1567085337014460,"durationNanoSeconds":14124,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"de0febee44ad465d","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014449,"durationNanoSeconds":44948,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"61a2a2e869daea1c","spanId":"3af1d89d88aec79d","operation":"submit-work9","startTimeMicroSeconds":1567085337014524,"durationNanoSeconds":36316,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"61a2a2e869daea1c","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014512,"durationNanoSeconds":69480,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"f86e50abc238bd55","spanId":"167055f9c7963f0d","operation":"submit-work10","startTimeMicroSeconds":1567085337014590,"durationNanoSeconds":23766,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"f86e50abc238bd55","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014578,"durationNanoSeconds":57526,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"1a6b78f7c3e18784","spanId":"d20e6599d63b406b","operation":"submit-work11","startTimeMicroSeconds":1567085337014656,"durationNanoSeconds":93000,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"0bbec5c5cfd13bf3","spanId":"6a0b7a2ebf7a0751","operation":"submit-work12","startTimeMicroSeconds":1567085337014708,"durationNanoSeconds":60551,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"1a6b78f7c3e18784","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014644,"durationNanoSeconds":125485,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"0bbec5c5cfd13bf3","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014696,"durationNanoSeconds":93112,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a1b8729f6a0996a","spanId":"53741fd9525bbd80","operation":"submit-work13","startTimeMicroSeconds":1567085337014841,"durationNanoSeconds":14399,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"6a1b8729f6a0996a","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014829,"durationNanoSeconds":44206,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"5ba3f51290af73a7","spanId":"792bb7e24a2df21c","operation":"submit-work14","startTimeMicroSeconds":1567085337014866,"durationNanoSeconds":14779,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"5ba3f51290af73a7","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014848,"durationNanoSeconds":52153,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"71b6deee963a87f5","spanId":"c52c4254ea7f3e7a","operation":"submit-work15","startTimeMicroSeconds":1567085337014942,"durationNanoSeconds":17763,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"71b6deee963a87f5","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014931,"durationNanoSeconds":49221,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"4030170f00d26fba","spanId":"6a084ae4b1b83c36","operation":"submit-work16","startTimeMicroSeconds":1567085337014969,"durationNanoSeconds":15052,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"4030170f00d26fba","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337014958,"durationNanoSeconds":43944,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"62a282a696cddfc5","spanId":"c6f1b837cd6b5fdd","operation":"submit-work17","startTimeMicroSeconds":1567085337015049,"durationNanoSeconds":16336,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"62a282a696cddfc5","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337015038,"durationNanoSeconds":45468,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"ff3733fc34b11ec5","spanId":"284574ff62d61d73","operation":"submit-work18","startTimeMicroSeconds":1567085337015072,"durationNanoSeconds":13919,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"ff3733fc34b11ec5","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337015061,"durationNanoSeconds":42458,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"4ca9f9d4b5b3e81e","spanId":"d896ee13b3fab14e","operation":"submit-work19","startTimeMicroSeconds":1567085337015154,"durationNanoSeconds":23203,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"4ca9f9d4b5b3e81e","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337015140,"durationNanoSeconds":55663,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"e1ba907d1fe2eec5","operation":"processingwork0","startTimeMicroSeconds":1567085337015824,"durationNanoSeconds":10356179,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"83997f6b6ed59275","operation":"processingwork1","startTimeMicroSeconds":1567085337026307,"durationNanoSeconds":11306856,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"cc9d9baa09c2ec84","operation":"processingwork10","startTimeMicroSeconds":1567085337037719,"durationNanoSeconds":12552373,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"022409d797133826","operation":"processingwork11","startTimeMicroSeconds":1567085337050363,"durationNanoSeconds":12496281,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"627c1d8a807b017d","operation":"processingwork12","startTimeMicroSeconds":1567085337062934,"durationNanoSeconds":11004739,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"1cc5c7a58c073a67","operation":"processingwork13","startTimeMicroSeconds":1567085337074031,"durationNanoSeconds":12593612,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"f8cf41730abfbf59","operation":"processingwork14","startTimeMicroSeconds":1567085337086771,"durationNanoSeconds":11305291,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"8880a760d2862740","operation":"processingwork15","startTimeMicroSeconds":1567085337098191,"durationNanoSeconds":11210129,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"6eedb91f5d7dc477","operation":"processingwork16","startTimeMicroSeconds":1567085337109542,"durationNanoSeconds":12596060,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"57dcc75644d32370","operation":"processingwork17","startTimeMicroSeconds":1567085337122282,"durationNanoSeconds":10576953,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"adab6f768a2dd073","operation":"processingwork18","startTimeMicroSeconds":1567085337133037,"durationNanoSeconds":12643346,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"ae1c6783f968e50b","operation":"processingwork19","startTimeMicroSeconds":1567085337145859,"durationNanoSeconds":11125043,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"31cc070a4fc2abf3","operation":"processingwork2","startTimeMicroSeconds":1567085337157131,"durationNanoSeconds":12387835,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"beb8ec56a176c8d3","operation":"processingwork3","startTimeMicroSeconds":1567085337169668,"durationNanoSeconds":10322091,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"17161680dd5e788d","operation":"processingwork4","startTimeMicroSeconds":1567085337180137,"durationNanoSeconds":11613708,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"4a15773e319efaf1","operation":"processingwork5","startTimeMicroSeconds":1567085337191860,"durationNanoSeconds":12609148,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"f63847f2296067b9","operation":"processingwork6","startTimeMicroSeconds":1567085337204625,"durationNanoSeconds":12596208,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"ae7b4b67ad58b96c","operation":"processingwork7","startTimeMicroSeconds":1567085337217371,"durationNanoSeconds":12610069,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"916d088aa2e5a9a9","operation":"processingwork8","startTimeMicroSeconds":1567085337230123,"durationNanoSeconds":12613471,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"239959a506e900e3","spanId":"314b00c6b3dfb12b","operation":"processingwork9","startTimeMicroSeconds":1567085337242867,"durationNanoSeconds":12614361,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":"6a3424d45e4ffa2b","spanId":"239959a506e900e3","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085337015777,"durationNanoSeconds":239853736,"metadata":{}} -{"traceId":"7fc65698fb689a79","parentSpanId":null,"spanId":"6a3424d45e4ffa2b","operation":"submit","startTimeMicroSeconds":1567085337011919,"durationNanoSeconds":243813430,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log deleted file mode 100644 index 0c60f1e67..000000000 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log +++ /dev/null @@ -1,5 +0,0 @@ -{"traceId":"a6640e2cda24d499","parentSpanId":null,"spanId":"4d5de768dffc371a","operation":"root","startTimeMicroSeconds":1567085335148594,"durationNanoSeconds":7302262,"metadata":{}} -{"traceId":"a6640e2cda24d499","parentSpanId":"aa42b81f0b669f45","spanId":"584c485e1abe0e8d","operation":"first","startTimeMicroSeconds":1567085335152009,"durationNanoSeconds":100990393,"metadata":{}} -{"traceId":"a6640e2cda24d499","parentSpanId":"4d5de768dffc371a","spanId":"aa42b81f0b669f45","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085335151043,"durationNanoSeconds":102154732,"metadata":{}} -{"traceId":"a6640e2cda24d499","parentSpanId":"f1c617aeb0e16805","spanId":"5a47668355b72dd5","operation":"second","startTimeMicroSeconds":1567085335253301,"durationNanoSeconds":100526216,"metadata":{}} -{"traceId":"a6640e2cda24d499","parentSpanId":"aa42b81f0b669f45","spanId":"f1c617aeb0e16805","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567085335253276,"durationNanoSeconds":100633142,"metadata":{}} diff --git a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java index abcdba77c..5b1d42227 100644 --- a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java +++ b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java @@ -42,6 +42,7 @@ private CrossThreadSpan(String traceId, boolean observable, AtomicReference Date: Thu, 29 Aug 2019 19:20:20 +0100 Subject: [PATCH 10/24] TracingDemos all work --- .../com/palantir/tracing/TracingDemos.java | 128 ++++++++++++------ .../tracing/TracingDemos/async_future.log | 44 +++--- .../backoffs_on_a_scheduled_executor.log | 5 + .../TracingDemos/handles_async_spans.log | 40 ++++++ .../multi_producer_single_consumer.log | 40 ++++++ .../TracingDemos/transformed_future.log | 3 + .../com/palantir/tracing/CrossThreadSpan.java | 47 +++++-- 7 files changed, 234 insertions(+), 73 deletions(-) create mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log create mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log create mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log create mode 100644 tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index 5a892cb50..9de69323b 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -23,10 +23,10 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; +import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import java.util.concurrent.PriorityBlockingQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.stream.IntStream; @@ -53,7 +53,7 @@ void handles_async_spans() throws Exception { CrossThreadSpan crossThread = CrossThreadSpan.startSpan("task-queue-time" + i); executorService.submit(() -> { - try (CloseableTracer t = crossThread.completeAndStartSpan("task" + i)) { + try (CloseableTracer t = crossThread.completeAndCrossThread("task" + i)) { emit_nested_spans(); countDownLatch.countDown(); } @@ -76,13 +76,13 @@ void async_future() throws InterruptedException { IntStream.range(0, numCallbacks).forEach(i -> { - Tracer.clearCurrentTrace(); + Tracer.clearCurrentTrace(); // just pretending all these tasks are on a fresh request CrossThreadSpan span = CrossThreadSpan.startSpan("callback-pending" + i + " (cross thread span)"); Futures.addCallback(future, new FutureCallback() { @Override public void onSuccess(@Nullable Object result) { - try (CloseableTracer t = span.completeAndStartSpan("success" + i)) { + try (CloseableTracer t = span.completeAndCrossThread("success" + i)) { Thread.sleep(10); latch.countDown(); } catch (InterruptedException e) { @@ -113,28 +113,42 @@ public void onFailure(Throwable throwable) { void multi_producer_single_consumer() throws InterruptedException { int numProducers = 2; int numElem = 20; - PriorityBlockingQueue work = new PriorityBlockingQueue<>(); + ArrayBlockingQueue work = new ArrayBlockingQueue(numElem); CountDownLatch submitLatch = new CountDownLatch(numElem); CountDownLatch consumeLatch = new CountDownLatch(numElem); - ExecutorService producerExecutorService = Tracers.wrap(Executors.newFixedThreadPool(numProducers)); - ExecutorService consumerExecutorService = Tracers.wrap(Executors.newFixedThreadPool(1)); + ExecutorService producerExecutorService = Executors.newFixedThreadPool(numProducers); + ExecutorService consumerExecutorService = Executors.newFixedThreadPool(1); try (CloseableTracer submit = CloseableTracer.startSpan("submit")) { IntStream.range(0, numElem).forEach(i -> { + + Tracer.clearCurrentTrace(); // just pretending all these tasks are on a fresh request + + CrossThreadSpan span = CrossThreadSpan.startSpan("callback-pending" + i + " (cross thread span)"); producerExecutorService.submit(() -> { - try (CloseableTracer closeableTracer = CloseableTracer.startSpan("submit-work" + i)) { - work.add("work" + i); - submitLatch.countDown(); - } + work.add(new QueuedWork() { + @Override + public String name() { + return "work" + i; + } + + @Override + public CrossThreadSpan span() { + return span; + } + }); + submitLatch.countDown(); }); }); assertThat(submitLatch.await(10, TimeUnit.SECONDS)).isTrue(); consumerExecutorService.submit(() -> { for (int i = 0; i < numElem; i++) { - String poll = work.take(); - sleep(10, "processing" + poll); + QueuedWork queuedWork = work.take(); + try (CloseableTracer processing = queuedWork.span().completeAndCrossThread("consume" + queuedWork.name())) { + Thread.sleep(10); + } consumeLatch.countDown(); } return null; @@ -144,35 +158,44 @@ void multi_producer_single_consumer() throws InterruptedException { } @Test - @TestTracing(snapshot = true, layout = LayoutStrategy.SPLIT_BY_TRACE) + @TestTracing(snapshot = true, layout = LayoutStrategy.CHRONOLOGICAL) void backoffs_on_a_scheduled_executor() throws InterruptedException { ScheduledExecutorService executor = Tracers.wrap(Executors.newScheduledThreadPool(2)); CountDownLatch latch = new CountDownLatch(1); - try (CloseableTracer t = CloseableTracer.startSpan("some-request")) { - executor.execute(() -> { - // first attempt at a network call - sleep(100, "first attempt"); + // THIS PATTERN IS GROSS, MAYBE DON"T NEED TO SUPPORT IT? - executor.schedule(() -> { - // attempt number 2 - sleep(100, "second attempt"); + CrossThreadSpan overall = CrossThreadSpan.startSpan("overall request"); + executor.execute(() -> { - executor.schedule(() -> { - // attempt number 3 - sleep(100, "final attempt"); + sleep(100, "first network call (will fail)"); - latch.countDown(); - }, 100, TimeUnit.MILLISECONDS); + CrossThreadSpan backoff1 = overall.crossThreadChild("backoff for 20ms"); + executor.schedule(() -> { + try (CloseableTracer attempt2 = backoff1.completeAndCrossThread("secondAttempt")) { - sleep(200, "second tidying"); - }, 100, TimeUnit.MILLISECONDS); + Thread.sleep(100); + overall.complete(); + latch.countDown(); - sleep(200, "first tidying"); - }); + CrossThreadSpan backoff2 = overall.crossThreadChild("2nd backoff for 40ms"); + executor.schedule(() -> { + try (CloseableTracer finalAttempt = backoff2.completeAndCrossThread("final attempt")) { + Thread.sleep(100); + + overall.complete(); + latch.countDown(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }, 100, TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }, 20, TimeUnit.MILLISECONDS); + }); - assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); - } + assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); MoreExecutors.shutdownAndAwaitTermination(executor, 1, TimeUnit.SECONDS); } @@ -182,24 +205,42 @@ void backoffs_on_a_scheduled_executor() throws InterruptedException { @SuppressWarnings("CheckReturnValue") void transformed_future() throws InterruptedException { SettableFuture future = SettableFuture.create(); - ScheduledExecutorService executor = Tracers.wrap(Executors.newScheduledThreadPool(2)); + ScheduledExecutorService executor = Executors.newScheduledThreadPool(2); CountDownLatch latch = new CountDownLatch(1); + CrossThreadSpan foo = CrossThreadSpan.startSpan("foo"); FluentFuture.from(future) .transform(result -> { - sleep(100, "first"); - return result; + try (CloseableTracer t = foo.threadLocalChild("first transform")) { + Thread.sleep(1000); + return result; + } catch (InterruptedException e) { + throw new RuntimeException(e); + } }, executor) .transform(result -> { - sleep(100, "second"); - latch.countDown(); - return result; + try (CloseableTracer t = foo.threadLocalChild("second transform")) { + Thread.sleep(1000); + latch.countDown(); + return result; + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }, executor) + .addCallback(new FutureCallback() { + @Override + public void onSuccess(@Nullable Object result) { + foo.complete(); + } + + @Override + public void onFailure(Throwable t) { + foo.complete(); + } }, executor); executor.submit(() -> { - try (CloseableTracer root = CloseableTracer.startSpan("root")) { - future.set(null); - } + future.set(null); }); assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); @@ -232,4 +273,9 @@ private static void emit_nested_spans() { } } } + + interface QueuedWork { + String name(); + CrossThreadSpan span(); + } } diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log index e84dc65a7..c9ce5d06e 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log @@ -1,22 +1,22 @@ -{"traceId":"de8d28959f7c877c","parentSpanId":null,"spanId":"509461891c57c125","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567094727576000,"durationNanoSeconds":57254953,"metadata":{}} -{"traceId":"69185e9a04ed31ec","parentSpanId":"5bbd58faeb6c4e09","spanId":"f43ef6d444ff35ad","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567094727629000,"durationNanoSeconds":5479355,"metadata":{}} -{"traceId":"69185e9a04ed31ec","parentSpanId":null,"spanId":"5bbd58faeb6c4e09","operation":"bbb","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":49664644,"metadata":{}} -{"traceId":"3795c7de69501938","parentSpanId":null,"spanId":"bb0c8a0c342ee4b6","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567094727583000,"durationNanoSeconds":56348237,"metadata":{}} -{"traceId":"de8d28959f7c877c","parentSpanId":null,"spanId":"24658fbdb338e1f8","operation":"success0","startTimeMicroSeconds":1567094727640000,"durationNanoSeconds":10303267,"metadata":{}} -{"traceId":"c445c5d3f3772b7d","parentSpanId":null,"spanId":"3d0671a6fa0b2c26","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":66633078,"metadata":{}} -{"traceId":"3795c7de69501938","parentSpanId":null,"spanId":"40156d68bfd20c37","operation":"success1","startTimeMicroSeconds":1567094727640000,"durationNanoSeconds":10293078,"metadata":{}} -{"traceId":"09a6e231e07a9b37","parentSpanId":null,"spanId":"592867cbac8299d9","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":66719166,"metadata":{}} -{"traceId":"09a6e231e07a9b37","parentSpanId":null,"spanId":"bb4d063784c10414","operation":"success3","startTimeMicroSeconds":1567094727650000,"durationNanoSeconds":10341413,"metadata":{}} -{"traceId":"a5f16aef9890211b","parentSpanId":null,"spanId":"30d0a616c706143b","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":77191270,"metadata":{}} -{"traceId":"c445c5d3f3772b7d","parentSpanId":null,"spanId":"3b81d8c59609a81f","operation":"success2","startTimeMicroSeconds":1567094727650000,"durationNanoSeconds":12174431,"metadata":{}} -{"traceId":"52bbebfa9c27c337","parentSpanId":null,"spanId":"198bb43063bdbc9f","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":78904924,"metadata":{}} -{"traceId":"a5f16aef9890211b","parentSpanId":null,"spanId":"5e9cdb857f591bc9","operation":"success4","startTimeMicroSeconds":1567094727661000,"durationNanoSeconds":10096043,"metadata":{}} -{"traceId":"a12b75d7cd365210","parentSpanId":null,"spanId":"80cd29287353778a","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":87437124,"metadata":{}} -{"traceId":"52bbebfa9c27c337","parentSpanId":null,"spanId":"5e28c8c7f54d52c2","operation":"success5","startTimeMicroSeconds":1567094727663000,"durationNanoSeconds":10080740,"metadata":{}} -{"traceId":"bd6707b8eaa618cf","parentSpanId":null,"spanId":"fa6b20874912cf86","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":89062721,"metadata":{}} -{"traceId":"a12b75d7cd365210","parentSpanId":null,"spanId":"549f83e62e9198ef","operation":"success6","startTimeMicroSeconds":1567094727671000,"durationNanoSeconds":10170135,"metadata":{}} -{"traceId":"af3826f51b080683","parentSpanId":null,"spanId":"2cfbe57fe34d07a6","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":97677854,"metadata":{}} -{"traceId":"bd6707b8eaa618cf","parentSpanId":null,"spanId":"a3325e9d490253e8","operation":"success7","startTimeMicroSeconds":1567094727673000,"durationNanoSeconds":10098145,"metadata":{}} -{"traceId":"69185e9a04ed31ec","parentSpanId":null,"spanId":"29e4c5bdd8f874fe","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567094727584000,"durationNanoSeconds":99191796,"metadata":{}} -{"traceId":"af3826f51b080683","parentSpanId":null,"spanId":"fc4d9c882198d274","operation":"success8","startTimeMicroSeconds":1567094727681000,"durationNanoSeconds":10212348,"metadata":{}} -{"traceId":"69185e9a04ed31ec","parentSpanId":null,"spanId":"b54c20675f07bc9a","operation":"success9","startTimeMicroSeconds":1567094727683000,"durationNanoSeconds":11201594,"metadata":{}} +{"traceId":"91b36878f845bbc9","parentSpanId":null,"spanId":"c0e2689c5e79d8d8","operation":"bbb","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":675331,"metadata":{}} +{"traceId":"9a656c782802da91","parentSpanId":null,"spanId":"b1c9b88e39cf0bbf","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567102685018000,"durationNanoSeconds":2114020,"metadata":{}} +{"traceId":"91b36878f845bbc9","parentSpanId":"c0e2689c5e79d8d8","spanId":"c024a6e402e1db76","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":300201,"metadata":{}} +{"traceId":"3d25bc3635943bcb","parentSpanId":null,"spanId":"b9d3bdc30cc9c960","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567102685018000,"durationNanoSeconds":1438169,"metadata":{}} +{"traceId":"3d25bc3635943bcb","parentSpanId":null,"spanId":"56387e10e322db11","operation":"success1","startTimeMicroSeconds":1567102685020000,"durationNanoSeconds":10533965,"metadata":{}} +{"traceId":"d596707115877e11","parentSpanId":null,"spanId":"053f66d4b5236f2c","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567102685018000,"durationNanoSeconds":12099031,"metadata":{}} +{"traceId":"9a656c782802da91","parentSpanId":null,"spanId":"1b9efcddbfd92b5d","operation":"success0","startTimeMicroSeconds":1567102685020000,"durationNanoSeconds":10838043,"metadata":{}} +{"traceId":"e5d414d3b0c5126c","parentSpanId":null,"spanId":"135397b93337e89c","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567102685018000,"durationNanoSeconds":12271944,"metadata":{}} +{"traceId":"d596707115877e11","parentSpanId":null,"spanId":"2498e75834e3ee2a","operation":"success2","startTimeMicroSeconds":1567102685031000,"durationNanoSeconds":10110054,"metadata":{}} +{"traceId":"6149c22232726f6d","parentSpanId":null,"spanId":"0d1c874f94374a69","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567102685018000,"durationNanoSeconds":22303291,"metadata":{}} +{"traceId":"e5d414d3b0c5126c","parentSpanId":null,"spanId":"d7a64c339abed0dc","operation":"success3","startTimeMicroSeconds":1567102685031000,"durationNanoSeconds":10597867,"metadata":{}} +{"traceId":"12070ec4fcbf7e0a","parentSpanId":null,"spanId":"7af8c683d83779f6","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":22961147,"metadata":{}} +{"traceId":"6149c22232726f6d","parentSpanId":null,"spanId":"f148dfb9e4e51482","operation":"success4","startTimeMicroSeconds":1567102685041000,"durationNanoSeconds":10148310,"metadata":{}} +{"traceId":"e698f8f5a9e36ae2","parentSpanId":null,"spanId":"8c4eceff49d0358f","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":32561428,"metadata":{}} +{"traceId":"12070ec4fcbf7e0a","parentSpanId":null,"spanId":"730f1d9b3f920d8c","operation":"success5","startTimeMicroSeconds":1567102685042000,"durationNanoSeconds":10396243,"metadata":{}} +{"traceId":"53a5e171ed4065b6","parentSpanId":null,"spanId":"0f8853d89dea1a29","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":33411373,"metadata":{}} +{"traceId":"e698f8f5a9e36ae2","parentSpanId":null,"spanId":"94912484223eb948","operation":"success6","startTimeMicroSeconds":1567102685051000,"durationNanoSeconds":10130693,"metadata":{}} +{"traceId":"843a4135426b0d02","parentSpanId":null,"spanId":"765e72b9db88c8fa","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":42760858,"metadata":{}} +{"traceId":"53a5e171ed4065b6","parentSpanId":null,"spanId":"823e9544b64bf067","operation":"success7","startTimeMicroSeconds":1567102685052000,"durationNanoSeconds":10096860,"metadata":{}} +{"traceId":"91b36878f845bbc9","parentSpanId":null,"spanId":"8802b9619b75b294","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":43578094,"metadata":{}} +{"traceId":"843a4135426b0d02","parentSpanId":null,"spanId":"c34690a654496aa0","operation":"success8","startTimeMicroSeconds":1567102685061000,"durationNanoSeconds":10271050,"metadata":{}} +{"traceId":"91b36878f845bbc9","parentSpanId":null,"spanId":"dcc757ba7a64c9c2","operation":"success9","startTimeMicroSeconds":1567102685062000,"durationNanoSeconds":10065826,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log new file mode 100644 index 000000000..75bff64c6 --- /dev/null +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log @@ -0,0 +1,5 @@ +{"traceId":"c66fff18187a63b1","parentSpanId":"04395e863fdc3265","spanId":"0a42bb926a1056a4","operation":"first network call (will fail)","startTimeMicroSeconds":1567102684481000,"durationNanoSeconds":100635705,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":null,"spanId":"04395e863fdc3265","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567102684481000,"durationNanoSeconds":101570999,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":"02b145954a431c93","spanId":"59a9d3d59113baea","operation":"backoff for 20ms","startTimeMicroSeconds":1567102684582000,"durationNanoSeconds":22877955,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":null,"spanId":"02b145954a431c93","operation":"overall request","startTimeMicroSeconds":1567102684477000,"durationNanoSeconds":228396917,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":null,"spanId":"b5b1119b14faf67c","operation":"secondAttempt","startTimeMicroSeconds":1567102684605000,"durationNanoSeconds":101774523,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log new file mode 100644 index 000000000..b7d9c1a8f --- /dev/null +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log @@ -0,0 +1,40 @@ +{"traceId":"ad324fb5c0500f94","parentSpanId":null,"spanId":"6f52ec5171cea24e","operation":"task-queue-time0","startTimeMicroSeconds":1567102683793000,"durationNanoSeconds":1632778,"metadata":{}} +{"traceId":"f843c675b3e02d3a","parentSpanId":null,"spanId":"2c16e01c2118a4c6","operation":"task-queue-time1","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":193878,"metadata":{}} +{"traceId":"ad324fb5c0500f94","parentSpanId":"4726cdf3f705eb90","spanId":"2fa6257fa5315118","operation":"sleep 100","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":100054367,"metadata":{}} +{"traceId":"f843c675b3e02d3a","parentSpanId":"3fcd563f7373036a","spanId":"7cd6a8585d6fbdd4","operation":"sleep 100","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":100084988,"metadata":{}} +{"traceId":"f843c675b3e02d3a","parentSpanId":"e955c1c59a2740e2","spanId":"80754256f73b5b51","operation":"sleep 90","startTimeMicroSeconds":1567102683895000,"durationNanoSeconds":90384093,"metadata":{}} +{"traceId":"ad324fb5c0500f94","parentSpanId":"d0f4526dfdfb5078","spanId":"2bec94e2628f1e6f","operation":"sleep 90","startTimeMicroSeconds":1567102683895000,"durationNanoSeconds":90439456,"metadata":{}} +{"traceId":"f843c675b3e02d3a","parentSpanId":"3fcd563f7373036a","spanId":"e955c1c59a2740e2","operation":"nested","startTimeMicroSeconds":1567102683895000,"durationNanoSeconds":90433540,"metadata":{}} +{"traceId":"ad324fb5c0500f94","parentSpanId":"4726cdf3f705eb90","spanId":"d0f4526dfdfb5078","operation":"nested","startTimeMicroSeconds":1567102683895000,"durationNanoSeconds":90502773,"metadata":{}} +{"traceId":"ad324fb5c0500f94","parentSpanId":"4726cdf3f705eb90","spanId":"0899a39e9d1070b9","operation":"sleep 10","startTimeMicroSeconds":1567102683986000,"durationNanoSeconds":10169777,"metadata":{}} +{"traceId":"ad324fb5c0500f94","parentSpanId":"a5c7be83d6c2af06","spanId":"4726cdf3f705eb90","operation":"first","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":200902858,"metadata":{}} +{"traceId":"f843c675b3e02d3a","parentSpanId":"3fcd563f7373036a","spanId":"cb6bef4920066fd5","operation":"sleep 10","startTimeMicroSeconds":1567102683986000,"durationNanoSeconds":11182445,"metadata":{}} +{"traceId":"f843c675b3e02d3a","parentSpanId":"fb012e56db70c05a","spanId":"3fcd563f7373036a","operation":"first","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":201784637,"metadata":{}} +{"traceId":"ad324fb5c0500f94","parentSpanId":"9e838893376e6745","spanId":"335003b9069ff2ce","operation":"sleep 100","startTimeMicroSeconds":1567102683996000,"durationNanoSeconds":100079457,"metadata":{}} +{"traceId":"ad324fb5c0500f94","parentSpanId":"a5c7be83d6c2af06","spanId":"9e838893376e6745","operation":"second","startTimeMicroSeconds":1567102683996000,"durationNanoSeconds":100137061,"metadata":{}} +{"traceId":"ad324fb5c0500f94","parentSpanId":"36e1b9f3bbc74741","spanId":"a5c7be83d6c2af06","operation":"emit_nested_spans","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":301114879,"metadata":{}} +{"traceId":"ad324fb5c0500f94","parentSpanId":null,"spanId":"36e1b9f3bbc74741","operation":"task0","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":301183828,"metadata":{}} +{"traceId":"3d99d8e89c5d3ec8","parentSpanId":null,"spanId":"e34f0bc5e49d1fba","operation":"task-queue-time2","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":301225344,"metadata":{}} +{"traceId":"f843c675b3e02d3a","parentSpanId":"97ce07b0a3829800","spanId":"82e4346b1ca41fb8","operation":"sleep 100","startTimeMicroSeconds":1567102683997000,"durationNanoSeconds":100046278,"metadata":{}} +{"traceId":"f843c675b3e02d3a","parentSpanId":"fb012e56db70c05a","spanId":"97ce07b0a3829800","operation":"second","startTimeMicroSeconds":1567102683997000,"durationNanoSeconds":100079177,"metadata":{}} +{"traceId":"f843c675b3e02d3a","parentSpanId":"8e05cd1c5a7ed1d1","spanId":"fb012e56db70c05a","operation":"emit_nested_spans","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":301896776,"metadata":{}} +{"traceId":"f843c675b3e02d3a","parentSpanId":null,"spanId":"8e05cd1c5a7ed1d1","operation":"task1","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":301926932,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":null,"spanId":"6e4afed7776407e1","operation":"task-queue-time3","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":301966617,"metadata":{}} +{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"7f5be0888cf39813","spanId":"1067655b6e5f7b36","operation":"sleep 100","startTimeMicroSeconds":1567102684096000,"durationNanoSeconds":100154684,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":"08818409f605bc2c","spanId":"13cf17582136d2a3","operation":"sleep 100","startTimeMicroSeconds":1567102684097000,"durationNanoSeconds":100102162,"metadata":{}} +{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"868118f1d9ac7644","spanId":"3378125a15c102c0","operation":"sleep 90","startTimeMicroSeconds":1567102684197000,"durationNanoSeconds":90376767,"metadata":{}} +{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"7f5be0888cf39813","spanId":"868118f1d9ac7644","operation":"nested","startTimeMicroSeconds":1567102684197000,"durationNanoSeconds":90457263,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":"ec82eb19458893ea","spanId":"12acefa676871fb3","operation":"sleep 90","startTimeMicroSeconds":1567102684197000,"durationNanoSeconds":93846853,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":"08818409f605bc2c","spanId":"ec82eb19458893ea","operation":"nested","startTimeMicroSeconds":1567102684197000,"durationNanoSeconds":93935069,"metadata":{}} +{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"7f5be0888cf39813","spanId":"1345ed4a7e3945b9","operation":"sleep 10","startTimeMicroSeconds":1567102684287000,"durationNanoSeconds":10195375,"metadata":{}} +{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"7c6d52792f64397e","spanId":"7f5be0888cf39813","operation":"first","startTimeMicroSeconds":1567102684096000,"durationNanoSeconds":200948610,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":"08818409f605bc2c","spanId":"2fe1e7c0cdd2365c","operation":"sleep 10","startTimeMicroSeconds":1567102684292000,"durationNanoSeconds":10315285,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":"06e4ca7791345248","spanId":"08818409f605bc2c","operation":"first","startTimeMicroSeconds":1567102684097000,"durationNanoSeconds":204520546,"metadata":{}} +{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"38f39b6a62f0de26","spanId":"7ed2e7d7327e2d71","operation":"sleep 100","startTimeMicroSeconds":1567102684298000,"durationNanoSeconds":100647137,"metadata":{}} +{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"7c6d52792f64397e","spanId":"38f39b6a62f0de26","operation":"second","startTimeMicroSeconds":1567102684297000,"durationNanoSeconds":100754832,"metadata":{}} +{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"052dc7438f2c12d6","spanId":"7c6d52792f64397e","operation":"emit_nested_spans","startTimeMicroSeconds":1567102684096000,"durationNanoSeconds":301763641,"metadata":{}} +{"traceId":"3d99d8e89c5d3ec8","parentSpanId":null,"spanId":"052dc7438f2c12d6","operation":"task2","startTimeMicroSeconds":1567102684096000,"durationNanoSeconds":301816311,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":"f5b2864f16c35a6e","spanId":"06ff2fd4ff6b55b5","operation":"sleep 100","startTimeMicroSeconds":1567102684302000,"durationNanoSeconds":104189373,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":"06e4ca7791345248","spanId":"f5b2864f16c35a6e","operation":"second","startTimeMicroSeconds":1567102684302000,"durationNanoSeconds":104238051,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":"c3d39753f209917c","spanId":"06e4ca7791345248","operation":"emit_nested_spans","startTimeMicroSeconds":1567102684097000,"durationNanoSeconds":308809137,"metadata":{}} +{"traceId":"c66fff18187a63b1","parentSpanId":null,"spanId":"c3d39753f209917c","operation":"task3","startTimeMicroSeconds":1567102684097000,"durationNanoSeconds":308876925,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log new file mode 100644 index 000000000..437a973cb --- /dev/null +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log @@ -0,0 +1,40 @@ +{"traceId":"759b6a55179c6dff","parentSpanId":null,"spanId":"ad5c1d49fd2b19b0","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567102684718000,"durationNanoSeconds":12480833,"metadata":{}} +{"traceId":"759b6a55179c6dff","parentSpanId":null,"spanId":"88cbc811e8faa23f","operation":"consumework1","startTimeMicroSeconds":1567102684731000,"durationNanoSeconds":10773174,"metadata":{}} +{"traceId":"8658490002595117","parentSpanId":null,"spanId":"353199a692f5a72e","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567102684717000,"durationNanoSeconds":24695319,"metadata":{}} +{"traceId":"8658490002595117","parentSpanId":null,"spanId":"c13fbd965d1d0ed8","operation":"consumework0","startTimeMicroSeconds":1567102684742000,"durationNanoSeconds":12470191,"metadata":{}} +{"traceId":"abaecdc315e10153","parentSpanId":null,"spanId":"657f525c983761f3","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":25109530,"metadata":{}} +{"traceId":"abaecdc315e10153","parentSpanId":null,"spanId":"c7c1b728417494ae","operation":"consumework2","startTimeMicroSeconds":1567102684754000,"durationNanoSeconds":10380755,"metadata":{}} +{"traceId":"d0a369955bbf977c","parentSpanId":null,"spanId":"6dd2bd3296aaa02d","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":35407148,"metadata":{}} +{"traceId":"d0a369955bbf977c","parentSpanId":null,"spanId":"9ed73cadbf71d51a","operation":"consumework3","startTimeMicroSeconds":1567102684765000,"durationNanoSeconds":10072510,"metadata":{}} +{"traceId":"ebe05f92a7b1b012","parentSpanId":null,"spanId":"f027538f7141849a","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":45533379,"metadata":{}} +{"traceId":"ebe05f92a7b1b012","parentSpanId":null,"spanId":"87c8368dfb8bf889","operation":"consumework4","startTimeMicroSeconds":1567102684775000,"durationNanoSeconds":10808649,"metadata":{}} +{"traceId":"70897d976c264f4b","parentSpanId":null,"spanId":"2f0f1ed18a4b54f7","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":56433548,"metadata":{}} +{"traceId":"70897d976c264f4b","parentSpanId":null,"spanId":"5e4cd1f07b53c148","operation":"consumework5","startTimeMicroSeconds":1567102684786000,"durationNanoSeconds":10924341,"metadata":{}} +{"traceId":"94e0188a61966793","parentSpanId":null,"spanId":"2f5ab50cc51af422","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":67422312,"metadata":{}} +{"traceId":"94e0188a61966793","parentSpanId":null,"spanId":"1e7d1df74de7e553","operation":"consumework6","startTimeMicroSeconds":1567102684797000,"durationNanoSeconds":10838896,"metadata":{}} +{"traceId":"a0226cc61197e0a7","parentSpanId":null,"spanId":"c2296f085d09e5f6","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":78333256,"metadata":{}} +{"traceId":"a0226cc61197e0a7","parentSpanId":null,"spanId":"95890f03b2315a09","operation":"consumework7","startTimeMicroSeconds":1567102684808000,"durationNanoSeconds":10373527,"metadata":{}} +{"traceId":"62f648bd563148d1","parentSpanId":null,"spanId":"ea9af408a5d5313a","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":88801000,"metadata":{}} +{"traceId":"62f648bd563148d1","parentSpanId":null,"spanId":"1b11087fd6b5bfba","operation":"consumework8","startTimeMicroSeconds":1567102684818000,"durationNanoSeconds":10213451,"metadata":{}} +{"traceId":"2abde4c7a3f840b5","parentSpanId":null,"spanId":"bc68bfcb4d87072b","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":99099385,"metadata":{}} +{"traceId":"2abde4c7a3f840b5","parentSpanId":null,"spanId":"7035397aa71471d7","operation":"consumework9","startTimeMicroSeconds":1567102684829000,"durationNanoSeconds":10138186,"metadata":{}} +{"traceId":"6617b3cb1cd3b0b9","parentSpanId":null,"spanId":"915552676dc3fe96","operation":"callback-pending10 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":109313957,"metadata":{}} +{"traceId":"6617b3cb1cd3b0b9","parentSpanId":null,"spanId":"d820fa7167d48446","operation":"consumework10","startTimeMicroSeconds":1567102684839000,"durationNanoSeconds":10125604,"metadata":{}} +{"traceId":"942b328357556e61","parentSpanId":null,"spanId":"37b952cb1bf9589c","operation":"callback-pending11 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":119535991,"metadata":{}} +{"traceId":"942b328357556e61","parentSpanId":null,"spanId":"ae8f0fa9636544cf","operation":"consumework11","startTimeMicroSeconds":1567102684849000,"durationNanoSeconds":10175427,"metadata":{}} +{"traceId":"509edc6eac7394e4","parentSpanId":null,"spanId":"d01f920ccb2622f3","operation":"callback-pending12 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":129793169,"metadata":{}} +{"traceId":"509edc6eac7394e4","parentSpanId":null,"spanId":"d031b2bdf59e8b0b","operation":"consumework12","startTimeMicroSeconds":1567102684859000,"durationNanoSeconds":10124281,"metadata":{}} +{"traceId":"180d7d39451a0c6e","parentSpanId":null,"spanId":"6d407c0e14e3e62d","operation":"callback-pending13 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":140094447,"metadata":{}} +{"traceId":"180d7d39451a0c6e","parentSpanId":null,"spanId":"3d0c4fa36c7f14b3","operation":"consumework13","startTimeMicroSeconds":1567102684870000,"durationNanoSeconds":10098179,"metadata":{}} +{"traceId":"07851fcb37e05e4c","parentSpanId":null,"spanId":"607637ab4e6215d0","operation":"callback-pending14 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":150263463,"metadata":{}} +{"traceId":"07851fcb37e05e4c","parentSpanId":null,"spanId":"55a04ede135a6841","operation":"consumework14","startTimeMicroSeconds":1567102684880000,"durationNanoSeconds":10071432,"metadata":{}} +{"traceId":"db9f9b496f6c7757","parentSpanId":null,"spanId":"6a3c45063331e34d","operation":"callback-pending15 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":160388877,"metadata":{}} +{"traceId":"db9f9b496f6c7757","parentSpanId":null,"spanId":"94c3f1434be630b9","operation":"consumework15","startTimeMicroSeconds":1567102684890000,"durationNanoSeconds":10116546,"metadata":{}} +{"traceId":"ab328321bc4aced0","parentSpanId":null,"spanId":"c34f37cd50e710c1","operation":"callback-pending16 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":170554956,"metadata":{}} +{"traceId":"ab328321bc4aced0","parentSpanId":null,"spanId":"da01de16e2dc4937","operation":"consumework16","startTimeMicroSeconds":1567102684900000,"durationNanoSeconds":10086104,"metadata":{}} +{"traceId":"570548765927a6ea","parentSpanId":null,"spanId":"3f96ddd894281ef7","operation":"callback-pending18 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":180673691,"metadata":{}} +{"traceId":"570548765927a6ea","parentSpanId":null,"spanId":"5f278833d8c38f04","operation":"consumework18","startTimeMicroSeconds":1567102684910000,"durationNanoSeconds":10186746,"metadata":{}} +{"traceId":"7ceb6fe404082b1f","parentSpanId":null,"spanId":"2191a3d7048e90fb","operation":"callback-pending17 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":191001526,"metadata":{}} +{"traceId":"7ceb6fe404082b1f","parentSpanId":null,"spanId":"5534ed5381d64935","operation":"consumework17","startTimeMicroSeconds":1567102684921000,"durationNanoSeconds":10109223,"metadata":{}} +{"traceId":"6ebf0b73b96ba66f","parentSpanId":null,"spanId":"0c2ca46c0b74df15","operation":"callback-pending19 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":201178974,"metadata":{}} +{"traceId":"6ebf0b73b96ba66f","parentSpanId":null,"spanId":"8300eee5b1129cb5","operation":"consumework19","startTimeMicroSeconds":1567102684931000,"durationNanoSeconds":10185999,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log new file mode 100644 index 000000000..22b02a6de --- /dev/null +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log @@ -0,0 +1,3 @@ +{"traceId":"a007676208e2d067","parentSpanId":"0959c086883ad403","spanId":"39d375a494bde468","operation":"first transform","startTimeMicroSeconds":1567102681279000,"durationNanoSeconds":1007145058,"metadata":{}} +{"traceId":"a007676208e2d067","parentSpanId":"0959c086883ad403","spanId":"338d2eb636ac1aee","operation":"second transform","startTimeMicroSeconds":1567102682291000,"durationNanoSeconds":1003661801,"metadata":{}} +{"traceId":"a007676208e2d067","parentSpanId":null,"spanId":"0959c086883ad403","operation":"foo","startTimeMicroSeconds":1567102681263000,"durationNanoSeconds":2031912097,"metadata":{}} diff --git a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java index 5b1d42227..49ecd87e0 100644 --- a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java +++ b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java @@ -23,6 +23,7 @@ import com.palantir.tracing.api.Span; import com.palantir.tracing.api.SpanType; import java.util.Collections; +import java.util.Optional; import java.util.concurrent.atomic.AtomicReference; import javax.annotation.concurrent.ThreadSafe; @@ -59,11 +60,12 @@ public static CrossThreadSpan startSpan(String operation, SpanType spanType) { // : Tracer.createTrace(Observability.UNDECIDED, Tracers.randomId()); // TODO don't make this if we don't need it + Optional parentSpanId = trace.top().map(OpenSpan::getSpanId); OpenSpan openSpan = OpenSpan.of( operation, Tracers.randomId(), spanType, - trace.top().map(OpenSpan::getSpanId), + parentSpanId, trace.getOriginatingSpanId()); return new CrossThreadSpan(trace.getTraceId(), trace.isObservable(), new AtomicReference<>(openSpan)); @@ -84,9 +86,11 @@ public void complete() { @MustBeClosed public CloseableTracer completeAndStartSpan(String nextOperationName, SpanType spanType) { complete(); + return threadLocalSibling(nextOperationName, spanType); + } - // nuke the current thread locals - we may or may not be throwing away an existing trace with an - // unclosed OpenSpan. + @MustBeClosed + public CloseableTracer threadLocalSibling(String nextOperationName, SpanType spanType) { Tracer.clearCurrentTrace(); // a fresh copy doesn't have any of the old spans @@ -96,25 +100,48 @@ public CloseableTracer completeAndStartSpan(String nextOperationName, SpanType s return CloseableTracer.startSpan(nextOperationName, spanType); } + @MustBeClosed + public CloseableTracer threadLocalChild(String nextOperationName, SpanType spanType) { + Tracer.clearCurrentTrace(); + + Trace rehydratedTrace = Trace.of(observable, traceId); + // TODO(dfox): this is broken - we threadLocalSpans on a new threaed are not connected to the parent spanid + OpenSpan openSpan1 = openSpan.get(); + Preconditions.checkState(openSpan1 != null, "Can't create threadLocalChild after complete has been called"); + rehydratedTrace.push(openSpan1); // 🌶🌶🌶 someone could now call Tracer.fastCompleteSpan and emit this guy from + // multiple threads!!! + Tracer.setTrace(rehydratedTrace); + + return CloseableTracer.startSpan(nextOperationName, spanType); + } + @CheckReturnValue - public CrossThreadSpan startChildSpan(String operation, SpanType spanType) { + public CrossThreadSpan crossThreadChild(String operation, SpanType spanType) { OpenSpan openSpan1 = openSpan.get(); - Preconditions.checkState(openSpan1 != null, "Can't create startChildSpan after complete has been called"); + Preconditions.checkState(openSpan1 != null, "Can't create crossThreadChild after complete has been called"); OpenSpan openSpan = OpenSpan.of( - operation, Tracers.randomId(), spanType, - openSpan1.getParentSpanId(), openSpan1.getOriginatingSpanId()); + operation, + Tracers.randomId(), + spanType, + Optional.of(openSpan1.getSpanId()), + openSpan1.getOriginatingSpanId()); return new CrossThreadSpan(traceId, Tracer.isTraceObservable(), new AtomicReference<>(openSpan)); } @MustBeClosed - public CloseableTracer completeAndStartSpan(String nextOperationName) { + public CloseableTracer completeAndCrossThread(String nextOperationName) { return completeAndStartSpan(nextOperationName, SpanType.LOCAL); } @CheckReturnValue - public CrossThreadSpan startChildSpan(String operation) { - return startChildSpan(operation, SpanType.LOCAL); + public CrossThreadSpan crossThreadChild(String operation) { + return crossThreadChild(operation, SpanType.LOCAL); + } + + @MustBeClosed + public CloseableTracer threadLocalChild(String nextOperationName) { + return threadLocalChild(nextOperationName, SpanType.LOCAL); } } From d322009cc12a629af2b0dc2063f878205cec8c75 Mon Sep 17 00:00:00 2001 From: Dan Fox Date: Thu, 29 Aug 2019 19:52:51 +0100 Subject: [PATCH 11/24] World before rob --- .../com/palantir/tracing/TracingDemos.java | 38 ++++---- .../tracing/TracingDemos/async_future.log | 43 +++++---- .../backoffs_on_a_scheduled_executor.log | 8 +- .../TracingDemos/handles_async_spans.log | 80 ++++++++--------- .../multi_producer_single_consumer.log | 80 ++++++++--------- .../TracingDemos/transformed_future.log | 6 +- .../com/palantir/tracing/HtmlFormatter.java | 2 +- .../java/com/palantir/tracing/TimeBounds.java | 13 ++- .../com/palantir/tracing/CrossThreadSpan.java | 89 +++++++------------ 9 files changed, 166 insertions(+), 193 deletions(-) diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index 9de69323b..75d1de82d 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -53,7 +53,7 @@ void handles_async_spans() throws Exception { CrossThreadSpan crossThread = CrossThreadSpan.startSpan("task-queue-time" + i); executorService.submit(() -> { - try (CloseableTracer t = crossThread.completeAndCrossThread("task" + i)) { + try (CloseableTracer t = crossThread.threadLocalSibling("task" + i)) { emit_nested_spans(); countDownLatch.countDown(); } @@ -68,21 +68,25 @@ void handles_async_spans() throws Exception { void async_future() throws InterruptedException { int numThreads = 2; int numCallbacks = 10; - ExecutorService executorService = Tracers.wrap(Executors.newFixedThreadPool(numThreads)); + ExecutorService executorService = Executors.newFixedThreadPool(numThreads); final SettableFuture future = SettableFuture.create(); CountDownLatch latch = new CountDownLatch(numCallbacks); + // Tracer.startSpan() assertThat(Tracer.hasTraceId()).isFalse(); IntStream.range(0, numCallbacks).forEach(i -> { - Tracer.clearCurrentTrace(); // just pretending all these tasks are on a fresh request - + assertThat(Tracer.hasTraceId()).isFalse(); CrossThreadSpan span = CrossThreadSpan.startSpan("callback-pending" + i + " (cross thread span)"); + assertThat(Tracer.hasTraceId()).isFalse(); + Futures.addCallback(future, new FutureCallback() { @Override public void onSuccess(@Nullable Object result) { - try (CloseableTracer t = span.completeAndCrossThread("success" + i)) { + assertThat(Tracer.hasTraceId()).isFalse(); + + try (CloseableTracer t = span.threadLocalSibling("success" + i)) { Thread.sleep(10); latch.countDown(); } catch (InterruptedException e) { @@ -98,13 +102,14 @@ public void onFailure(Throwable throwable) { }, executorService); }); + assertThat(Tracer.hasTraceId()).isFalse(); + try (CloseableTracer root = CloseableTracer.startSpan("bbb")) { executorService.submit(() -> { future.set(null); }); } - assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); } @@ -146,7 +151,7 @@ public CrossThreadSpan span() { consumerExecutorService.submit(() -> { for (int i = 0; i < numElem; i++) { QueuedWork queuedWork = work.take(); - try (CloseableTracer processing = queuedWork.span().completeAndCrossThread("consume" + queuedWork.name())) { + try (CloseableTracer processing = queuedWork.span().threadLocalSibling("consume" + queuedWork.name())) { Thread.sleep(10); } consumeLatch.countDown(); @@ -172,23 +177,12 @@ void backoffs_on_a_scheduled_executor() throws InterruptedException { CrossThreadSpan backoff1 = overall.crossThreadChild("backoff for 20ms"); executor.schedule(() -> { - try (CloseableTracer attempt2 = backoff1.completeAndCrossThread("secondAttempt")) { + try (CloseableTracer attempt2 = backoff1.threadLocalSibling("secondAttempt")) { Thread.sleep(100); - overall.complete(); + overall.terminate(); latch.countDown(); - CrossThreadSpan backoff2 = overall.crossThreadChild("2nd backoff for 40ms"); - executor.schedule(() -> { - try (CloseableTracer finalAttempt = backoff2.completeAndCrossThread("final attempt")) { - Thread.sleep(100); - - overall.complete(); - latch.countDown(); - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - }, 100, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { throw new RuntimeException(e); } @@ -230,12 +224,12 @@ void transformed_future() throws InterruptedException { .addCallback(new FutureCallback() { @Override public void onSuccess(@Nullable Object result) { - foo.complete(); + foo.terminate(); } @Override public void onFailure(Throwable t) { - foo.complete(); + foo.terminate(); } }, executor); diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log index c9ce5d06e..74354452e 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log @@ -1,22 +1,21 @@ -{"traceId":"91b36878f845bbc9","parentSpanId":null,"spanId":"c0e2689c5e79d8d8","operation":"bbb","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":675331,"metadata":{}} -{"traceId":"9a656c782802da91","parentSpanId":null,"spanId":"b1c9b88e39cf0bbf","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567102685018000,"durationNanoSeconds":2114020,"metadata":{}} -{"traceId":"91b36878f845bbc9","parentSpanId":"c0e2689c5e79d8d8","spanId":"c024a6e402e1db76","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":300201,"metadata":{}} -{"traceId":"3d25bc3635943bcb","parentSpanId":null,"spanId":"b9d3bdc30cc9c960","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567102685018000,"durationNanoSeconds":1438169,"metadata":{}} -{"traceId":"3d25bc3635943bcb","parentSpanId":null,"spanId":"56387e10e322db11","operation":"success1","startTimeMicroSeconds":1567102685020000,"durationNanoSeconds":10533965,"metadata":{}} -{"traceId":"d596707115877e11","parentSpanId":null,"spanId":"053f66d4b5236f2c","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567102685018000,"durationNanoSeconds":12099031,"metadata":{}} -{"traceId":"9a656c782802da91","parentSpanId":null,"spanId":"1b9efcddbfd92b5d","operation":"success0","startTimeMicroSeconds":1567102685020000,"durationNanoSeconds":10838043,"metadata":{}} -{"traceId":"e5d414d3b0c5126c","parentSpanId":null,"spanId":"135397b93337e89c","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567102685018000,"durationNanoSeconds":12271944,"metadata":{}} -{"traceId":"d596707115877e11","parentSpanId":null,"spanId":"2498e75834e3ee2a","operation":"success2","startTimeMicroSeconds":1567102685031000,"durationNanoSeconds":10110054,"metadata":{}} -{"traceId":"6149c22232726f6d","parentSpanId":null,"spanId":"0d1c874f94374a69","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567102685018000,"durationNanoSeconds":22303291,"metadata":{}} -{"traceId":"e5d414d3b0c5126c","parentSpanId":null,"spanId":"d7a64c339abed0dc","operation":"success3","startTimeMicroSeconds":1567102685031000,"durationNanoSeconds":10597867,"metadata":{}} -{"traceId":"12070ec4fcbf7e0a","parentSpanId":null,"spanId":"7af8c683d83779f6","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":22961147,"metadata":{}} -{"traceId":"6149c22232726f6d","parentSpanId":null,"spanId":"f148dfb9e4e51482","operation":"success4","startTimeMicroSeconds":1567102685041000,"durationNanoSeconds":10148310,"metadata":{}} -{"traceId":"e698f8f5a9e36ae2","parentSpanId":null,"spanId":"8c4eceff49d0358f","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":32561428,"metadata":{}} -{"traceId":"12070ec4fcbf7e0a","parentSpanId":null,"spanId":"730f1d9b3f920d8c","operation":"success5","startTimeMicroSeconds":1567102685042000,"durationNanoSeconds":10396243,"metadata":{}} -{"traceId":"53a5e171ed4065b6","parentSpanId":null,"spanId":"0f8853d89dea1a29","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":33411373,"metadata":{}} -{"traceId":"e698f8f5a9e36ae2","parentSpanId":null,"spanId":"94912484223eb948","operation":"success6","startTimeMicroSeconds":1567102685051000,"durationNanoSeconds":10130693,"metadata":{}} -{"traceId":"843a4135426b0d02","parentSpanId":null,"spanId":"765e72b9db88c8fa","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":42760858,"metadata":{}} -{"traceId":"53a5e171ed4065b6","parentSpanId":null,"spanId":"823e9544b64bf067","operation":"success7","startTimeMicroSeconds":1567102685052000,"durationNanoSeconds":10096860,"metadata":{}} -{"traceId":"91b36878f845bbc9","parentSpanId":null,"spanId":"8802b9619b75b294","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567102685019000,"durationNanoSeconds":43578094,"metadata":{}} -{"traceId":"843a4135426b0d02","parentSpanId":null,"spanId":"c34690a654496aa0","operation":"success8","startTimeMicroSeconds":1567102685061000,"durationNanoSeconds":10271050,"metadata":{}} -{"traceId":"91b36878f845bbc9","parentSpanId":null,"spanId":"dcc757ba7a64c9c2","operation":"success9","startTimeMicroSeconds":1567102685062000,"durationNanoSeconds":10065826,"metadata":{}} +{"traceId":"c2944e0f5a0eccb3","parentSpanId":null,"spanId":"e00516928c69b166","operation":"bbb","startTimeMicroSeconds":1567104681769000,"durationNanoSeconds":52771331,"metadata":{}} +{"traceId":"dfe78687f215aad2","parentSpanId":null,"spanId":"5b283c6b55a2259e","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567104681755000,"durationNanoSeconds":66087636,"metadata":{}} +{"traceId":"b3683a204d4853ee","parentSpanId":null,"spanId":"c0326ae393bb0006","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":57000258,"metadata":{}} +{"traceId":"dfe78687f215aad2","parentSpanId":null,"spanId":"01713fd27377937a","operation":"success0","startTimeMicroSeconds":1567104681831000,"durationNanoSeconds":10158772,"metadata":{}} +{"traceId":"eda704a7cf56b895","parentSpanId":null,"spanId":"b31883103596c224","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":76245728,"metadata":{}} +{"traceId":"b3683a204d4853ee","parentSpanId":null,"spanId":"7a4cadc1f55199a2","operation":"success1","startTimeMicroSeconds":1567104681831000,"durationNanoSeconds":12380937,"metadata":{}} +{"traceId":"b98f0cca8b7cac3e","parentSpanId":null,"spanId":"22c4366cb0ce97ba","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":78825055,"metadata":{}} +{"traceId":"eda704a7cf56b895","parentSpanId":null,"spanId":"2a81b9bc9b7a8cbe","operation":"success2","startTimeMicroSeconds":1567104681841000,"durationNanoSeconds":10201614,"metadata":{}} +{"traceId":"8ed053cf3b669dd4","parentSpanId":null,"spanId":"56de9e8d8f73035a","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":86525664,"metadata":{}} +{"traceId":"b98f0cca8b7cac3e","parentSpanId":null,"spanId":"5c78ccb005b0cd6d","operation":"success3","startTimeMicroSeconds":1567104681844000,"durationNanoSeconds":10151543,"metadata":{}} +{"traceId":"7bb308334a113b35","parentSpanId":null,"spanId":"4e7a9463a86db607","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":89221851,"metadata":{}} +{"traceId":"8ed053cf3b669dd4","parentSpanId":null,"spanId":"feb970420f616681","operation":"success4","startTimeMicroSeconds":1567104681852000,"durationNanoSeconds":12049174,"metadata":{}} +{"traceId":"fa2bb9ea95166342","parentSpanId":null,"spanId":"cabd43adfa98dff6","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":98637283,"metadata":{}} +{"traceId":"7bb308334a113b35","parentSpanId":null,"spanId":"118b40d00902856d","operation":"success5","startTimeMicroSeconds":1567104681854000,"durationNanoSeconds":10203049,"metadata":{}} +{"traceId":"07e16796f688cd69","parentSpanId":null,"spanId":"39c57d0f51c97ffc","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":99466722,"metadata":{}} +{"traceId":"fa2bb9ea95166342","parentSpanId":null,"spanId":"541c2ec415611cff","operation":"success6","startTimeMicroSeconds":1567104681864000,"durationNanoSeconds":10116793,"metadata":{}} +{"traceId":"bbdada2a0e56f6f3","parentSpanId":null,"spanId":"c4938e1a3eb883df","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":108818930,"metadata":{}} +{"traceId":"07e16796f688cd69","parentSpanId":null,"spanId":"2caaae85af3be965","operation":"success7","startTimeMicroSeconds":1567104681865000,"durationNanoSeconds":10428157,"metadata":{}} +{"traceId":"352f6ac45dde53f2","parentSpanId":null,"spanId":"bd0ddf3f1f9b94ee","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":109988362,"metadata":{}} +{"traceId":"bbdada2a0e56f6f3","parentSpanId":null,"spanId":"afd5fbafef0239f7","operation":"success8","startTimeMicroSeconds":1567104681874000,"durationNanoSeconds":10222606,"metadata":{}} +{"traceId":"352f6ac45dde53f2","parentSpanId":null,"spanId":"b6f09c402d011da7","operation":"success9","startTimeMicroSeconds":1567104681875000,"durationNanoSeconds":10137365,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log index 75bff64c6..154c5398d 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log @@ -1,5 +1,3 @@ -{"traceId":"c66fff18187a63b1","parentSpanId":"04395e863fdc3265","spanId":"0a42bb926a1056a4","operation":"first network call (will fail)","startTimeMicroSeconds":1567102684481000,"durationNanoSeconds":100635705,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":null,"spanId":"04395e863fdc3265","operation":"DeferredTracer(unnamed operation)","startTimeMicroSeconds":1567102684481000,"durationNanoSeconds":101570999,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":"02b145954a431c93","spanId":"59a9d3d59113baea","operation":"backoff for 20ms","startTimeMicroSeconds":1567102684582000,"durationNanoSeconds":22877955,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":null,"spanId":"02b145954a431c93","operation":"overall request","startTimeMicroSeconds":1567102684477000,"durationNanoSeconds":228396917,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":null,"spanId":"b5b1119b14faf67c","operation":"secondAttempt","startTimeMicroSeconds":1567102684605000,"durationNanoSeconds":101774523,"metadata":{}} +{"traceId":"660a5e0bf8a0b040","parentSpanId":null,"spanId":"9729c56ed062f3b9","operation":"first network call (will fail)","startTimeMicroSeconds":1567104767824000,"durationNanoSeconds":103386813,"metadata":{}} +{"traceId":"13b8dad199449187","parentSpanId":"6137573d83d15721","spanId":"94e8cade51c237b6","operation":"backoff for 20ms","startTimeMicroSeconds":1567104767927000,"durationNanoSeconds":23096726,"metadata":{}} +{"traceId":"13b8dad199449187","parentSpanId":null,"spanId":"6137573d83d15721","operation":"overall request","startTimeMicroSeconds":1567104767821000,"durationNanoSeconds":229672676,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log index b7d9c1a8f..79eb0b73d 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log @@ -1,40 +1,40 @@ -{"traceId":"ad324fb5c0500f94","parentSpanId":null,"spanId":"6f52ec5171cea24e","operation":"task-queue-time0","startTimeMicroSeconds":1567102683793000,"durationNanoSeconds":1632778,"metadata":{}} -{"traceId":"f843c675b3e02d3a","parentSpanId":null,"spanId":"2c16e01c2118a4c6","operation":"task-queue-time1","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":193878,"metadata":{}} -{"traceId":"ad324fb5c0500f94","parentSpanId":"4726cdf3f705eb90","spanId":"2fa6257fa5315118","operation":"sleep 100","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":100054367,"metadata":{}} -{"traceId":"f843c675b3e02d3a","parentSpanId":"3fcd563f7373036a","spanId":"7cd6a8585d6fbdd4","operation":"sleep 100","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":100084988,"metadata":{}} -{"traceId":"f843c675b3e02d3a","parentSpanId":"e955c1c59a2740e2","spanId":"80754256f73b5b51","operation":"sleep 90","startTimeMicroSeconds":1567102683895000,"durationNanoSeconds":90384093,"metadata":{}} -{"traceId":"ad324fb5c0500f94","parentSpanId":"d0f4526dfdfb5078","spanId":"2bec94e2628f1e6f","operation":"sleep 90","startTimeMicroSeconds":1567102683895000,"durationNanoSeconds":90439456,"metadata":{}} -{"traceId":"f843c675b3e02d3a","parentSpanId":"3fcd563f7373036a","spanId":"e955c1c59a2740e2","operation":"nested","startTimeMicroSeconds":1567102683895000,"durationNanoSeconds":90433540,"metadata":{}} -{"traceId":"ad324fb5c0500f94","parentSpanId":"4726cdf3f705eb90","spanId":"d0f4526dfdfb5078","operation":"nested","startTimeMicroSeconds":1567102683895000,"durationNanoSeconds":90502773,"metadata":{}} -{"traceId":"ad324fb5c0500f94","parentSpanId":"4726cdf3f705eb90","spanId":"0899a39e9d1070b9","operation":"sleep 10","startTimeMicroSeconds":1567102683986000,"durationNanoSeconds":10169777,"metadata":{}} -{"traceId":"ad324fb5c0500f94","parentSpanId":"a5c7be83d6c2af06","spanId":"4726cdf3f705eb90","operation":"first","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":200902858,"metadata":{}} -{"traceId":"f843c675b3e02d3a","parentSpanId":"3fcd563f7373036a","spanId":"cb6bef4920066fd5","operation":"sleep 10","startTimeMicroSeconds":1567102683986000,"durationNanoSeconds":11182445,"metadata":{}} -{"traceId":"f843c675b3e02d3a","parentSpanId":"fb012e56db70c05a","spanId":"3fcd563f7373036a","operation":"first","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":201784637,"metadata":{}} -{"traceId":"ad324fb5c0500f94","parentSpanId":"9e838893376e6745","spanId":"335003b9069ff2ce","operation":"sleep 100","startTimeMicroSeconds":1567102683996000,"durationNanoSeconds":100079457,"metadata":{}} -{"traceId":"ad324fb5c0500f94","parentSpanId":"a5c7be83d6c2af06","spanId":"9e838893376e6745","operation":"second","startTimeMicroSeconds":1567102683996000,"durationNanoSeconds":100137061,"metadata":{}} -{"traceId":"ad324fb5c0500f94","parentSpanId":"36e1b9f3bbc74741","spanId":"a5c7be83d6c2af06","operation":"emit_nested_spans","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":301114879,"metadata":{}} -{"traceId":"ad324fb5c0500f94","parentSpanId":null,"spanId":"36e1b9f3bbc74741","operation":"task0","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":301183828,"metadata":{}} -{"traceId":"3d99d8e89c5d3ec8","parentSpanId":null,"spanId":"e34f0bc5e49d1fba","operation":"task-queue-time2","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":301225344,"metadata":{}} -{"traceId":"f843c675b3e02d3a","parentSpanId":"97ce07b0a3829800","spanId":"82e4346b1ca41fb8","operation":"sleep 100","startTimeMicroSeconds":1567102683997000,"durationNanoSeconds":100046278,"metadata":{}} -{"traceId":"f843c675b3e02d3a","parentSpanId":"fb012e56db70c05a","spanId":"97ce07b0a3829800","operation":"second","startTimeMicroSeconds":1567102683997000,"durationNanoSeconds":100079177,"metadata":{}} -{"traceId":"f843c675b3e02d3a","parentSpanId":"8e05cd1c5a7ed1d1","spanId":"fb012e56db70c05a","operation":"emit_nested_spans","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":301896776,"metadata":{}} -{"traceId":"f843c675b3e02d3a","parentSpanId":null,"spanId":"8e05cd1c5a7ed1d1","operation":"task1","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":301926932,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":null,"spanId":"6e4afed7776407e1","operation":"task-queue-time3","startTimeMicroSeconds":1567102683795000,"durationNanoSeconds":301966617,"metadata":{}} -{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"7f5be0888cf39813","spanId":"1067655b6e5f7b36","operation":"sleep 100","startTimeMicroSeconds":1567102684096000,"durationNanoSeconds":100154684,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":"08818409f605bc2c","spanId":"13cf17582136d2a3","operation":"sleep 100","startTimeMicroSeconds":1567102684097000,"durationNanoSeconds":100102162,"metadata":{}} -{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"868118f1d9ac7644","spanId":"3378125a15c102c0","operation":"sleep 90","startTimeMicroSeconds":1567102684197000,"durationNanoSeconds":90376767,"metadata":{}} -{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"7f5be0888cf39813","spanId":"868118f1d9ac7644","operation":"nested","startTimeMicroSeconds":1567102684197000,"durationNanoSeconds":90457263,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":"ec82eb19458893ea","spanId":"12acefa676871fb3","operation":"sleep 90","startTimeMicroSeconds":1567102684197000,"durationNanoSeconds":93846853,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":"08818409f605bc2c","spanId":"ec82eb19458893ea","operation":"nested","startTimeMicroSeconds":1567102684197000,"durationNanoSeconds":93935069,"metadata":{}} -{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"7f5be0888cf39813","spanId":"1345ed4a7e3945b9","operation":"sleep 10","startTimeMicroSeconds":1567102684287000,"durationNanoSeconds":10195375,"metadata":{}} -{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"7c6d52792f64397e","spanId":"7f5be0888cf39813","operation":"first","startTimeMicroSeconds":1567102684096000,"durationNanoSeconds":200948610,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":"08818409f605bc2c","spanId":"2fe1e7c0cdd2365c","operation":"sleep 10","startTimeMicroSeconds":1567102684292000,"durationNanoSeconds":10315285,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":"06e4ca7791345248","spanId":"08818409f605bc2c","operation":"first","startTimeMicroSeconds":1567102684097000,"durationNanoSeconds":204520546,"metadata":{}} -{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"38f39b6a62f0de26","spanId":"7ed2e7d7327e2d71","operation":"sleep 100","startTimeMicroSeconds":1567102684298000,"durationNanoSeconds":100647137,"metadata":{}} -{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"7c6d52792f64397e","spanId":"38f39b6a62f0de26","operation":"second","startTimeMicroSeconds":1567102684297000,"durationNanoSeconds":100754832,"metadata":{}} -{"traceId":"3d99d8e89c5d3ec8","parentSpanId":"052dc7438f2c12d6","spanId":"7c6d52792f64397e","operation":"emit_nested_spans","startTimeMicroSeconds":1567102684096000,"durationNanoSeconds":301763641,"metadata":{}} -{"traceId":"3d99d8e89c5d3ec8","parentSpanId":null,"spanId":"052dc7438f2c12d6","operation":"task2","startTimeMicroSeconds":1567102684096000,"durationNanoSeconds":301816311,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":"f5b2864f16c35a6e","spanId":"06ff2fd4ff6b55b5","operation":"sleep 100","startTimeMicroSeconds":1567102684302000,"durationNanoSeconds":104189373,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":"06e4ca7791345248","spanId":"f5b2864f16c35a6e","operation":"second","startTimeMicroSeconds":1567102684302000,"durationNanoSeconds":104238051,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":"c3d39753f209917c","spanId":"06e4ca7791345248","operation":"emit_nested_spans","startTimeMicroSeconds":1567102684097000,"durationNanoSeconds":308809137,"metadata":{}} -{"traceId":"c66fff18187a63b1","parentSpanId":null,"spanId":"c3d39753f209917c","operation":"task3","startTimeMicroSeconds":1567102684097000,"durationNanoSeconds":308876925,"metadata":{}} +{"traceId":"b29e2bcf6eda4fbd","parentSpanId":null,"spanId":"f6d587fb170063b6","operation":"task-queue-time0","startTimeMicroSeconds":1567104767142000,"durationNanoSeconds":2122303,"metadata":{}} +{"traceId":"43b08de88a252141","parentSpanId":null,"spanId":"8b8fc16f5765bc26","operation":"task-queue-time1","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":279301,"metadata":{}} +{"traceId":"43b08de88a252141","parentSpanId":"ed94e939f396e8d5","spanId":"42949b7b5e4e6657","operation":"sleep 100","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":102537300,"metadata":{}} +{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"63cbadecb3aaaf17","spanId":"02e424e3c1bf19f4","operation":"sleep 100","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":102556844,"metadata":{}} +{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"e70ce1fa2c30c766","spanId":"1ff549458e06e443","operation":"sleep 90","startTimeMicroSeconds":1567104767247000,"durationNanoSeconds":93494797,"metadata":{}} +{"traceId":"43b08de88a252141","parentSpanId":"0eadc4c425060eb4","spanId":"1fbde771e7033a9d","operation":"sleep 90","startTimeMicroSeconds":1567104767247000,"durationNanoSeconds":93497004,"metadata":{}} +{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"63cbadecb3aaaf17","spanId":"e70ce1fa2c30c766","operation":"nested","startTimeMicroSeconds":1567104767247000,"durationNanoSeconds":93541372,"metadata":{}} +{"traceId":"43b08de88a252141","parentSpanId":"ed94e939f396e8d5","spanId":"0eadc4c425060eb4","operation":"nested","startTimeMicroSeconds":1567104767247000,"durationNanoSeconds":93548453,"metadata":{}} +{"traceId":"43b08de88a252141","parentSpanId":"ed94e939f396e8d5","spanId":"51e9b0357c93e631","operation":"sleep 10","startTimeMicroSeconds":1567104767340000,"durationNanoSeconds":10174535,"metadata":{}} +{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"63cbadecb3aaaf17","spanId":"1782a4a4acf10336","operation":"sleep 10","startTimeMicroSeconds":1567104767340000,"durationNanoSeconds":10174621,"metadata":{}} +{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"af93a0cb4c972a04","spanId":"63cbadecb3aaaf17","operation":"first","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":206448103,"metadata":{}} +{"traceId":"43b08de88a252141","parentSpanId":"fcf094bcaa29eb49","spanId":"ed94e939f396e8d5","operation":"first","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":206392849,"metadata":{}} +{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"575e464603ca9e8e","spanId":"4f0ea3f110d88a2e","operation":"sleep 100","startTimeMicroSeconds":1567104767351000,"durationNanoSeconds":103593898,"metadata":{}} +{"traceId":"43b08de88a252141","parentSpanId":"5a5400754f2f42a5","spanId":"bd607f11148c3bd1","operation":"sleep 100","startTimeMicroSeconds":1567104767351000,"durationNanoSeconds":103597180,"metadata":{}} +{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"af93a0cb4c972a04","spanId":"575e464603ca9e8e","operation":"second","startTimeMicroSeconds":1567104767351000,"durationNanoSeconds":103649296,"metadata":{}} +{"traceId":"43b08de88a252141","parentSpanId":"fcf094bcaa29eb49","spanId":"5a5400754f2f42a5","operation":"second","startTimeMicroSeconds":1567104767351000,"durationNanoSeconds":103657416,"metadata":{}} +{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"9ab27c33022b96ae","spanId":"af93a0cb4c972a04","operation":"emit_nested_spans","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":310164465,"metadata":{}} +{"traceId":"43b08de88a252141","parentSpanId":"be05682e70586cae","spanId":"fcf094bcaa29eb49","operation":"emit_nested_spans","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":310109130,"metadata":{}} +{"traceId":"b29e2bcf6eda4fbd","parentSpanId":null,"spanId":"9ab27c33022b96ae","operation":"task0","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":310244949,"metadata":{}} +{"traceId":"43b08de88a252141","parentSpanId":null,"spanId":"be05682e70586cae","operation":"task1","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":310177625,"metadata":{}} +{"traceId":"cc5ee247e07bd79d","parentSpanId":null,"spanId":"e7c29bf370568866","operation":"task-queue-time2","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":310413600,"metadata":{}} +{"traceId":"b63d8b256d4cd7f7","parentSpanId":null,"spanId":"bb35d59c819a3454","operation":"task-queue-time3","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":310310593,"metadata":{}} +{"traceId":"b63d8b256d4cd7f7","parentSpanId":"335bc92d8fa4452f","spanId":"0de020e6321f7af1","operation":"sleep 100","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":100472208,"metadata":{}} +{"traceId":"cc5ee247e07bd79d","parentSpanId":"dfd4569122a058b3","spanId":"47dff4a5c43aefbc","operation":"sleep 100","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":100458146,"metadata":{}} +{"traceId":"cc5ee247e07bd79d","parentSpanId":"3f567c82eb478029","spanId":"ddfdf363b008c73b","operation":"sleep 90","startTimeMicroSeconds":1567104767555000,"durationNanoSeconds":92330043,"metadata":{}} +{"traceId":"b63d8b256d4cd7f7","parentSpanId":"b1e394d9cdd6d11d","spanId":"6445017cb63c7ba9","operation":"sleep 90","startTimeMicroSeconds":1567104767555000,"durationNanoSeconds":92329180,"metadata":{}} +{"traceId":"b63d8b256d4cd7f7","parentSpanId":"335bc92d8fa4452f","spanId":"b1e394d9cdd6d11d","operation":"nested","startTimeMicroSeconds":1567104767555000,"durationNanoSeconds":92379456,"metadata":{}} +{"traceId":"cc5ee247e07bd79d","parentSpanId":"dfd4569122a058b3","spanId":"3f567c82eb478029","operation":"nested","startTimeMicroSeconds":1567104767555000,"durationNanoSeconds":92380566,"metadata":{}} +{"traceId":"b63d8b256d4cd7f7","parentSpanId":"335bc92d8fa4452f","spanId":"2ac986646278d63d","operation":"sleep 10","startTimeMicroSeconds":1567104767647000,"durationNanoSeconds":10082845,"metadata":{}} +{"traceId":"cc5ee247e07bd79d","parentSpanId":"dfd4569122a058b3","spanId":"2ea889caee8f7031","operation":"sleep 10","startTimeMicroSeconds":1567104767647000,"durationNanoSeconds":10073932,"metadata":{}} +{"traceId":"b63d8b256d4cd7f7","parentSpanId":"8489fc14d9c2b9f6","spanId":"335bc92d8fa4452f","operation":"first","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":203059829,"metadata":{}} +{"traceId":"cc5ee247e07bd79d","parentSpanId":"0749f3567b2b5b39","spanId":"dfd4569122a058b3","operation":"first","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":203043842,"metadata":{}} +{"traceId":"b63d8b256d4cd7f7","parentSpanId":"89e043f292b5f454","spanId":"e53bb2ccb2aedaef","operation":"sleep 100","startTimeMicroSeconds":1567104767658000,"durationNanoSeconds":103057078,"metadata":{}} +{"traceId":"cc5ee247e07bd79d","parentSpanId":"8e33335f3d117037","spanId":"834b16470948a1c8","operation":"sleep 100","startTimeMicroSeconds":1567104767658000,"durationNanoSeconds":103057078,"metadata":{}} +{"traceId":"cc5ee247e07bd79d","parentSpanId":"0749f3567b2b5b39","spanId":"8e33335f3d117037","operation":"second","startTimeMicroSeconds":1567104767658000,"durationNanoSeconds":103104533,"metadata":{}} +{"traceId":"b63d8b256d4cd7f7","parentSpanId":"8489fc14d9c2b9f6","spanId":"89e043f292b5f454","operation":"second","startTimeMicroSeconds":1567104767658000,"durationNanoSeconds":103108671,"metadata":{}} +{"traceId":"b63d8b256d4cd7f7","parentSpanId":"b69617f4dcd2c546","spanId":"8489fc14d9c2b9f6","operation":"emit_nested_spans","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":306210624,"metadata":{}} +{"traceId":"cc5ee247e07bd79d","parentSpanId":"f769ba780b1011f1","spanId":"0749f3567b2b5b39","operation":"emit_nested_spans","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":306195648,"metadata":{}} +{"traceId":"b63d8b256d4cd7f7","parentSpanId":null,"spanId":"b69617f4dcd2c546","operation":"task3","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":306251302,"metadata":{}} +{"traceId":"cc5ee247e07bd79d","parentSpanId":null,"spanId":"f769ba780b1011f1","operation":"task2","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":306236445,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log index 437a973cb..01b887299 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log @@ -1,40 +1,40 @@ -{"traceId":"759b6a55179c6dff","parentSpanId":null,"spanId":"ad5c1d49fd2b19b0","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567102684718000,"durationNanoSeconds":12480833,"metadata":{}} -{"traceId":"759b6a55179c6dff","parentSpanId":null,"spanId":"88cbc811e8faa23f","operation":"consumework1","startTimeMicroSeconds":1567102684731000,"durationNanoSeconds":10773174,"metadata":{}} -{"traceId":"8658490002595117","parentSpanId":null,"spanId":"353199a692f5a72e","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567102684717000,"durationNanoSeconds":24695319,"metadata":{}} -{"traceId":"8658490002595117","parentSpanId":null,"spanId":"c13fbd965d1d0ed8","operation":"consumework0","startTimeMicroSeconds":1567102684742000,"durationNanoSeconds":12470191,"metadata":{}} -{"traceId":"abaecdc315e10153","parentSpanId":null,"spanId":"657f525c983761f3","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":25109530,"metadata":{}} -{"traceId":"abaecdc315e10153","parentSpanId":null,"spanId":"c7c1b728417494ae","operation":"consumework2","startTimeMicroSeconds":1567102684754000,"durationNanoSeconds":10380755,"metadata":{}} -{"traceId":"d0a369955bbf977c","parentSpanId":null,"spanId":"6dd2bd3296aaa02d","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":35407148,"metadata":{}} -{"traceId":"d0a369955bbf977c","parentSpanId":null,"spanId":"9ed73cadbf71d51a","operation":"consumework3","startTimeMicroSeconds":1567102684765000,"durationNanoSeconds":10072510,"metadata":{}} -{"traceId":"ebe05f92a7b1b012","parentSpanId":null,"spanId":"f027538f7141849a","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":45533379,"metadata":{}} -{"traceId":"ebe05f92a7b1b012","parentSpanId":null,"spanId":"87c8368dfb8bf889","operation":"consumework4","startTimeMicroSeconds":1567102684775000,"durationNanoSeconds":10808649,"metadata":{}} -{"traceId":"70897d976c264f4b","parentSpanId":null,"spanId":"2f0f1ed18a4b54f7","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":56433548,"metadata":{}} -{"traceId":"70897d976c264f4b","parentSpanId":null,"spanId":"5e4cd1f07b53c148","operation":"consumework5","startTimeMicroSeconds":1567102684786000,"durationNanoSeconds":10924341,"metadata":{}} -{"traceId":"94e0188a61966793","parentSpanId":null,"spanId":"2f5ab50cc51af422","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":67422312,"metadata":{}} -{"traceId":"94e0188a61966793","parentSpanId":null,"spanId":"1e7d1df74de7e553","operation":"consumework6","startTimeMicroSeconds":1567102684797000,"durationNanoSeconds":10838896,"metadata":{}} -{"traceId":"a0226cc61197e0a7","parentSpanId":null,"spanId":"c2296f085d09e5f6","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":78333256,"metadata":{}} -{"traceId":"a0226cc61197e0a7","parentSpanId":null,"spanId":"95890f03b2315a09","operation":"consumework7","startTimeMicroSeconds":1567102684808000,"durationNanoSeconds":10373527,"metadata":{}} -{"traceId":"62f648bd563148d1","parentSpanId":null,"spanId":"ea9af408a5d5313a","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":88801000,"metadata":{}} -{"traceId":"62f648bd563148d1","parentSpanId":null,"spanId":"1b11087fd6b5bfba","operation":"consumework8","startTimeMicroSeconds":1567102684818000,"durationNanoSeconds":10213451,"metadata":{}} -{"traceId":"2abde4c7a3f840b5","parentSpanId":null,"spanId":"bc68bfcb4d87072b","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":99099385,"metadata":{}} -{"traceId":"2abde4c7a3f840b5","parentSpanId":null,"spanId":"7035397aa71471d7","operation":"consumework9","startTimeMicroSeconds":1567102684829000,"durationNanoSeconds":10138186,"metadata":{}} -{"traceId":"6617b3cb1cd3b0b9","parentSpanId":null,"spanId":"915552676dc3fe96","operation":"callback-pending10 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":109313957,"metadata":{}} -{"traceId":"6617b3cb1cd3b0b9","parentSpanId":null,"spanId":"d820fa7167d48446","operation":"consumework10","startTimeMicroSeconds":1567102684839000,"durationNanoSeconds":10125604,"metadata":{}} -{"traceId":"942b328357556e61","parentSpanId":null,"spanId":"37b952cb1bf9589c","operation":"callback-pending11 (cross thread span)","startTimeMicroSeconds":1567102684729000,"durationNanoSeconds":119535991,"metadata":{}} -{"traceId":"942b328357556e61","parentSpanId":null,"spanId":"ae8f0fa9636544cf","operation":"consumework11","startTimeMicroSeconds":1567102684849000,"durationNanoSeconds":10175427,"metadata":{}} -{"traceId":"509edc6eac7394e4","parentSpanId":null,"spanId":"d01f920ccb2622f3","operation":"callback-pending12 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":129793169,"metadata":{}} -{"traceId":"509edc6eac7394e4","parentSpanId":null,"spanId":"d031b2bdf59e8b0b","operation":"consumework12","startTimeMicroSeconds":1567102684859000,"durationNanoSeconds":10124281,"metadata":{}} -{"traceId":"180d7d39451a0c6e","parentSpanId":null,"spanId":"6d407c0e14e3e62d","operation":"callback-pending13 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":140094447,"metadata":{}} -{"traceId":"180d7d39451a0c6e","parentSpanId":null,"spanId":"3d0c4fa36c7f14b3","operation":"consumework13","startTimeMicroSeconds":1567102684870000,"durationNanoSeconds":10098179,"metadata":{}} -{"traceId":"07851fcb37e05e4c","parentSpanId":null,"spanId":"607637ab4e6215d0","operation":"callback-pending14 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":150263463,"metadata":{}} -{"traceId":"07851fcb37e05e4c","parentSpanId":null,"spanId":"55a04ede135a6841","operation":"consumework14","startTimeMicroSeconds":1567102684880000,"durationNanoSeconds":10071432,"metadata":{}} -{"traceId":"db9f9b496f6c7757","parentSpanId":null,"spanId":"6a3c45063331e34d","operation":"callback-pending15 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":160388877,"metadata":{}} -{"traceId":"db9f9b496f6c7757","parentSpanId":null,"spanId":"94c3f1434be630b9","operation":"consumework15","startTimeMicroSeconds":1567102684890000,"durationNanoSeconds":10116546,"metadata":{}} -{"traceId":"ab328321bc4aced0","parentSpanId":null,"spanId":"c34f37cd50e710c1","operation":"callback-pending16 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":170554956,"metadata":{}} -{"traceId":"ab328321bc4aced0","parentSpanId":null,"spanId":"da01de16e2dc4937","operation":"consumework16","startTimeMicroSeconds":1567102684900000,"durationNanoSeconds":10086104,"metadata":{}} -{"traceId":"570548765927a6ea","parentSpanId":null,"spanId":"3f96ddd894281ef7","operation":"callback-pending18 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":180673691,"metadata":{}} -{"traceId":"570548765927a6ea","parentSpanId":null,"spanId":"5f278833d8c38f04","operation":"consumework18","startTimeMicroSeconds":1567102684910000,"durationNanoSeconds":10186746,"metadata":{}} -{"traceId":"7ceb6fe404082b1f","parentSpanId":null,"spanId":"2191a3d7048e90fb","operation":"callback-pending17 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":191001526,"metadata":{}} -{"traceId":"7ceb6fe404082b1f","parentSpanId":null,"spanId":"5534ed5381d64935","operation":"consumework17","startTimeMicroSeconds":1567102684921000,"durationNanoSeconds":10109223,"metadata":{}} -{"traceId":"6ebf0b73b96ba66f","parentSpanId":null,"spanId":"0c2ca46c0b74df15","operation":"callback-pending19 (cross thread span)","startTimeMicroSeconds":1567102684730000,"durationNanoSeconds":201178974,"metadata":{}} -{"traceId":"6ebf0b73b96ba66f","parentSpanId":null,"spanId":"8300eee5b1129cb5","operation":"consumework19","startTimeMicroSeconds":1567102684931000,"durationNanoSeconds":10185999,"metadata":{}} +{"traceId":"3ab4abc23c726bd3","parentSpanId":null,"spanId":"14f2345c64086e5a","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567104768059000,"durationNanoSeconds":4385803,"metadata":{}} +{"traceId":"3ab4abc23c726bd3","parentSpanId":null,"spanId":"f065e24b10cf375f","operation":"consumework0","startTimeMicroSeconds":1567104768064000,"durationNanoSeconds":10653409,"metadata":{}} +{"traceId":"5bd3042cc98888ac","parentSpanId":null,"spanId":"99c4751102eb40dd","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567104768061000,"durationNanoSeconds":13283259,"metadata":{}} +{"traceId":"5bd3042cc98888ac","parentSpanId":null,"spanId":"50f5d58d74484bf9","operation":"consumework1","startTimeMicroSeconds":1567104768075000,"durationNanoSeconds":12071028,"metadata":{}} +{"traceId":"58e34778da0a01a2","parentSpanId":null,"spanId":"65a528eac689c7b9","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":25038006,"metadata":{}} +{"traceId":"58e34778da0a01a2","parentSpanId":null,"spanId":"21d5a58ead386244","operation":"consumework2","startTimeMicroSeconds":1567104768087000,"durationNanoSeconds":10528551,"metadata":{}} +{"traceId":"a8636319a1d12208","parentSpanId":null,"spanId":"bdb36afe4d69c578","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":35603665,"metadata":{}} +{"traceId":"a8636319a1d12208","parentSpanId":null,"spanId":"d73ad2fc928d867c","operation":"consumework3","startTimeMicroSeconds":1567104768097000,"durationNanoSeconds":10746871,"metadata":{}} +{"traceId":"fe6e7c93c33635ce","parentSpanId":null,"spanId":"bb68335803c41e12","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":46415375,"metadata":{}} +{"traceId":"fe6e7c93c33635ce","parentSpanId":null,"spanId":"60db2498f80e18b9","operation":"consumework4","startTimeMicroSeconds":1567104768108000,"durationNanoSeconds":10908900,"metadata":{}} +{"traceId":"475558cccb6fee68","parentSpanId":null,"spanId":"0db5a3fc8958881e","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":57383367,"metadata":{}} +{"traceId":"475558cccb6fee68","parentSpanId":null,"spanId":"ab4d2dc15b72bd1a","operation":"consumework5","startTimeMicroSeconds":1567104768119000,"durationNanoSeconds":10138405,"metadata":{}} +{"traceId":"ba3080bcea717414","parentSpanId":null,"spanId":"883af5de1aad9e66","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":67572783,"metadata":{}} +{"traceId":"ba3080bcea717414","parentSpanId":null,"spanId":"a5996d8b02ee4c6a","operation":"consumework6","startTimeMicroSeconds":1567104768130000,"durationNanoSeconds":10304128,"metadata":{}} +{"traceId":"dc052d25c80cec6a","parentSpanId":null,"spanId":"1ec6d67f1131bf29","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":77970487,"metadata":{}} +{"traceId":"dc052d25c80cec6a","parentSpanId":null,"spanId":"2e0c44ab271957af","operation":"consumework7","startTimeMicroSeconds":1567104768140000,"durationNanoSeconds":10116925,"metadata":{}} +{"traceId":"6941b923d4edacbf","parentSpanId":null,"spanId":"3eb1755f70ab72a5","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":88158608,"metadata":{}} +{"traceId":"6941b923d4edacbf","parentSpanId":null,"spanId":"c13eeb98c6f92867","operation":"consumework8","startTimeMicroSeconds":1567104768150000,"durationNanoSeconds":10229097,"metadata":{}} +{"traceId":"b055333f47f8124a","parentSpanId":null,"spanId":"6a8c9a4c66fb5b17","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":98465943,"metadata":{}} +{"traceId":"b055333f47f8124a","parentSpanId":null,"spanId":"6c910dda997beecf","operation":"consumework9","startTimeMicroSeconds":1567104768161000,"durationNanoSeconds":10303568,"metadata":{}} +{"traceId":"a5344dfc295354eb","parentSpanId":null,"spanId":"523bf1a31af2e35c","operation":"callback-pending10 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":108826731,"metadata":{}} +{"traceId":"a5344dfc295354eb","parentSpanId":null,"spanId":"cead3a69f919473f","operation":"consumework10","startTimeMicroSeconds":1567104768171000,"durationNanoSeconds":10649491,"metadata":{}} +{"traceId":"bb97bc831df0dcd5","parentSpanId":null,"spanId":"8beb4c1b26e1f938","operation":"callback-pending11 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":119539887,"metadata":{}} +{"traceId":"bb97bc831df0dcd5","parentSpanId":null,"spanId":"d3ea1cb1e0457919","operation":"consumework11","startTimeMicroSeconds":1567104768182000,"durationNanoSeconds":10344982,"metadata":{}} +{"traceId":"f049cbe08b2f6944","parentSpanId":null,"spanId":"6f0a45d72dea1dd0","operation":"callback-pending12 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":129961066,"metadata":{}} +{"traceId":"f049cbe08b2f6944","parentSpanId":null,"spanId":"14d71c07e4337662","operation":"consumework12","startTimeMicroSeconds":1567104768192000,"durationNanoSeconds":10686925,"metadata":{}} +{"traceId":"6de21a9fd43f6ea7","parentSpanId":null,"spanId":"7fc72b3981030205","operation":"callback-pending13 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":140728764,"metadata":{}} +{"traceId":"6de21a9fd43f6ea7","parentSpanId":null,"spanId":"9798aed8645c1db3","operation":"consumework13","startTimeMicroSeconds":1567104768203000,"durationNanoSeconds":10089750,"metadata":{}} +{"traceId":"c187f5a26920a088","parentSpanId":null,"spanId":"de7c610ebbaec445","operation":"callback-pending14 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":150892104,"metadata":{}} +{"traceId":"c187f5a26920a088","parentSpanId":null,"spanId":"1068446e45ec7848","operation":"consumework14","startTimeMicroSeconds":1567104768213000,"durationNanoSeconds":10132615,"metadata":{}} +{"traceId":"201a05ad4c08684c","parentSpanId":null,"spanId":"3be359f9f7001ba1","operation":"callback-pending15 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":161100351,"metadata":{}} +{"traceId":"201a05ad4c08684c","parentSpanId":null,"spanId":"b61f3b1e9c94d7a1","operation":"consumework15","startTimeMicroSeconds":1567104768223000,"durationNanoSeconds":10248324,"metadata":{}} +{"traceId":"bbd7fa00ea814521","parentSpanId":null,"spanId":"7f9c80add7e9e5af","operation":"callback-pending16 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":171450767,"metadata":{}} +{"traceId":"bbd7fa00ea814521","parentSpanId":null,"spanId":"bc904f71d06430ca","operation":"consumework16","startTimeMicroSeconds":1567104768234000,"durationNanoSeconds":10404894,"metadata":{}} +{"traceId":"2de688a35c42b828","parentSpanId":null,"spanId":"fb873af06aeac4f2","operation":"callback-pending17 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":181881107,"metadata":{}} +{"traceId":"2de688a35c42b828","parentSpanId":null,"spanId":"ec27e15d969e26ef","operation":"consumework17","startTimeMicroSeconds":1567104768244000,"durationNanoSeconds":10154093,"metadata":{}} +{"traceId":"98bf60cece35ab78","parentSpanId":null,"spanId":"029446b19c700963","operation":"callback-pending18 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":192060521,"metadata":{}} +{"traceId":"98bf60cece35ab78","parentSpanId":null,"spanId":"684cd1c6d36290bc","operation":"consumework18","startTimeMicroSeconds":1567104768255000,"durationNanoSeconds":10135076,"metadata":{}} +{"traceId":"8bf13f754055959d","parentSpanId":null,"spanId":"ff05c4470858dddb","operation":"callback-pending19 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":202250504,"metadata":{}} +{"traceId":"8bf13f754055959d","parentSpanId":null,"spanId":"d9e16abeb47225e4","operation":"consumework19","startTimeMicroSeconds":1567104768265000,"durationNanoSeconds":10142547,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log index 22b02a6de..6669da0df 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log @@ -1,3 +1,3 @@ -{"traceId":"a007676208e2d067","parentSpanId":"0959c086883ad403","spanId":"39d375a494bde468","operation":"first transform","startTimeMicroSeconds":1567102681279000,"durationNanoSeconds":1007145058,"metadata":{}} -{"traceId":"a007676208e2d067","parentSpanId":"0959c086883ad403","spanId":"338d2eb636ac1aee","operation":"second transform","startTimeMicroSeconds":1567102682291000,"durationNanoSeconds":1003661801,"metadata":{}} -{"traceId":"a007676208e2d067","parentSpanId":null,"spanId":"0959c086883ad403","operation":"foo","startTimeMicroSeconds":1567102681263000,"durationNanoSeconds":2031912097,"metadata":{}} +{"traceId":"4fe130d36a5b0402","parentSpanId":"5848d51bb7023248","spanId":"6da6a86a83b0e037","operation":"first transform","startTimeMicroSeconds":1567104764537000,"durationNanoSeconds":1010068632,"metadata":{}} +{"traceId":"4fe130d36a5b0402","parentSpanId":"5848d51bb7023248","spanId":"9968b2aa06934b69","operation":"second transform","startTimeMicroSeconds":1567104765552000,"durationNanoSeconds":1003764799,"metadata":{}} +{"traceId":"4fe130d36a5b0402","parentSpanId":null,"spanId":"5848d51bb7023248","operation":"foo","startTimeMicroSeconds":1567104764474000,"durationNanoSeconds":2080916936,"metadata":{}} diff --git a/tracing-test-utils/src/main/java/com/palantir/tracing/HtmlFormatter.java b/tracing-test-utils/src/main/java/com/palantir/tracing/HtmlFormatter.java index 2f4fb55fb..bfb09baa2 100644 --- a/tracing-test-utils/src/main/java/com/palantir/tracing/HtmlFormatter.java +++ b/tracing-test-utils/src/main/java/com/palantir/tracing/HtmlFormatter.java @@ -94,7 +94,7 @@ private void renderSplitByTraceId(StringBuilder sb) { Map analyzedByTraceId = SpanAnalyzer.analyzeByTraceId(config.spans()); analyzedByTraceId.entrySet() .stream() - .sorted(Comparator.comparingLong(e1 -> e1.getValue().bounds().startMicros())) + .sorted(Comparator.comparing(e -> e.getValue().bounds())) .forEachOrdered(entry -> { SpanAnalyzer.Result analysis = entry.getValue(); renderAllSpansForOneTraceId(entry.getKey(), analysis, sb); diff --git a/tracing-test-utils/src/main/java/com/palantir/tracing/TimeBounds.java b/tracing-test-utils/src/main/java/com/palantir/tracing/TimeBounds.java index 7e9d4edae..51b9f0cbf 100644 --- a/tracing-test-utils/src/main/java/com/palantir/tracing/TimeBounds.java +++ b/tracing-test-utils/src/main/java/com/palantir/tracing/TimeBounds.java @@ -18,9 +18,15 @@ import com.palantir.tracing.api.Span; import java.util.Collection; +import java.util.Comparator; import java.util.concurrent.TimeUnit; -interface TimeBounds { +interface TimeBounds extends Comparable { + + Comparator COMPARATOR = Comparator + .comparingLong(TimeBounds::startMicros) + .thenComparing(TimeBounds::endNanos); + long startMicros(); long endNanos(); default long startNanos() { @@ -44,6 +50,11 @@ static TimeBounds fromSpans(Collection spans) { .max() .getAsLong(); return new TimeBounds() { + @Override + public int compareTo(TimeBounds other) { + return COMPARATOR.compare(this, other); + } + @Override public long startMicros() { return earliestStartMicros; diff --git a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java index 49ecd87e0..be228dde9 100644 --- a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java +++ b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java @@ -27,9 +27,7 @@ import java.util.concurrent.atomic.AtomicReference; import javax.annotation.concurrent.ThreadSafe; -/** - * For low-level library code only. - */ +/** For low-level library code only. */ @ThreadSafe public final class CrossThreadSpan { @@ -44,35 +42,26 @@ private CrossThreadSpan(String traceId, boolean observable, AtomicReference parentSpanId = trace.top().map(OpenSpan::getSpanId); - OpenSpan openSpan = OpenSpan.of( + OpenSpan openSpan1 = OpenSpan.of( operation, Tracers.randomId(), - spanType, + SpanType.LOCAL, parentSpanId, trace.getOriginatingSpanId()); - return new CrossThreadSpan(trace.getTraceId(), trace.isObservable(), new AtomicReference<>(openSpan)); + return new CrossThreadSpan(trace.getTraceId(), trace.isObservable(), new AtomicReference<>(openSpan1)); } /** Destructive operation - once you call this, you can't use it anymore. */ - public void complete() { + public void terminate() { OpenSpan openSpan1 = openSpan.getAndSet(null); Preconditions.checkState(openSpan1 != null, "CrossThreadSpan may only be completed once"); @@ -82,66 +71,48 @@ public void complete() { Tracer.notifyObservers(span); } - /** Destructive operation - once you call this, you can't use it anymore. */ - @MustBeClosed - public CloseableTracer completeAndStartSpan(String nextOperationName, SpanType spanType) { - complete(); - return threadLocalSibling(nextOperationName, spanType); - } - + /** Destructive - the calling thread's threadlocal trace state won't be restored after this. */ @MustBeClosed - public CloseableTracer threadLocalSibling(String nextOperationName, SpanType spanType) { + public CloseableTracer threadLocalSibling(String nextOperationName) { + // TODO(dfox): gross - nowhere else lets you make siblings... + terminate(); Tracer.clearCurrentTrace(); // a fresh copy doesn't have any of the old spans Trace rehydratedTrace = Trace.of(observable, traceId); Tracer.setTrace(rehydratedTrace); - return CloseableTracer.startSpan(nextOperationName, spanType); - } - - @MustBeClosed - public CloseableTracer threadLocalChild(String nextOperationName, SpanType spanType) { - Tracer.clearCurrentTrace(); - - Trace rehydratedTrace = Trace.of(observable, traceId); - // TODO(dfox): this is broken - we threadLocalSpans on a new threaed are not connected to the parent spanid - OpenSpan openSpan1 = openSpan.get(); - Preconditions.checkState(openSpan1 != null, "Can't create threadLocalChild after complete has been called"); - rehydratedTrace.push(openSpan1); // 🌶🌶🌶 someone could now call Tracer.fastCompleteSpan and emit this guy from - // multiple threads!!! - Tracer.setTrace(rehydratedTrace); - - return CloseableTracer.startSpan(nextOperationName, spanType); + return CloseableTracer.startSpan(nextOperationName, SpanType.LOCAL); } @CheckReturnValue - public CrossThreadSpan crossThreadChild(String operation, SpanType spanType) { + public CrossThreadSpan crossThreadChild(String operation) { OpenSpan openSpan1 = openSpan.get(); - Preconditions.checkState(openSpan1 != null, "Can't create crossThreadChild after complete has been called"); + Preconditions.checkState(openSpan1 != null, "Can't create crossThreadChild after terminate has been called"); - OpenSpan openSpan = OpenSpan.of( + OpenSpan openSpan11 = OpenSpan.of( operation, Tracers.randomId(), - spanType, + SpanType.LOCAL, Optional.of(openSpan1.getSpanId()), openSpan1.getOriginatingSpanId()); - return new CrossThreadSpan(traceId, Tracer.isTraceObservable(), new AtomicReference<>(openSpan)); + return new CrossThreadSpan(traceId, Tracer.isTraceObservable(), new AtomicReference<>(openSpan11)); } + /** This is also destructive because original trace state won't be restored afterwards. */ @MustBeClosed - public CloseableTracer completeAndCrossThread(String nextOperationName) { - return completeAndStartSpan(nextOperationName, SpanType.LOCAL); - } + public CloseableTracer threadLocalChild(String nextOperationName) { + Tracer.clearCurrentTrace(); - @CheckReturnValue - public CrossThreadSpan crossThreadChild(String operation) { - return crossThreadChild(operation, SpanType.LOCAL); - } + OpenSpan openSpan1 = openSpan.get(); + Preconditions.checkState(openSpan1 != null, "Can't create threadLocalChild after terminate has been called"); - @MustBeClosed - public CloseableTracer threadLocalChild(String nextOperationName) { - return threadLocalChild(nextOperationName, SpanType.LOCAL); + Trace rehydratedTrace = Trace.of(observable, traceId); + // 🌶🌶🌶 someone could now call Tracer.fastCompleteSpan and emit this guy from multiple threads!!! + rehydratedTrace.push(openSpan1); + Tracer.setTrace(rehydratedTrace); + + return CloseableTracer.startSpan(nextOperationName, SpanType.LOCAL); } } From abb9ff4bc2b8db1f10a6771b6b3bf19741269b4d Mon Sep 17 00:00:00 2001 From: Dan Fox Date: Thu, 29 Aug 2019 20:38:19 +0100 Subject: [PATCH 12/24] Rename methods, javadoc, rob++ --- .../com/palantir/tracing/TracingDemos.java | 72 +++++++------- .../tracing/TracingDemos/async_future.log | 43 +++++---- .../backoffs_on_a_scheduled_executor.log | 6 +- .../TracingDemos/handles_async_spans.log | 80 ++++++++-------- .../multi_producer_single_consumer.log | 80 ++++++++-------- .../TracingDemos/transformed_future.log | 6 +- .../com/palantir/tracing/CloseableTracer.java | 10 ++ .../com/palantir/tracing/CrossThreadSpan.java | 96 +++++++++++-------- 8 files changed, 213 insertions(+), 180 deletions(-) diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index 75d1de82d..c98a8c6a8 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -53,7 +53,7 @@ void handles_async_spans() throws Exception { CrossThreadSpan crossThread = CrossThreadSpan.startSpan("task-queue-time" + i); executorService.submit(() -> { - try (CloseableTracer t = crossThread.threadLocalSibling("task" + i)) { + try (CloseableTracer t = crossThread.sibling("task" + i)) { emit_nested_spans(); countDownLatch.countDown(); } @@ -72,44 +72,46 @@ void async_future() throws InterruptedException { final SettableFuture future = SettableFuture.create(); CountDownLatch latch = new CountDownLatch(numCallbacks); - // Tracer.startSpan() - assertThat(Tracer.hasTraceId()).isFalse(); + try (CloseableTracer tracer = CloseableTracer.startSpan("I am a root span")) { + String traceId = Tracer.getTraceId(); + // assertThat(Tracer.hasTraceId()).isFalse(); - IntStream.range(0, numCallbacks).forEach(i -> { + IntStream.range(0, numCallbacks).forEach(i -> { - assertThat(Tracer.hasTraceId()).isFalse(); - CrossThreadSpan span = CrossThreadSpan.startSpan("callback-pending" + i + " (cross thread span)"); - assertThat(Tracer.hasTraceId()).isFalse(); + // assertThat(Tracer.hasTraceId()).isFalse(); + CrossThreadSpan span = CrossThreadSpan.startSpan("callback-pending" + i + " (cross thread span)"); + // assertThat(Tracer.hasTraceId()).isFalse(); - Futures.addCallback(future, new FutureCallback() { - @Override - public void onSuccess(@Nullable Object result) { - assertThat(Tracer.hasTraceId()).isFalse(); + Futures.addCallback(future, new FutureCallback() { + @Override + public void onSuccess(@Nullable Object result) { + assertThat(Tracer.hasTraceId()).isFalse(); + try (CloseableTracer t = span.sibling("success" + i)) { + assertThat(Tracer.getTraceId()).isEqualTo(traceId); + Thread.sleep(10); + latch.countDown(); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new RuntimeException(e); + } + } - try (CloseableTracer t = span.threadLocalSibling("success" + i)) { - Thread.sleep(10); - latch.countDown(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new RuntimeException(e); + @Override + public void onFailure(Throwable throwable) { + Assertions.fail(); } - } + }, executorService); + }); - @Override - public void onFailure(Throwable throwable) { - Assertions.fail(); - } - }, executorService); - }); + // assertThat(Tracer.hasTraceId()).isFalse(); - assertThat(Tracer.hasTraceId()).isFalse(); + try (CloseableTracer root = CloseableTracer.startSpan("bbb")) { + executorService.submit(() -> { + future.set(null); + }); + } - try (CloseableTracer root = CloseableTracer.startSpan("bbb")) { - executorService.submit(() -> { - future.set(null); - }); } - assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); } @@ -151,7 +153,7 @@ public CrossThreadSpan span() { consumerExecutorService.submit(() -> { for (int i = 0; i < numElem; i++) { QueuedWork queuedWork = work.take(); - try (CloseableTracer processing = queuedWork.span().threadLocalSibling("consume" + queuedWork.name())) { + try (CloseableTracer processing = queuedWork.span().sibling("consume" + queuedWork.name())) { Thread.sleep(10); } consumeLatch.countDown(); @@ -175,9 +177,9 @@ void backoffs_on_a_scheduled_executor() throws InterruptedException { sleep(100, "first network call (will fail)"); - CrossThreadSpan backoff1 = overall.crossThreadChild("backoff for 20ms"); + CrossThreadSpan backoff1 = overall.crossThreadSpan("backoff for 20ms"); executor.schedule(() -> { - try (CloseableTracer attempt2 = backoff1.threadLocalSibling("secondAttempt")) { + try (CloseableTracer attempt2 = backoff1.sibling("secondAttempt")) { Thread.sleep(100); overall.terminate(); @@ -205,7 +207,7 @@ void transformed_future() throws InterruptedException { CrossThreadSpan foo = CrossThreadSpan.startSpan("foo"); FluentFuture.from(future) .transform(result -> { - try (CloseableTracer t = foo.threadLocalChild("first transform")) { + try (CloseableTracer t = foo.child("first transform")) { Thread.sleep(1000); return result; } catch (InterruptedException e) { @@ -213,7 +215,7 @@ void transformed_future() throws InterruptedException { } }, executor) .transform(result -> { - try (CloseableTracer t = foo.threadLocalChild("second transform")) { + try (CloseableTracer t = foo.child("second transform")) { Thread.sleep(1000); latch.countDown(); return result; diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log index 74354452e..0be9c9a23 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log @@ -1,21 +1,22 @@ -{"traceId":"c2944e0f5a0eccb3","parentSpanId":null,"spanId":"e00516928c69b166","operation":"bbb","startTimeMicroSeconds":1567104681769000,"durationNanoSeconds":52771331,"metadata":{}} -{"traceId":"dfe78687f215aad2","parentSpanId":null,"spanId":"5b283c6b55a2259e","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567104681755000,"durationNanoSeconds":66087636,"metadata":{}} -{"traceId":"b3683a204d4853ee","parentSpanId":null,"spanId":"c0326ae393bb0006","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":57000258,"metadata":{}} -{"traceId":"dfe78687f215aad2","parentSpanId":null,"spanId":"01713fd27377937a","operation":"success0","startTimeMicroSeconds":1567104681831000,"durationNanoSeconds":10158772,"metadata":{}} -{"traceId":"eda704a7cf56b895","parentSpanId":null,"spanId":"b31883103596c224","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":76245728,"metadata":{}} -{"traceId":"b3683a204d4853ee","parentSpanId":null,"spanId":"7a4cadc1f55199a2","operation":"success1","startTimeMicroSeconds":1567104681831000,"durationNanoSeconds":12380937,"metadata":{}} -{"traceId":"b98f0cca8b7cac3e","parentSpanId":null,"spanId":"22c4366cb0ce97ba","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":78825055,"metadata":{}} -{"traceId":"eda704a7cf56b895","parentSpanId":null,"spanId":"2a81b9bc9b7a8cbe","operation":"success2","startTimeMicroSeconds":1567104681841000,"durationNanoSeconds":10201614,"metadata":{}} -{"traceId":"8ed053cf3b669dd4","parentSpanId":null,"spanId":"56de9e8d8f73035a","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":86525664,"metadata":{}} -{"traceId":"b98f0cca8b7cac3e","parentSpanId":null,"spanId":"5c78ccb005b0cd6d","operation":"success3","startTimeMicroSeconds":1567104681844000,"durationNanoSeconds":10151543,"metadata":{}} -{"traceId":"7bb308334a113b35","parentSpanId":null,"spanId":"4e7a9463a86db607","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":89221851,"metadata":{}} -{"traceId":"8ed053cf3b669dd4","parentSpanId":null,"spanId":"feb970420f616681","operation":"success4","startTimeMicroSeconds":1567104681852000,"durationNanoSeconds":12049174,"metadata":{}} -{"traceId":"fa2bb9ea95166342","parentSpanId":null,"spanId":"cabd43adfa98dff6","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":98637283,"metadata":{}} -{"traceId":"7bb308334a113b35","parentSpanId":null,"spanId":"118b40d00902856d","operation":"success5","startTimeMicroSeconds":1567104681854000,"durationNanoSeconds":10203049,"metadata":{}} -{"traceId":"07e16796f688cd69","parentSpanId":null,"spanId":"39c57d0f51c97ffc","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":99466722,"metadata":{}} -{"traceId":"fa2bb9ea95166342","parentSpanId":null,"spanId":"541c2ec415611cff","operation":"success6","startTimeMicroSeconds":1567104681864000,"durationNanoSeconds":10116793,"metadata":{}} -{"traceId":"bbdada2a0e56f6f3","parentSpanId":null,"spanId":"c4938e1a3eb883df","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":108818930,"metadata":{}} -{"traceId":"07e16796f688cd69","parentSpanId":null,"spanId":"2caaae85af3be965","operation":"success7","startTimeMicroSeconds":1567104681865000,"durationNanoSeconds":10428157,"metadata":{}} -{"traceId":"352f6ac45dde53f2","parentSpanId":null,"spanId":"bd0ddf3f1f9b94ee","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567104681765000,"durationNanoSeconds":109988362,"metadata":{}} -{"traceId":"bbdada2a0e56f6f3","parentSpanId":null,"spanId":"afd5fbafef0239f7","operation":"success8","startTimeMicroSeconds":1567104681874000,"durationNanoSeconds":10222606,"metadata":{}} -{"traceId":"352f6ac45dde53f2","parentSpanId":null,"spanId":"b6f09c402d011da7","operation":"success9","startTimeMicroSeconds":1567104681875000,"durationNanoSeconds":10137365,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"81d2de3ae5907bc0","operation":"bbb","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":584665,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":null,"spanId":"56a482d0267a89e5","operation":"I am a root span","startTimeMicroSeconds":1567107474794000,"durationNanoSeconds":2669606,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"7fff5852bf85a261","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":1088290,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"870e7ab142169e06","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567107474795000,"durationNanoSeconds":2064314,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"df49d45ecafc4dc4","operation":"success1","startTimeMicroSeconds":1567107474797000,"durationNanoSeconds":15487559,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"fd2cc654d20b2dd1","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":16699223,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"623a395e6a45bcd0","operation":"success0","startTimeMicroSeconds":1567107474797000,"durationNanoSeconds":16387217,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"70c5dedfa550c858","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":17591043,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"322f360c01cb6544","operation":"success2","startTimeMicroSeconds":1567107474812000,"durationNanoSeconds":10448448,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"f83947aef85840fa","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":27258207,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"34f74265efa66915","operation":"success3","startTimeMicroSeconds":1567107474813000,"durationNanoSeconds":10180405,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"5c27ca2b0aea3a36","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":27857943,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"bd22e021af112534","operation":"success4","startTimeMicroSeconds":1567107474823000,"durationNanoSeconds":10107049,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"8f7958a72880b6df","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":37458402,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"62277dc74de8b32e","operation":"success5","startTimeMicroSeconds":1567107474824000,"durationNanoSeconds":10112789,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"7240d81a399e2440","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":38048172,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"78dee8a39cb8638d","operation":"success6","startTimeMicroSeconds":1567107474833000,"durationNanoSeconds":10099817,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"88067f6f5cba3f42","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":47649077,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"1ce3ef873672a1ae","operation":"success7","startTimeMicroSeconds":1567107474834000,"durationNanoSeconds":10086574,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"3b15b8912e8a0e02","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":48198341,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"22630a033209e2ab","operation":"success8","startTimeMicroSeconds":1567107474843000,"durationNanoSeconds":10413374,"metadata":{}} +{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"8fca03e178bca188","operation":"success9","startTimeMicroSeconds":1567107474844000,"durationNanoSeconds":10056771,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log index 154c5398d..103babdb6 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log @@ -1,3 +1,3 @@ -{"traceId":"660a5e0bf8a0b040","parentSpanId":null,"spanId":"9729c56ed062f3b9","operation":"first network call (will fail)","startTimeMicroSeconds":1567104767824000,"durationNanoSeconds":103386813,"metadata":{}} -{"traceId":"13b8dad199449187","parentSpanId":"6137573d83d15721","spanId":"94e8cade51c237b6","operation":"backoff for 20ms","startTimeMicroSeconds":1567104767927000,"durationNanoSeconds":23096726,"metadata":{}} -{"traceId":"13b8dad199449187","parentSpanId":null,"spanId":"6137573d83d15721","operation":"overall request","startTimeMicroSeconds":1567104767821000,"durationNanoSeconds":229672676,"metadata":{}} +{"traceId":"3267285d3cfbe13d","parentSpanId":null,"spanId":"ee6a82e44aae587a","operation":"first network call (will fail)","startTimeMicroSeconds":1567107474290000,"durationNanoSeconds":101461231,"metadata":{}} +{"traceId":"b1ad7624306b36d5","parentSpanId":"5c09b7d82bee3796","spanId":"1088a0c2aa19012e","operation":"backoff for 20ms","startTimeMicroSeconds":1567107474392000,"durationNanoSeconds":20907211,"metadata":{}} +{"traceId":"b1ad7624306b36d5","parentSpanId":null,"spanId":"5c09b7d82bee3796","operation":"overall request","startTimeMicroSeconds":1567107474286000,"durationNanoSeconds":226500123,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log index 79eb0b73d..3e1ca7502 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log @@ -1,40 +1,40 @@ -{"traceId":"b29e2bcf6eda4fbd","parentSpanId":null,"spanId":"f6d587fb170063b6","operation":"task-queue-time0","startTimeMicroSeconds":1567104767142000,"durationNanoSeconds":2122303,"metadata":{}} -{"traceId":"43b08de88a252141","parentSpanId":null,"spanId":"8b8fc16f5765bc26","operation":"task-queue-time1","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":279301,"metadata":{}} -{"traceId":"43b08de88a252141","parentSpanId":"ed94e939f396e8d5","spanId":"42949b7b5e4e6657","operation":"sleep 100","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":102537300,"metadata":{}} -{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"63cbadecb3aaaf17","spanId":"02e424e3c1bf19f4","operation":"sleep 100","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":102556844,"metadata":{}} -{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"e70ce1fa2c30c766","spanId":"1ff549458e06e443","operation":"sleep 90","startTimeMicroSeconds":1567104767247000,"durationNanoSeconds":93494797,"metadata":{}} -{"traceId":"43b08de88a252141","parentSpanId":"0eadc4c425060eb4","spanId":"1fbde771e7033a9d","operation":"sleep 90","startTimeMicroSeconds":1567104767247000,"durationNanoSeconds":93497004,"metadata":{}} -{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"63cbadecb3aaaf17","spanId":"e70ce1fa2c30c766","operation":"nested","startTimeMicroSeconds":1567104767247000,"durationNanoSeconds":93541372,"metadata":{}} -{"traceId":"43b08de88a252141","parentSpanId":"ed94e939f396e8d5","spanId":"0eadc4c425060eb4","operation":"nested","startTimeMicroSeconds":1567104767247000,"durationNanoSeconds":93548453,"metadata":{}} -{"traceId":"43b08de88a252141","parentSpanId":"ed94e939f396e8d5","spanId":"51e9b0357c93e631","operation":"sleep 10","startTimeMicroSeconds":1567104767340000,"durationNanoSeconds":10174535,"metadata":{}} -{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"63cbadecb3aaaf17","spanId":"1782a4a4acf10336","operation":"sleep 10","startTimeMicroSeconds":1567104767340000,"durationNanoSeconds":10174621,"metadata":{}} -{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"af93a0cb4c972a04","spanId":"63cbadecb3aaaf17","operation":"first","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":206448103,"metadata":{}} -{"traceId":"43b08de88a252141","parentSpanId":"fcf094bcaa29eb49","spanId":"ed94e939f396e8d5","operation":"first","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":206392849,"metadata":{}} -{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"575e464603ca9e8e","spanId":"4f0ea3f110d88a2e","operation":"sleep 100","startTimeMicroSeconds":1567104767351000,"durationNanoSeconds":103593898,"metadata":{}} -{"traceId":"43b08de88a252141","parentSpanId":"5a5400754f2f42a5","spanId":"bd607f11148c3bd1","operation":"sleep 100","startTimeMicroSeconds":1567104767351000,"durationNanoSeconds":103597180,"metadata":{}} -{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"af93a0cb4c972a04","spanId":"575e464603ca9e8e","operation":"second","startTimeMicroSeconds":1567104767351000,"durationNanoSeconds":103649296,"metadata":{}} -{"traceId":"43b08de88a252141","parentSpanId":"fcf094bcaa29eb49","spanId":"5a5400754f2f42a5","operation":"second","startTimeMicroSeconds":1567104767351000,"durationNanoSeconds":103657416,"metadata":{}} -{"traceId":"b29e2bcf6eda4fbd","parentSpanId":"9ab27c33022b96ae","spanId":"af93a0cb4c972a04","operation":"emit_nested_spans","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":310164465,"metadata":{}} -{"traceId":"43b08de88a252141","parentSpanId":"be05682e70586cae","spanId":"fcf094bcaa29eb49","operation":"emit_nested_spans","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":310109130,"metadata":{}} -{"traceId":"b29e2bcf6eda4fbd","parentSpanId":null,"spanId":"9ab27c33022b96ae","operation":"task0","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":310244949,"metadata":{}} -{"traceId":"43b08de88a252141","parentSpanId":null,"spanId":"be05682e70586cae","operation":"task1","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":310177625,"metadata":{}} -{"traceId":"cc5ee247e07bd79d","parentSpanId":null,"spanId":"e7c29bf370568866","operation":"task-queue-time2","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":310413600,"metadata":{}} -{"traceId":"b63d8b256d4cd7f7","parentSpanId":null,"spanId":"bb35d59c819a3454","operation":"task-queue-time3","startTimeMicroSeconds":1567104767144000,"durationNanoSeconds":310310593,"metadata":{}} -{"traceId":"b63d8b256d4cd7f7","parentSpanId":"335bc92d8fa4452f","spanId":"0de020e6321f7af1","operation":"sleep 100","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":100472208,"metadata":{}} -{"traceId":"cc5ee247e07bd79d","parentSpanId":"dfd4569122a058b3","spanId":"47dff4a5c43aefbc","operation":"sleep 100","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":100458146,"metadata":{}} -{"traceId":"cc5ee247e07bd79d","parentSpanId":"3f567c82eb478029","spanId":"ddfdf363b008c73b","operation":"sleep 90","startTimeMicroSeconds":1567104767555000,"durationNanoSeconds":92330043,"metadata":{}} -{"traceId":"b63d8b256d4cd7f7","parentSpanId":"b1e394d9cdd6d11d","spanId":"6445017cb63c7ba9","operation":"sleep 90","startTimeMicroSeconds":1567104767555000,"durationNanoSeconds":92329180,"metadata":{}} -{"traceId":"b63d8b256d4cd7f7","parentSpanId":"335bc92d8fa4452f","spanId":"b1e394d9cdd6d11d","operation":"nested","startTimeMicroSeconds":1567104767555000,"durationNanoSeconds":92379456,"metadata":{}} -{"traceId":"cc5ee247e07bd79d","parentSpanId":"dfd4569122a058b3","spanId":"3f567c82eb478029","operation":"nested","startTimeMicroSeconds":1567104767555000,"durationNanoSeconds":92380566,"metadata":{}} -{"traceId":"b63d8b256d4cd7f7","parentSpanId":"335bc92d8fa4452f","spanId":"2ac986646278d63d","operation":"sleep 10","startTimeMicroSeconds":1567104767647000,"durationNanoSeconds":10082845,"metadata":{}} -{"traceId":"cc5ee247e07bd79d","parentSpanId":"dfd4569122a058b3","spanId":"2ea889caee8f7031","operation":"sleep 10","startTimeMicroSeconds":1567104767647000,"durationNanoSeconds":10073932,"metadata":{}} -{"traceId":"b63d8b256d4cd7f7","parentSpanId":"8489fc14d9c2b9f6","spanId":"335bc92d8fa4452f","operation":"first","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":203059829,"metadata":{}} -{"traceId":"cc5ee247e07bd79d","parentSpanId":"0749f3567b2b5b39","spanId":"dfd4569122a058b3","operation":"first","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":203043842,"metadata":{}} -{"traceId":"b63d8b256d4cd7f7","parentSpanId":"89e043f292b5f454","spanId":"e53bb2ccb2aedaef","operation":"sleep 100","startTimeMicroSeconds":1567104767658000,"durationNanoSeconds":103057078,"metadata":{}} -{"traceId":"cc5ee247e07bd79d","parentSpanId":"8e33335f3d117037","spanId":"834b16470948a1c8","operation":"sleep 100","startTimeMicroSeconds":1567104767658000,"durationNanoSeconds":103057078,"metadata":{}} -{"traceId":"cc5ee247e07bd79d","parentSpanId":"0749f3567b2b5b39","spanId":"8e33335f3d117037","operation":"second","startTimeMicroSeconds":1567104767658000,"durationNanoSeconds":103104533,"metadata":{}} -{"traceId":"b63d8b256d4cd7f7","parentSpanId":"8489fc14d9c2b9f6","spanId":"89e043f292b5f454","operation":"second","startTimeMicroSeconds":1567104767658000,"durationNanoSeconds":103108671,"metadata":{}} -{"traceId":"b63d8b256d4cd7f7","parentSpanId":"b69617f4dcd2c546","spanId":"8489fc14d9c2b9f6","operation":"emit_nested_spans","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":306210624,"metadata":{}} -{"traceId":"cc5ee247e07bd79d","parentSpanId":"f769ba780b1011f1","spanId":"0749f3567b2b5b39","operation":"emit_nested_spans","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":306195648,"metadata":{}} -{"traceId":"b63d8b256d4cd7f7","parentSpanId":null,"spanId":"b69617f4dcd2c546","operation":"task3","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":306251302,"metadata":{}} -{"traceId":"cc5ee247e07bd79d","parentSpanId":null,"spanId":"f769ba780b1011f1","operation":"task2","startTimeMicroSeconds":1567104767454000,"durationNanoSeconds":306236445,"metadata":{}} +{"traceId":"2bf56b84eb708715","parentSpanId":null,"spanId":"741bc2efc7368d95","operation":"task-queue-time0","startTimeMicroSeconds":1567107473613000,"durationNanoSeconds":2223790,"metadata":{}} +{"traceId":"c1aae21d838e19e6","parentSpanId":null,"spanId":"c3ac3195968325b6","operation":"task-queue-time1","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":297891,"metadata":{}} +{"traceId":"2bf56b84eb708715","parentSpanId":"86c49b325ef032b8","spanId":"86509de338f865df","operation":"sleep 100","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":101295112,"metadata":{}} +{"traceId":"c1aae21d838e19e6","parentSpanId":"6c9955ebb644db04","spanId":"40169d727828adc7","operation":"sleep 100","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":101220105,"metadata":{}} +{"traceId":"2bf56b84eb708715","parentSpanId":"0081cd74234072fb","spanId":"11cdad0bd22fb5ff","operation":"sleep 90","startTimeMicroSeconds":1567107473717000,"durationNanoSeconds":91748296,"metadata":{}} +{"traceId":"c1aae21d838e19e6","parentSpanId":"2725668a7e18f4f8","spanId":"ebb4dad35d4981a9","operation":"sleep 90","startTimeMicroSeconds":1567107473717000,"durationNanoSeconds":91748088,"metadata":{}} +{"traceId":"2bf56b84eb708715","parentSpanId":"86c49b325ef032b8","spanId":"0081cd74234072fb","operation":"nested","startTimeMicroSeconds":1567107473717000,"durationNanoSeconds":91793798,"metadata":{}} +{"traceId":"c1aae21d838e19e6","parentSpanId":"6c9955ebb644db04","spanId":"2725668a7e18f4f8","operation":"nested","startTimeMicroSeconds":1567107473717000,"durationNanoSeconds":91794737,"metadata":{}} +{"traceId":"c1aae21d838e19e6","parentSpanId":"6c9955ebb644db04","spanId":"495a5cd213083a90","operation":"sleep 10","startTimeMicroSeconds":1567107473808000,"durationNanoSeconds":10232560,"metadata":{}} +{"traceId":"c1aae21d838e19e6","parentSpanId":"1d0a963d1acc12cc","spanId":"6c9955ebb644db04","operation":"first","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":203386893,"metadata":{}} +{"traceId":"2bf56b84eb708715","parentSpanId":"86c49b325ef032b8","spanId":"5b0debb43c9929d2","operation":"sleep 10","startTimeMicroSeconds":1567107473808000,"durationNanoSeconds":11120796,"metadata":{}} +{"traceId":"2bf56b84eb708715","parentSpanId":"091c0ac6bc1c2bf1","spanId":"86c49b325ef032b8","operation":"first","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":204347403,"metadata":{}} +{"traceId":"c1aae21d838e19e6","parentSpanId":"ee89aca2514a1dce","spanId":"098e6118a976168e","operation":"sleep 100","startTimeMicroSeconds":1567107473819000,"durationNanoSeconds":104148790,"metadata":{}} +{"traceId":"2bf56b84eb708715","parentSpanId":"66dcc97f50569219","spanId":"fa1b1d9d4ac5a656","operation":"sleep 100","startTimeMicroSeconds":1567107473820000,"durationNanoSeconds":103278313,"metadata":{}} +{"traceId":"c1aae21d838e19e6","parentSpanId":"1d0a963d1acc12cc","spanId":"ee89aca2514a1dce","operation":"second","startTimeMicroSeconds":1567107473819000,"durationNanoSeconds":104217831,"metadata":{}} +{"traceId":"2bf56b84eb708715","parentSpanId":"091c0ac6bc1c2bf1","spanId":"66dcc97f50569219","operation":"second","startTimeMicroSeconds":1567107473820000,"durationNanoSeconds":103340080,"metadata":{}} +{"traceId":"c1aae21d838e19e6","parentSpanId":"b13be1502a6ae939","spanId":"1d0a963d1acc12cc","operation":"emit_nested_spans","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":307666578,"metadata":{}} +{"traceId":"2bf56b84eb708715","parentSpanId":"1b0f6259b944841c","spanId":"091c0ac6bc1c2bf1","operation":"emit_nested_spans","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":307756518,"metadata":{}} +{"traceId":"2bf56b84eb708715","parentSpanId":null,"spanId":"1b0f6259b944841c","operation":"task0","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":307876125,"metadata":{}} +{"traceId":"c1aae21d838e19e6","parentSpanId":null,"spanId":"b13be1502a6ae939","operation":"task1","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":307753723,"metadata":{}} +{"traceId":"d817080adaae6d61","parentSpanId":null,"spanId":"c9455e463f7b6d90","operation":"task-queue-time3","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":307862075,"metadata":{}} +{"traceId":"78a6371ad9850a67","parentSpanId":null,"spanId":"2c8b9d6d61abf34a","operation":"task-queue-time2","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":307956827,"metadata":{}} +{"traceId":"d817080adaae6d61","parentSpanId":"a6b2db7e2b5f6f9b","spanId":"8616fbf984185e13","operation":"sleep 100","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":100146690,"metadata":{}} +{"traceId":"78a6371ad9850a67","parentSpanId":"862d6c9f40018ebe","spanId":"745d8a6a895e3a0a","operation":"sleep 100","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":100107954,"metadata":{}} +{"traceId":"d817080adaae6d61","parentSpanId":"36cff5f72ba31568","spanId":"7f5c15283c4bb38b","operation":"sleep 90","startTimeMicroSeconds":1567107474023000,"durationNanoSeconds":92223703,"metadata":{}} +{"traceId":"78a6371ad9850a67","parentSpanId":"87ac64787268040f","spanId":"0abc251b9224c83a","operation":"sleep 90","startTimeMicroSeconds":1567107474023000,"durationNanoSeconds":92225602,"metadata":{}} +{"traceId":"d817080adaae6d61","parentSpanId":"a6b2db7e2b5f6f9b","spanId":"36cff5f72ba31568","operation":"nested","startTimeMicroSeconds":1567107474023000,"durationNanoSeconds":92290755,"metadata":{}} +{"traceId":"78a6371ad9850a67","parentSpanId":"862d6c9f40018ebe","spanId":"87ac64787268040f","operation":"nested","startTimeMicroSeconds":1567107474023000,"durationNanoSeconds":92297943,"metadata":{}} +{"traceId":"78a6371ad9850a67","parentSpanId":"862d6c9f40018ebe","spanId":"59579cbe2c1b53ff","operation":"sleep 10","startTimeMicroSeconds":1567107474116000,"durationNanoSeconds":10374601,"metadata":{}} +{"traceId":"d817080adaae6d61","parentSpanId":"a6b2db7e2b5f6f9b","spanId":"62e690541f5972af","operation":"sleep 10","startTimeMicroSeconds":1567107474116000,"durationNanoSeconds":10374586,"metadata":{}} +{"traceId":"d817080adaae6d61","parentSpanId":"a2a6d0ddc3dceab9","spanId":"a6b2db7e2b5f6f9b","operation":"first","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":202976314,"metadata":{}} +{"traceId":"78a6371ad9850a67","parentSpanId":"88e311179740aefd","spanId":"862d6c9f40018ebe","operation":"first","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":202939713,"metadata":{}} +{"traceId":"d817080adaae6d61","parentSpanId":"7a373e987148f445","spanId":"f6524028fd6a291f","operation":"sleep 100","startTimeMicroSeconds":1567107474126000,"durationNanoSeconds":102714148,"metadata":{}} +{"traceId":"78a6371ad9850a67","parentSpanId":"fb15c81fde993641","spanId":"05e7be85d0d669d4","operation":"sleep 100","startTimeMicroSeconds":1567107474126000,"durationNanoSeconds":102707064,"metadata":{}} +{"traceId":"d817080adaae6d61","parentSpanId":"a2a6d0ddc3dceab9","spanId":"7a373e987148f445","operation":"second","startTimeMicroSeconds":1567107474126000,"durationNanoSeconds":102767413,"metadata":{}} +{"traceId":"78a6371ad9850a67","parentSpanId":"88e311179740aefd","spanId":"fb15c81fde993641","operation":"second","startTimeMicroSeconds":1567107474126000,"durationNanoSeconds":102758201,"metadata":{}} +{"traceId":"d817080adaae6d61","parentSpanId":"816be5faa98bd7e8","spanId":"a2a6d0ddc3dceab9","operation":"emit_nested_spans","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":305794848,"metadata":{}} +{"traceId":"78a6371ad9850a67","parentSpanId":"bb758a12d1c584f2","spanId":"88e311179740aefd","operation":"emit_nested_spans","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":305786772,"metadata":{}} +{"traceId":"d817080adaae6d61","parentSpanId":null,"spanId":"816be5faa98bd7e8","operation":"task3","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":305839963,"metadata":{}} +{"traceId":"78a6371ad9850a67","parentSpanId":null,"spanId":"bb758a12d1c584f2","operation":"task2","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":305835040,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log index 01b887299..cab66face 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log @@ -1,40 +1,40 @@ -{"traceId":"3ab4abc23c726bd3","parentSpanId":null,"spanId":"14f2345c64086e5a","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567104768059000,"durationNanoSeconds":4385803,"metadata":{}} -{"traceId":"3ab4abc23c726bd3","parentSpanId":null,"spanId":"f065e24b10cf375f","operation":"consumework0","startTimeMicroSeconds":1567104768064000,"durationNanoSeconds":10653409,"metadata":{}} -{"traceId":"5bd3042cc98888ac","parentSpanId":null,"spanId":"99c4751102eb40dd","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567104768061000,"durationNanoSeconds":13283259,"metadata":{}} -{"traceId":"5bd3042cc98888ac","parentSpanId":null,"spanId":"50f5d58d74484bf9","operation":"consumework1","startTimeMicroSeconds":1567104768075000,"durationNanoSeconds":12071028,"metadata":{}} -{"traceId":"58e34778da0a01a2","parentSpanId":null,"spanId":"65a528eac689c7b9","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":25038006,"metadata":{}} -{"traceId":"58e34778da0a01a2","parentSpanId":null,"spanId":"21d5a58ead386244","operation":"consumework2","startTimeMicroSeconds":1567104768087000,"durationNanoSeconds":10528551,"metadata":{}} -{"traceId":"a8636319a1d12208","parentSpanId":null,"spanId":"bdb36afe4d69c578","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":35603665,"metadata":{}} -{"traceId":"a8636319a1d12208","parentSpanId":null,"spanId":"d73ad2fc928d867c","operation":"consumework3","startTimeMicroSeconds":1567104768097000,"durationNanoSeconds":10746871,"metadata":{}} -{"traceId":"fe6e7c93c33635ce","parentSpanId":null,"spanId":"bb68335803c41e12","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":46415375,"metadata":{}} -{"traceId":"fe6e7c93c33635ce","parentSpanId":null,"spanId":"60db2498f80e18b9","operation":"consumework4","startTimeMicroSeconds":1567104768108000,"durationNanoSeconds":10908900,"metadata":{}} -{"traceId":"475558cccb6fee68","parentSpanId":null,"spanId":"0db5a3fc8958881e","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":57383367,"metadata":{}} -{"traceId":"475558cccb6fee68","parentSpanId":null,"spanId":"ab4d2dc15b72bd1a","operation":"consumework5","startTimeMicroSeconds":1567104768119000,"durationNanoSeconds":10138405,"metadata":{}} -{"traceId":"ba3080bcea717414","parentSpanId":null,"spanId":"883af5de1aad9e66","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":67572783,"metadata":{}} -{"traceId":"ba3080bcea717414","parentSpanId":null,"spanId":"a5996d8b02ee4c6a","operation":"consumework6","startTimeMicroSeconds":1567104768130000,"durationNanoSeconds":10304128,"metadata":{}} -{"traceId":"dc052d25c80cec6a","parentSpanId":null,"spanId":"1ec6d67f1131bf29","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":77970487,"metadata":{}} -{"traceId":"dc052d25c80cec6a","parentSpanId":null,"spanId":"2e0c44ab271957af","operation":"consumework7","startTimeMicroSeconds":1567104768140000,"durationNanoSeconds":10116925,"metadata":{}} -{"traceId":"6941b923d4edacbf","parentSpanId":null,"spanId":"3eb1755f70ab72a5","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":88158608,"metadata":{}} -{"traceId":"6941b923d4edacbf","parentSpanId":null,"spanId":"c13eeb98c6f92867","operation":"consumework8","startTimeMicroSeconds":1567104768150000,"durationNanoSeconds":10229097,"metadata":{}} -{"traceId":"b055333f47f8124a","parentSpanId":null,"spanId":"6a8c9a4c66fb5b17","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":98465943,"metadata":{}} -{"traceId":"b055333f47f8124a","parentSpanId":null,"spanId":"6c910dda997beecf","operation":"consumework9","startTimeMicroSeconds":1567104768161000,"durationNanoSeconds":10303568,"metadata":{}} -{"traceId":"a5344dfc295354eb","parentSpanId":null,"spanId":"523bf1a31af2e35c","operation":"callback-pending10 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":108826731,"metadata":{}} -{"traceId":"a5344dfc295354eb","parentSpanId":null,"spanId":"cead3a69f919473f","operation":"consumework10","startTimeMicroSeconds":1567104768171000,"durationNanoSeconds":10649491,"metadata":{}} -{"traceId":"bb97bc831df0dcd5","parentSpanId":null,"spanId":"8beb4c1b26e1f938","operation":"callback-pending11 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":119539887,"metadata":{}} -{"traceId":"bb97bc831df0dcd5","parentSpanId":null,"spanId":"d3ea1cb1e0457919","operation":"consumework11","startTimeMicroSeconds":1567104768182000,"durationNanoSeconds":10344982,"metadata":{}} -{"traceId":"f049cbe08b2f6944","parentSpanId":null,"spanId":"6f0a45d72dea1dd0","operation":"callback-pending12 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":129961066,"metadata":{}} -{"traceId":"f049cbe08b2f6944","parentSpanId":null,"spanId":"14d71c07e4337662","operation":"consumework12","startTimeMicroSeconds":1567104768192000,"durationNanoSeconds":10686925,"metadata":{}} -{"traceId":"6de21a9fd43f6ea7","parentSpanId":null,"spanId":"7fc72b3981030205","operation":"callback-pending13 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":140728764,"metadata":{}} -{"traceId":"6de21a9fd43f6ea7","parentSpanId":null,"spanId":"9798aed8645c1db3","operation":"consumework13","startTimeMicroSeconds":1567104768203000,"durationNanoSeconds":10089750,"metadata":{}} -{"traceId":"c187f5a26920a088","parentSpanId":null,"spanId":"de7c610ebbaec445","operation":"callback-pending14 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":150892104,"metadata":{}} -{"traceId":"c187f5a26920a088","parentSpanId":null,"spanId":"1068446e45ec7848","operation":"consumework14","startTimeMicroSeconds":1567104768213000,"durationNanoSeconds":10132615,"metadata":{}} -{"traceId":"201a05ad4c08684c","parentSpanId":null,"spanId":"3be359f9f7001ba1","operation":"callback-pending15 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":161100351,"metadata":{}} -{"traceId":"201a05ad4c08684c","parentSpanId":null,"spanId":"b61f3b1e9c94d7a1","operation":"consumework15","startTimeMicroSeconds":1567104768223000,"durationNanoSeconds":10248324,"metadata":{}} -{"traceId":"bbd7fa00ea814521","parentSpanId":null,"spanId":"7f9c80add7e9e5af","operation":"callback-pending16 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":171450767,"metadata":{}} -{"traceId":"bbd7fa00ea814521","parentSpanId":null,"spanId":"bc904f71d06430ca","operation":"consumework16","startTimeMicroSeconds":1567104768234000,"durationNanoSeconds":10404894,"metadata":{}} -{"traceId":"2de688a35c42b828","parentSpanId":null,"spanId":"fb873af06aeac4f2","operation":"callback-pending17 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":181881107,"metadata":{}} -{"traceId":"2de688a35c42b828","parentSpanId":null,"spanId":"ec27e15d969e26ef","operation":"consumework17","startTimeMicroSeconds":1567104768244000,"durationNanoSeconds":10154093,"metadata":{}} -{"traceId":"98bf60cece35ab78","parentSpanId":null,"spanId":"029446b19c700963","operation":"callback-pending18 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":192060521,"metadata":{}} -{"traceId":"98bf60cece35ab78","parentSpanId":null,"spanId":"684cd1c6d36290bc","operation":"consumework18","startTimeMicroSeconds":1567104768255000,"durationNanoSeconds":10135076,"metadata":{}} -{"traceId":"8bf13f754055959d","parentSpanId":null,"spanId":"ff05c4470858dddb","operation":"callback-pending19 (cross thread span)","startTimeMicroSeconds":1567104768062000,"durationNanoSeconds":202250504,"metadata":{}} -{"traceId":"8bf13f754055959d","parentSpanId":null,"spanId":"d9e16abeb47225e4","operation":"consumework19","startTimeMicroSeconds":1567104768265000,"durationNanoSeconds":10142547,"metadata":{}} +{"traceId":"55c0e6bc5d1ddd51","parentSpanId":null,"spanId":"35ee7601c5c0226e","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567107474524000,"durationNanoSeconds":2215693,"metadata":{}} +{"traceId":"55c0e6bc5d1ddd51","parentSpanId":null,"spanId":"b284f3fe1f72c007","operation":"consumework1","startTimeMicroSeconds":1567107474526000,"durationNanoSeconds":10227486,"metadata":{}} +{"traceId":"7d6f608d53290463","parentSpanId":null,"spanId":"086bf82b3f911269","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567107474523000,"durationNanoSeconds":14105942,"metadata":{}} +{"traceId":"7d6f608d53290463","parentSpanId":null,"spanId":"79a7055602f6c319","operation":"consumework0","startTimeMicroSeconds":1567107474537000,"durationNanoSeconds":10712944,"metadata":{}} +{"traceId":"c0903c855a08497e","parentSpanId":null,"spanId":"4f8835b670049431","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567107474524000,"durationNanoSeconds":23184172,"metadata":{}} +{"traceId":"c0903c855a08497e","parentSpanId":null,"spanId":"0fca1906dde3ec9b","operation":"consumework2","startTimeMicroSeconds":1567107474548000,"durationNanoSeconds":10227405,"metadata":{}} +{"traceId":"12023779ad0f24f8","parentSpanId":null,"spanId":"e5b3da94439d90d7","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":33105476,"metadata":{}} +{"traceId":"12023779ad0f24f8","parentSpanId":null,"spanId":"a608eddd459eafe9","operation":"consumework4","startTimeMicroSeconds":1567107474558000,"durationNanoSeconds":10459334,"metadata":{}} +{"traceId":"f3c59fbfce1881aa","parentSpanId":null,"spanId":"fb56e797aa8e01f5","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":43697026,"metadata":{}} +{"traceId":"f3c59fbfce1881aa","parentSpanId":null,"spanId":"dd2125a622faf78d","operation":"consumework3","startTimeMicroSeconds":1567107474568000,"durationNanoSeconds":10883410,"metadata":{}} +{"traceId":"73cf511168384355","parentSpanId":null,"spanId":"9ddeb2731ebed9aa","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":54581504,"metadata":{}} +{"traceId":"73cf511168384355","parentSpanId":null,"spanId":"d72d1009bfd480d7","operation":"consumework5","startTimeMicroSeconds":1567107474579000,"durationNanoSeconds":10170840,"metadata":{}} +{"traceId":"118b8ebba2c41e8f","parentSpanId":null,"spanId":"dec49fc89392d80b","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":64831161,"metadata":{}} +{"traceId":"118b8ebba2c41e8f","parentSpanId":null,"spanId":"f7531975d53cdda8","operation":"consumework6","startTimeMicroSeconds":1567107474590000,"durationNanoSeconds":10469436,"metadata":{}} +{"traceId":"d812563cd7f46d49","parentSpanId":null,"spanId":"8a682de25ce90a7b","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":75349219,"metadata":{}} +{"traceId":"d812563cd7f46d49","parentSpanId":null,"spanId":"8f0529b650060561","operation":"consumework7","startTimeMicroSeconds":1567107474600000,"durationNanoSeconds":10814086,"metadata":{}} +{"traceId":"57bdb55ce128f0c2","parentSpanId":null,"spanId":"312cbb61e6aa17b8","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":86224571,"metadata":{}} +{"traceId":"57bdb55ce128f0c2","parentSpanId":null,"spanId":"16e534731e650a87","operation":"consumework8","startTimeMicroSeconds":1567107474611000,"durationNanoSeconds":10245232,"metadata":{}} +{"traceId":"64e8426e92bc9ced","parentSpanId":null,"spanId":"7b00b64d34b18ff8","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":96521517,"metadata":{}} +{"traceId":"64e8426e92bc9ced","parentSpanId":null,"spanId":"1fca947b084d0242","operation":"consumework9","startTimeMicroSeconds":1567107474621000,"durationNanoSeconds":10090469,"metadata":{}} +{"traceId":"1bf9d714c2755880","parentSpanId":null,"spanId":"c5e98fbaf82bb9d6","operation":"callback-pending10 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":106581238,"metadata":{}} +{"traceId":"1bf9d714c2755880","parentSpanId":null,"spanId":"aeeaa6a5e666f49d","operation":"consumework10","startTimeMicroSeconds":1567107474632000,"durationNanoSeconds":10133490,"metadata":{}} +{"traceId":"0ae6f5cea912c98b","parentSpanId":null,"spanId":"de7f17726f0b87f2","operation":"callback-pending11 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":116758184,"metadata":{}} +{"traceId":"0ae6f5cea912c98b","parentSpanId":null,"spanId":"be29c75d0dd05bd2","operation":"consumework11","startTimeMicroSeconds":1567107474642000,"durationNanoSeconds":10319599,"metadata":{}} +{"traceId":"1db7328a5f2f7322","parentSpanId":null,"spanId":"1311d846a32f19fc","operation":"callback-pending12 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":127111691,"metadata":{}} +{"traceId":"1db7328a5f2f7322","parentSpanId":null,"spanId":"edcca7fe2ae182bd","operation":"consumework12","startTimeMicroSeconds":1567107474652000,"durationNanoSeconds":10937910,"metadata":{}} +{"traceId":"7f48dac93360eae4","parentSpanId":null,"spanId":"9e5dcb9e9860dc08","operation":"callback-pending13 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":138108328,"metadata":{}} +{"traceId":"7f48dac93360eae4","parentSpanId":null,"spanId":"6d7e3e7599f481ef","operation":"consumework13","startTimeMicroSeconds":1567107474663000,"durationNanoSeconds":10101249,"metadata":{}} +{"traceId":"f6074bc380cc0f8d","parentSpanId":null,"spanId":"4f7bec147d07af16","operation":"callback-pending14 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":148288328,"metadata":{}} +{"traceId":"f6074bc380cc0f8d","parentSpanId":null,"spanId":"b8b929717a9fbbca","operation":"consumework14","startTimeMicroSeconds":1567107474674000,"durationNanoSeconds":10585047,"metadata":{}} +{"traceId":"99f518cf2120ef46","parentSpanId":null,"spanId":"04847a3a407f2c7f","operation":"callback-pending15 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":158946566,"metadata":{}} +{"traceId":"99f518cf2120ef46","parentSpanId":null,"spanId":"27817c117050907c","operation":"consumework15","startTimeMicroSeconds":1567107474684000,"durationNanoSeconds":10456162,"metadata":{}} +{"traceId":"6793e3aa4a03eb83","parentSpanId":null,"spanId":"dae37b792d88de3e","operation":"callback-pending16 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":169453994,"metadata":{}} +{"traceId":"6793e3aa4a03eb83","parentSpanId":null,"spanId":"9185cce3ce5127bc","operation":"consumework16","startTimeMicroSeconds":1567107474695000,"durationNanoSeconds":10133037,"metadata":{}} +{"traceId":"c279eecc87111b5f","parentSpanId":null,"spanId":"cdb690a4af52a7ba","operation":"callback-pending17 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":179621603,"metadata":{}} +{"traceId":"c279eecc87111b5f","parentSpanId":null,"spanId":"24d2e13db8fff4f8","operation":"consumework17","startTimeMicroSeconds":1567107474705000,"durationNanoSeconds":10383673,"metadata":{}} +{"traceId":"7eef6710cd8b855b","parentSpanId":null,"spanId":"c07040b5facd31d5","operation":"callback-pending18 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":190014038,"metadata":{}} +{"traceId":"7eef6710cd8b855b","parentSpanId":null,"spanId":"2e6d41d1b0fe0045","operation":"consumework18","startTimeMicroSeconds":1567107474715000,"durationNanoSeconds":10375832,"metadata":{}} +{"traceId":"cf94507e060c67e8","parentSpanId":null,"spanId":"2314b45e93a230cc","operation":"callback-pending19 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":200422149,"metadata":{}} +{"traceId":"cf94507e060c67e8","parentSpanId":null,"spanId":"9c3b87f53a650211","operation":"consumework19","startTimeMicroSeconds":1567107474726000,"durationNanoSeconds":10926673,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log index 6669da0df..8ca2026f3 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log @@ -1,3 +1,3 @@ -{"traceId":"4fe130d36a5b0402","parentSpanId":"5848d51bb7023248","spanId":"6da6a86a83b0e037","operation":"first transform","startTimeMicroSeconds":1567104764537000,"durationNanoSeconds":1010068632,"metadata":{}} -{"traceId":"4fe130d36a5b0402","parentSpanId":"5848d51bb7023248","spanId":"9968b2aa06934b69","operation":"second transform","startTimeMicroSeconds":1567104765552000,"durationNanoSeconds":1003764799,"metadata":{}} -{"traceId":"4fe130d36a5b0402","parentSpanId":null,"spanId":"5848d51bb7023248","operation":"foo","startTimeMicroSeconds":1567104764474000,"durationNanoSeconds":2080916936,"metadata":{}} +{"traceId":"a06693bc6df83fa2","parentSpanId":"ebd61a7b40526bbf","spanId":"6460752594f661cd","operation":"first transform","startTimeMicroSeconds":1567107470960000,"durationNanoSeconds":1008200415,"metadata":{}} +{"traceId":"a06693bc6df83fa2","parentSpanId":"ebd61a7b40526bbf","spanId":"3fae4ee2cd74cb6e","operation":"second transform","startTimeMicroSeconds":1567107471973000,"durationNanoSeconds":1002588040,"metadata":{}} +{"traceId":"a06693bc6df83fa2","parentSpanId":null,"spanId":"ebd61a7b40526bbf","operation":"foo","startTimeMicroSeconds":1567107470902000,"durationNanoSeconds":2072820670,"metadata":{}} diff --git a/tracing/src/main/java/com/palantir/tracing/CloseableTracer.java b/tracing/src/main/java/com/palantir/tracing/CloseableTracer.java index c32cd3710..907150f2e 100644 --- a/tracing/src/main/java/com/palantir/tracing/CloseableTracer.java +++ b/tracing/src/main/java/com/palantir/tracing/CloseableTracer.java @@ -17,6 +17,7 @@ package com.palantir.tracing; import com.palantir.tracing.api.SpanType; +import java.util.Optional; /** * Wraps the {@link Tracer} methods in a closeable resource to enable the usage of the try-with-resources pattern. @@ -48,6 +49,15 @@ public static CloseableTracer startSpan(String operation, SpanType spanType) { return INSTANCE; } + static CloseableTracer startSpan(String operation, Optional parentSpanId, SpanType spanType) { + if (parentSpanId.isPresent()) { + Tracer.fastStartSpan(operation, parentSpanId.get(), spanType); + } else { + Tracer.fastStartSpan(operation, spanType); + } + return INSTANCE; + } + @Override public void close() { Tracer.fastCompleteSpan(); diff --git a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java index be228dde9..3a6bc5d7c 100644 --- a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java +++ b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java @@ -23,6 +23,7 @@ import com.palantir.tracing.api.Span; import com.palantir.tracing.api.SpanType; import java.util.Collections; +import java.util.Map; import java.util.Optional; import java.util.concurrent.atomic.AtomicReference; import javax.annotation.concurrent.ThreadSafe; @@ -41,8 +42,6 @@ private CrossThreadSpan(String traceId, boolean observable, AtomicReference(openSpan1)); } - /** Destructive operation - once you call this, you can't use it anymore. */ + /** + * Complete the span. This method does not change any thread-local state, so successive operations on this + * thread may have different traceIds. If you want to finish the span and continue work related to + * this traceId use {@link #sibling}, or if you want to continue work related to this traceId without completing + * the span, use {@link #child}. + */ public void terminate() { - OpenSpan openSpan1 = openSpan.getAndSet(null); - Preconditions.checkState(openSpan1 != null, "CrossThreadSpan may only be completed once"); + OpenSpan inProgress = consumeOpenSpan("CrossThreadSpan may only be terminated once"); - // end the span - Span span = Tracer.toSpan(openSpan1, Collections.emptyMap(), traceId); + // end the OpenSpan + Map metadata = Collections.emptyMap(); + Span span = Tracer.toSpan(inProgress, metadata, traceId); Tracer.notifyObservers(span); } - /** Destructive - the calling thread's threadlocal trace state won't be restored after this. */ - @MustBeClosed - public CloseableTracer threadLocalSibling(String nextOperationName) { - // TODO(dfox): gross - nowhere else lets you make siblings... - terminate(); - Tracer.clearCurrentTrace(); - - // a fresh copy doesn't have any of the old spans - Trace rehydratedTrace = Trace.of(observable, traceId); - Tracer.setTrace(rehydratedTrace); + private OpenSpan consumeOpenSpan(String message) { + OpenSpan inProgress = openSpan.getAndSet(null); + Preconditions.checkState(inProgress != null, message); + return inProgress; + } - return CloseableTracer.startSpan(nextOperationName, SpanType.LOCAL); + private OpenSpan accessOpenSpan(String message) { + OpenSpan inProgress = openSpan.get(); + Preconditions.checkState(inProgress != null, message); + return inProgress; } - @CheckReturnValue - public CrossThreadSpan crossThreadChild(String operation) { - OpenSpan openSpan1 = openSpan.get(); - Preconditions.checkState(openSpan1 != null, "Can't create crossThreadChild after terminate has been called"); + /** + * Finish the cross-thread span and start a new (thread local span) with the given operation name. + * NOTE: this is destructive, because any existing threadlocal tracing state is thrown away. + */ + @MustBeClosed + public CloseableTracer sibling(String nextOperationName) { + OpenSpan inProgress = consumeOpenSpan("Can't call sibling if span has already been closed"); - OpenSpan openSpan11 = OpenSpan.of( - operation, - Tracers.randomId(), - SpanType.LOCAL, - Optional.of(openSpan1.getSpanId()), - openSpan1.getOriginatingSpanId()); + Map metadata = Collections.emptyMap(); + Span span = Tracer.toSpan(inProgress, metadata, traceId); + Tracer.notifyObservers(span); - return new CrossThreadSpan(traceId, Tracer.isTraceObservable(), new AtomicReference<>(openSpan11)); + // we throw away the existing thread local state and replace it with our view of the world + Tracer.clearCurrentTrace(); + Tracer.setTrace(Trace.of(observable, traceId)); + + return CloseableTracer.startSpan(nextOperationName, inProgress.getParentSpanId(), SpanType.LOCAL); } - /** This is also destructive because original trace state won't be restored afterwards. */ + /** + * Start a new span parented to this current in-progress CrossThreadSpan. + * NOTE: this is destructive, because any existing threadlocal tracing state is thrown away. + */ @MustBeClosed - public CloseableTracer threadLocalChild(String nextOperationName) { + public CloseableTracer child(String nextOperationName) { Tracer.clearCurrentTrace(); - OpenSpan openSpan1 = openSpan.get(); - Preconditions.checkState(openSpan1 != null, "Can't create threadLocalChild after terminate has been called"); + OpenSpan inProgress = accessOpenSpan("Can't create child after terminate has been called"); + + Tracer.setTrace(Trace.of(observable, traceId)); + + return CloseableTracer.startSpan(nextOperationName, Optional.of(inProgress.getSpanId()), SpanType.LOCAL); + } + + @CheckReturnValue + public CrossThreadSpan crossThreadSpan(String operation) { + OpenSpan parent = openSpan.get(); + Preconditions.checkState(parent != null, "Can't create crossThreadSpan after terminate has been called"); - Trace rehydratedTrace = Trace.of(observable, traceId); - // 🌶🌶🌶 someone could now call Tracer.fastCompleteSpan and emit this guy from multiple threads!!! - rehydratedTrace.push(openSpan1); - Tracer.setTrace(rehydratedTrace); + OpenSpan child = OpenSpan.of( + operation, + Tracers.randomId(), + SpanType.LOCAL, + Optional.of(parent.getSpanId()), + parent.getOriginatingSpanId()); - return CloseableTracer.startSpan(nextOperationName, SpanType.LOCAL); + return new CrossThreadSpan(traceId, Tracer.isTraceObservable(), new AtomicReference<>(child)); } } From 96ee23013ad72fe6da66ab19fe57a5aa5fb94f41 Mon Sep 17 00:00:00 2001 From: Dan Fox Date: Thu, 29 Aug 2019 20:44:37 +0100 Subject: [PATCH 13/24] Javadoc --- .../com/palantir/tracing/CrossThreadSpan.java | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java index 3a6bc5d7c..614ea6064 100644 --- a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java +++ b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java @@ -33,7 +33,7 @@ public final class CrossThreadSpan { private final String traceId; - private boolean observable; + private final boolean observable; private final AtomicReference openSpan; private CrossThreadSpan(String traceId, boolean observable, AtomicReference openSpan) { @@ -75,25 +75,13 @@ public void terminate() { Tracer.notifyObservers(span); } - private OpenSpan consumeOpenSpan(String message) { - OpenSpan inProgress = openSpan.getAndSet(null); - Preconditions.checkState(inProgress != null, message); - return inProgress; - } - - private OpenSpan accessOpenSpan(String message) { - OpenSpan inProgress = openSpan.get(); - Preconditions.checkState(inProgress != null, message); - return inProgress; - } - /** * Finish the cross-thread span and start a new (thread local span) with the given operation name. * NOTE: this is destructive, because any existing threadlocal tracing state is thrown away. */ @MustBeClosed public CloseableTracer sibling(String nextOperationName) { - OpenSpan inProgress = consumeOpenSpan("Can't call sibling if span has already been closed"); + OpenSpan inProgress = consumeOpenSpan("Can't call CrossThreadSpan#sibling if span has already been closed"); Map metadata = Collections.emptyMap(); Span span = Tracer.toSpan(inProgress, metadata, traceId); @@ -121,10 +109,17 @@ public CloseableTracer child(String nextOperationName) { return CloseableTracer.startSpan(nextOperationName, Optional.of(inProgress.getSpanId()), SpanType.LOCAL); } + /** + * Unusual method - returns a new {@link CrossThreadSpan} parented to this instance. Only necessary if you want + * to instrument something that begins on this thread and ends on another thread. Otherwise, use + * {@link #sibling} or {@link #child}. + * + * This method does not touch any thread-local tracing state, so successive operations on this thread may have + * completely unrelated traceIds. + */ @CheckReturnValue public CrossThreadSpan crossThreadSpan(String operation) { - OpenSpan parent = openSpan.get(); - Preconditions.checkState(parent != null, "Can't create crossThreadSpan after terminate has been called"); + OpenSpan parent = accessOpenSpan("Can't create crossThreadSpan after terminate has been called"); OpenSpan child = OpenSpan.of( operation, @@ -135,4 +130,16 @@ public CrossThreadSpan crossThreadSpan(String operation) { return new CrossThreadSpan(traceId, Tracer.isTraceObservable(), new AtomicReference<>(child)); } + + private OpenSpan consumeOpenSpan(String failureMessage) { + OpenSpan inProgress = openSpan.getAndSet(null); + Preconditions.checkState(inProgress != null, failureMessage); + return inProgress; + } + + private OpenSpan accessOpenSpan(String failureMessage) { + OpenSpan inProgress = openSpan.get(); + Preconditions.checkState(inProgress != null, failureMessage); + return inProgress; + } } From 4e2d1a7f64bdb378e49e17bb994740746806410c Mon Sep 17 00:00:00 2001 From: Dan Fox Date: Thu, 29 Aug 2019 20:48:37 +0100 Subject: [PATCH 14/24] Go away errorprone --- .../src/test/java/com/palantir/tracing/TracingDemos.java | 2 +- .../src/main/java/com/palantir/tracing/CrossThreadSpan.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index c98a8c6a8..8a66838e9 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -86,7 +86,7 @@ void async_future() throws InterruptedException { @Override public void onSuccess(@Nullable Object result) { assertThat(Tracer.hasTraceId()).isFalse(); - try (CloseableTracer t = span.sibling("success" + i)) { + try (CloseableTracer tracer = span.sibling("success" + i)) { assertThat(Tracer.getTraceId()).isEqualTo(traceId); Thread.sleep(10); latch.countDown(); diff --git a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java index 614ea6064..492ec22cf 100644 --- a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java +++ b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java @@ -17,6 +17,7 @@ package com.palantir.tracing; import com.google.errorprone.annotations.CheckReturnValue; +import com.google.errorprone.annotations.CompileTimeConstant; import com.google.errorprone.annotations.MustBeClosed; import com.palantir.logsafe.Preconditions; import com.palantir.tracing.api.OpenSpan; @@ -131,13 +132,13 @@ public CrossThreadSpan crossThreadSpan(String operation) { return new CrossThreadSpan(traceId, Tracer.isTraceObservable(), new AtomicReference<>(child)); } - private OpenSpan consumeOpenSpan(String failureMessage) { + private OpenSpan consumeOpenSpan(@CompileTimeConstant String failureMessage) { OpenSpan inProgress = openSpan.getAndSet(null); Preconditions.checkState(inProgress != null, failureMessage); return inProgress; } - private OpenSpan accessOpenSpan(String failureMessage) { + private OpenSpan accessOpenSpan(@CompileTimeConstant String failureMessage) { OpenSpan inProgress = openSpan.get(); Preconditions.checkState(inProgress != null, failureMessage); return inProgress; From cd274c36ed8872f49082498dde835ce063f23eae Mon Sep 17 00:00:00 2001 From: Dan Fox Date: Fri, 30 Aug 2019 12:13:54 +0100 Subject: [PATCH 15/24] Thanks checkstyle --- .../src/test/java/com/palantir/tracing/TracingDemos.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index 8a66838e9..4f825d9e6 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -230,7 +230,7 @@ public void onSuccess(@Nullable Object result) { } @Override - public void onFailure(Throwable t) { + public void onFailure(Throwable throwable) { foo.terminate(); } }, executor); From 168552792757af485efbfd59cb9f269623380c5c Mon Sep 17 00:00:00 2001 From: Dan Fox Date: Fri, 30 Aug 2019 12:24:01 +0100 Subject: [PATCH 16/24] Smaller diff --- .../com/palantir/tracing/TracingDemos.java | 53 +++++------- .../tracing/TracingDemos/async_future.log | 44 +++++----- .../backoffs_on_a_scheduled_executor.log | 6 +- .../TracingDemos/handles_async_spans.log | 80 +++++++++---------- .../multi_producer_single_consumer.log | 80 +++++++++---------- .../TracingDemos/transformed_future.log | 6 +- 6 files changed, 129 insertions(+), 140 deletions(-) diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index 4f825d9e6..b00643678 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -74,13 +74,10 @@ void async_future() throws InterruptedException { try (CloseableTracer tracer = CloseableTracer.startSpan("I am a root span")) { String traceId = Tracer.getTraceId(); - // assertThat(Tracer.hasTraceId()).isFalse(); IntStream.range(0, numCallbacks).forEach(i -> { - // assertThat(Tracer.hasTraceId()).isFalse(); CrossThreadSpan span = CrossThreadSpan.startSpan("callback-pending" + i + " (cross thread span)"); - // assertThat(Tracer.hasTraceId()).isFalse(); Futures.addCallback(future, new FutureCallback() { @Override @@ -88,11 +85,8 @@ public void onSuccess(@Nullable Object result) { assertThat(Tracer.hasTraceId()).isFalse(); try (CloseableTracer tracer = span.sibling("success" + i)) { assertThat(Tracer.getTraceId()).isEqualTo(traceId); - Thread.sleep(10); + sleep(10); latch.countDown(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new RuntimeException(e); } } @@ -103,8 +97,6 @@ public void onFailure(Throwable throwable) { }, executorService); }); - // assertThat(Tracer.hasTraceId()).isFalse(); - try (CloseableTracer root = CloseableTracer.startSpan("bbb")) { executorService.submit(() -> { future.set(null); @@ -170,23 +162,21 @@ void backoffs_on_a_scheduled_executor() throws InterruptedException { ScheduledExecutorService executor = Tracers.wrap(Executors.newScheduledThreadPool(2)); CountDownLatch latch = new CountDownLatch(1); - // THIS PATTERN IS GROSS, MAYBE DON"T NEED TO SUPPORT IT? - CrossThreadSpan overall = CrossThreadSpan.startSpan("overall request"); executor.execute(() -> { - sleep(100, "first network call (will fail)"); + try (CloseableTracer t = CloseableTracer.startSpan("first network call (pretending this fails)")) { + sleep(100); + } - CrossThreadSpan backoff1 = overall.crossThreadSpan("backoff for 20ms"); + CrossThreadSpan backoff = overall.crossThreadSpan("backoff"); executor.schedule(() -> { - try (CloseableTracer attempt2 = backoff1.sibling("secondAttempt")) { + try (CloseableTracer attempt2 = backoff.sibling("secondAttempt")) { - Thread.sleep(100); + sleep(100); overall.terminate(); latch.countDown(); - } catch (InterruptedException e) { - throw new RuntimeException(e); } }, 20, TimeUnit.MILLISECONDS); }); @@ -208,19 +198,15 @@ void transformed_future() throws InterruptedException { FluentFuture.from(future) .transform(result -> { try (CloseableTracer t = foo.child("first transform")) { - Thread.sleep(1000); + sleep(1000); return result; - } catch (InterruptedException e) { - throw new RuntimeException(e); } }, executor) .transform(result -> { try (CloseableTracer t = foo.child("second transform")) { - Thread.sleep(1000); + sleep(1000); latch.countDown(); return result; - } catch (InterruptedException e) { - throw new RuntimeException(e); } }, executor) .addCallback(new FutureCallback() { @@ -242,30 +228,33 @@ public void onFailure(Throwable throwable) { assertThat(latch.await(10, TimeUnit.SECONDS)).isTrue(); } - private static void sleep(int millis, String operation) { - try (CloseableTracer t = CloseableTracer.startSpan(operation)) { + private static void sleep(int millis) { + try { Thread.sleep(millis); } catch (InterruptedException e) { - throw new RuntimeException("dont care", e); + Thread.currentThread().interrupt(); + throw new RuntimeException(e); } } - private static void sleep(int millis) { - sleep(millis, "sleep " + millis); + private static void sleepSpan(int millis) { + try (CloseableTracer t = CloseableTracer.startSpan("sleep " + millis)) { + sleep(millis); + } } @SuppressWarnings("NestedTryDepth") private static void emit_nested_spans() { try (CloseableTracer root = CloseableTracer.startSpan("emit_nested_spans")) { try (CloseableTracer first = CloseableTracer.startSpan("first")) { - sleep(100); + sleepSpan(100); try (CloseableTracer nested = CloseableTracer.startSpan("nested")) { - sleep(90); + sleepSpan(90); } - sleep(10); + sleepSpan(10); } try (CloseableTracer second = CloseableTracer.startSpan("second")) { - sleep(100); + sleepSpan(100); } } } diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log index 0be9c9a23..bb9b733c5 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log @@ -1,22 +1,22 @@ -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"81d2de3ae5907bc0","operation":"bbb","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":584665,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":null,"spanId":"56a482d0267a89e5","operation":"I am a root span","startTimeMicroSeconds":1567107474794000,"durationNanoSeconds":2669606,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"7fff5852bf85a261","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":1088290,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"870e7ab142169e06","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567107474795000,"durationNanoSeconds":2064314,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"df49d45ecafc4dc4","operation":"success1","startTimeMicroSeconds":1567107474797000,"durationNanoSeconds":15487559,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"fd2cc654d20b2dd1","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":16699223,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"623a395e6a45bcd0","operation":"success0","startTimeMicroSeconds":1567107474797000,"durationNanoSeconds":16387217,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"70c5dedfa550c858","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":17591043,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"322f360c01cb6544","operation":"success2","startTimeMicroSeconds":1567107474812000,"durationNanoSeconds":10448448,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"f83947aef85840fa","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":27258207,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"34f74265efa66915","operation":"success3","startTimeMicroSeconds":1567107474813000,"durationNanoSeconds":10180405,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"5c27ca2b0aea3a36","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":27857943,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"bd22e021af112534","operation":"success4","startTimeMicroSeconds":1567107474823000,"durationNanoSeconds":10107049,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"8f7958a72880b6df","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":37458402,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"62277dc74de8b32e","operation":"success5","startTimeMicroSeconds":1567107474824000,"durationNanoSeconds":10112789,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"7240d81a399e2440","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":38048172,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"78dee8a39cb8638d","operation":"success6","startTimeMicroSeconds":1567107474833000,"durationNanoSeconds":10099817,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"88067f6f5cba3f42","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":47649077,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"1ce3ef873672a1ae","operation":"success7","startTimeMicroSeconds":1567107474834000,"durationNanoSeconds":10086574,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"3b15b8912e8a0e02","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567107474796000,"durationNanoSeconds":48198341,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"22630a033209e2ab","operation":"success8","startTimeMicroSeconds":1567107474843000,"durationNanoSeconds":10413374,"metadata":{}} -{"traceId":"69678ef4560fa794","parentSpanId":"56a482d0267a89e5","spanId":"8fca03e178bca188","operation":"success9","startTimeMicroSeconds":1567107474844000,"durationNanoSeconds":10056771,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"e973037e65397de8","operation":"bbb","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":410805,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":null,"spanId":"195f76106a7e5dca","operation":"I am a root span","startTimeMicroSeconds":1567164344308000,"durationNanoSeconds":2907840,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"93bf3e454b56e663","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":869457,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"87153c0b2d7755ba","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567164344308000,"durationNanoSeconds":2285745,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"c274d1a457b621d8","operation":"success1","startTimeMicroSeconds":1567164344311000,"durationNanoSeconds":15101155,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"90c101d448b6f8da","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":16077841,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"864206ea8ba2fc76","operation":"success0","startTimeMicroSeconds":1567164344311000,"durationNanoSeconds":15585159,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"658ea8dacccefffe","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":16560366,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"45c87ffc2a12802b","operation":"success2","startTimeMicroSeconds":1567164344326000,"durationNanoSeconds":10370911,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"bffa1fc8234e64cd","operation":"success3","startTimeMicroSeconds":1567164344326000,"durationNanoSeconds":10174539,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"23f7b69f94db31c8","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":26867358,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"a240e9916581abcb","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":26913010,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"904f22bcb1661589","operation":"success5","startTimeMicroSeconds":1567164344337000,"durationNanoSeconds":10206623,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"92f76c2807d48479","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":37283169,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"f11e5f54945d59fb","operation":"success4","startTimeMicroSeconds":1567164344337000,"durationNanoSeconds":10395782,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"193ab8cba43b960c","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":37358061,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"c58a6b9a11e09b43","operation":"success6","startTimeMicroSeconds":1567164344347000,"durationNanoSeconds":10240551,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"bcd255ed633e78a3","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":47632731,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"933e132051dcd9a7","operation":"success7","startTimeMicroSeconds":1567164344347000,"durationNanoSeconds":10758328,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"7a0c26b3e314d175","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":48172719,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"430c1f618949bce4","operation":"success8","startTimeMicroSeconds":1567164344358000,"durationNanoSeconds":10446311,"metadata":{}} +{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"d720a6199f270505","operation":"success9","startTimeMicroSeconds":1567164344358000,"durationNanoSeconds":10576263,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log index 103babdb6..9ef141329 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log @@ -1,3 +1,3 @@ -{"traceId":"3267285d3cfbe13d","parentSpanId":null,"spanId":"ee6a82e44aae587a","operation":"first network call (will fail)","startTimeMicroSeconds":1567107474290000,"durationNanoSeconds":101461231,"metadata":{}} -{"traceId":"b1ad7624306b36d5","parentSpanId":"5c09b7d82bee3796","spanId":"1088a0c2aa19012e","operation":"backoff for 20ms","startTimeMicroSeconds":1567107474392000,"durationNanoSeconds":20907211,"metadata":{}} -{"traceId":"b1ad7624306b36d5","parentSpanId":null,"spanId":"5c09b7d82bee3796","operation":"overall request","startTimeMicroSeconds":1567107474286000,"durationNanoSeconds":226500123,"metadata":{}} +{"traceId":"eebf31dc7a596d0d","parentSpanId":null,"spanId":"035fef1e6aa60fea","operation":"first network call (pretending this fails)","startTimeMicroSeconds":1567164343792000,"durationNanoSeconds":100265104,"metadata":{}} +{"traceId":"3afa1d5998abfb95","parentSpanId":"caceb069014e4b72","spanId":"4996c21741a9c22a","operation":"backoff","startTimeMicroSeconds":1567164343892000,"durationNanoSeconds":20952187,"metadata":{}} +{"traceId":"3afa1d5998abfb95","parentSpanId":null,"spanId":"caceb069014e4b72","operation":"overall request","startTimeMicroSeconds":1567164343787000,"durationNanoSeconds":226787348,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log index 3e1ca7502..b6892dd2c 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log @@ -1,40 +1,40 @@ -{"traceId":"2bf56b84eb708715","parentSpanId":null,"spanId":"741bc2efc7368d95","operation":"task-queue-time0","startTimeMicroSeconds":1567107473613000,"durationNanoSeconds":2223790,"metadata":{}} -{"traceId":"c1aae21d838e19e6","parentSpanId":null,"spanId":"c3ac3195968325b6","operation":"task-queue-time1","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":297891,"metadata":{}} -{"traceId":"2bf56b84eb708715","parentSpanId":"86c49b325ef032b8","spanId":"86509de338f865df","operation":"sleep 100","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":101295112,"metadata":{}} -{"traceId":"c1aae21d838e19e6","parentSpanId":"6c9955ebb644db04","spanId":"40169d727828adc7","operation":"sleep 100","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":101220105,"metadata":{}} -{"traceId":"2bf56b84eb708715","parentSpanId":"0081cd74234072fb","spanId":"11cdad0bd22fb5ff","operation":"sleep 90","startTimeMicroSeconds":1567107473717000,"durationNanoSeconds":91748296,"metadata":{}} -{"traceId":"c1aae21d838e19e6","parentSpanId":"2725668a7e18f4f8","spanId":"ebb4dad35d4981a9","operation":"sleep 90","startTimeMicroSeconds":1567107473717000,"durationNanoSeconds":91748088,"metadata":{}} -{"traceId":"2bf56b84eb708715","parentSpanId":"86c49b325ef032b8","spanId":"0081cd74234072fb","operation":"nested","startTimeMicroSeconds":1567107473717000,"durationNanoSeconds":91793798,"metadata":{}} -{"traceId":"c1aae21d838e19e6","parentSpanId":"6c9955ebb644db04","spanId":"2725668a7e18f4f8","operation":"nested","startTimeMicroSeconds":1567107473717000,"durationNanoSeconds":91794737,"metadata":{}} -{"traceId":"c1aae21d838e19e6","parentSpanId":"6c9955ebb644db04","spanId":"495a5cd213083a90","operation":"sleep 10","startTimeMicroSeconds":1567107473808000,"durationNanoSeconds":10232560,"metadata":{}} -{"traceId":"c1aae21d838e19e6","parentSpanId":"1d0a963d1acc12cc","spanId":"6c9955ebb644db04","operation":"first","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":203386893,"metadata":{}} -{"traceId":"2bf56b84eb708715","parentSpanId":"86c49b325ef032b8","spanId":"5b0debb43c9929d2","operation":"sleep 10","startTimeMicroSeconds":1567107473808000,"durationNanoSeconds":11120796,"metadata":{}} -{"traceId":"2bf56b84eb708715","parentSpanId":"091c0ac6bc1c2bf1","spanId":"86c49b325ef032b8","operation":"first","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":204347403,"metadata":{}} -{"traceId":"c1aae21d838e19e6","parentSpanId":"ee89aca2514a1dce","spanId":"098e6118a976168e","operation":"sleep 100","startTimeMicroSeconds":1567107473819000,"durationNanoSeconds":104148790,"metadata":{}} -{"traceId":"2bf56b84eb708715","parentSpanId":"66dcc97f50569219","spanId":"fa1b1d9d4ac5a656","operation":"sleep 100","startTimeMicroSeconds":1567107473820000,"durationNanoSeconds":103278313,"metadata":{}} -{"traceId":"c1aae21d838e19e6","parentSpanId":"1d0a963d1acc12cc","spanId":"ee89aca2514a1dce","operation":"second","startTimeMicroSeconds":1567107473819000,"durationNanoSeconds":104217831,"metadata":{}} -{"traceId":"2bf56b84eb708715","parentSpanId":"091c0ac6bc1c2bf1","spanId":"66dcc97f50569219","operation":"second","startTimeMicroSeconds":1567107473820000,"durationNanoSeconds":103340080,"metadata":{}} -{"traceId":"c1aae21d838e19e6","parentSpanId":"b13be1502a6ae939","spanId":"1d0a963d1acc12cc","operation":"emit_nested_spans","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":307666578,"metadata":{}} -{"traceId":"2bf56b84eb708715","parentSpanId":"1b0f6259b944841c","spanId":"091c0ac6bc1c2bf1","operation":"emit_nested_spans","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":307756518,"metadata":{}} -{"traceId":"2bf56b84eb708715","parentSpanId":null,"spanId":"1b0f6259b944841c","operation":"task0","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":307876125,"metadata":{}} -{"traceId":"c1aae21d838e19e6","parentSpanId":null,"spanId":"b13be1502a6ae939","operation":"task1","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":307753723,"metadata":{}} -{"traceId":"d817080adaae6d61","parentSpanId":null,"spanId":"c9455e463f7b6d90","operation":"task-queue-time3","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":307862075,"metadata":{}} -{"traceId":"78a6371ad9850a67","parentSpanId":null,"spanId":"2c8b9d6d61abf34a","operation":"task-queue-time2","startTimeMicroSeconds":1567107473615000,"durationNanoSeconds":307956827,"metadata":{}} -{"traceId":"d817080adaae6d61","parentSpanId":"a6b2db7e2b5f6f9b","spanId":"8616fbf984185e13","operation":"sleep 100","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":100146690,"metadata":{}} -{"traceId":"78a6371ad9850a67","parentSpanId":"862d6c9f40018ebe","spanId":"745d8a6a895e3a0a","operation":"sleep 100","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":100107954,"metadata":{}} -{"traceId":"d817080adaae6d61","parentSpanId":"36cff5f72ba31568","spanId":"7f5c15283c4bb38b","operation":"sleep 90","startTimeMicroSeconds":1567107474023000,"durationNanoSeconds":92223703,"metadata":{}} -{"traceId":"78a6371ad9850a67","parentSpanId":"87ac64787268040f","spanId":"0abc251b9224c83a","operation":"sleep 90","startTimeMicroSeconds":1567107474023000,"durationNanoSeconds":92225602,"metadata":{}} -{"traceId":"d817080adaae6d61","parentSpanId":"a6b2db7e2b5f6f9b","spanId":"36cff5f72ba31568","operation":"nested","startTimeMicroSeconds":1567107474023000,"durationNanoSeconds":92290755,"metadata":{}} -{"traceId":"78a6371ad9850a67","parentSpanId":"862d6c9f40018ebe","spanId":"87ac64787268040f","operation":"nested","startTimeMicroSeconds":1567107474023000,"durationNanoSeconds":92297943,"metadata":{}} -{"traceId":"78a6371ad9850a67","parentSpanId":"862d6c9f40018ebe","spanId":"59579cbe2c1b53ff","operation":"sleep 10","startTimeMicroSeconds":1567107474116000,"durationNanoSeconds":10374601,"metadata":{}} -{"traceId":"d817080adaae6d61","parentSpanId":"a6b2db7e2b5f6f9b","spanId":"62e690541f5972af","operation":"sleep 10","startTimeMicroSeconds":1567107474116000,"durationNanoSeconds":10374586,"metadata":{}} -{"traceId":"d817080adaae6d61","parentSpanId":"a2a6d0ddc3dceab9","spanId":"a6b2db7e2b5f6f9b","operation":"first","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":202976314,"metadata":{}} -{"traceId":"78a6371ad9850a67","parentSpanId":"88e311179740aefd","spanId":"862d6c9f40018ebe","operation":"first","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":202939713,"metadata":{}} -{"traceId":"d817080adaae6d61","parentSpanId":"7a373e987148f445","spanId":"f6524028fd6a291f","operation":"sleep 100","startTimeMicroSeconds":1567107474126000,"durationNanoSeconds":102714148,"metadata":{}} -{"traceId":"78a6371ad9850a67","parentSpanId":"fb15c81fde993641","spanId":"05e7be85d0d669d4","operation":"sleep 100","startTimeMicroSeconds":1567107474126000,"durationNanoSeconds":102707064,"metadata":{}} -{"traceId":"d817080adaae6d61","parentSpanId":"a2a6d0ddc3dceab9","spanId":"7a373e987148f445","operation":"second","startTimeMicroSeconds":1567107474126000,"durationNanoSeconds":102767413,"metadata":{}} -{"traceId":"78a6371ad9850a67","parentSpanId":"88e311179740aefd","spanId":"fb15c81fde993641","operation":"second","startTimeMicroSeconds":1567107474126000,"durationNanoSeconds":102758201,"metadata":{}} -{"traceId":"d817080adaae6d61","parentSpanId":"816be5faa98bd7e8","spanId":"a2a6d0ddc3dceab9","operation":"emit_nested_spans","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":305794848,"metadata":{}} -{"traceId":"78a6371ad9850a67","parentSpanId":"bb758a12d1c584f2","spanId":"88e311179740aefd","operation":"emit_nested_spans","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":305786772,"metadata":{}} -{"traceId":"d817080adaae6d61","parentSpanId":null,"spanId":"816be5faa98bd7e8","operation":"task3","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":305839963,"metadata":{}} -{"traceId":"78a6371ad9850a67","parentSpanId":null,"spanId":"bb758a12d1c584f2","operation":"task2","startTimeMicroSeconds":1567107473923000,"durationNanoSeconds":305835040,"metadata":{}} +{"traceId":"5c8423a5dfee944b","parentSpanId":null,"spanId":"db47470640f4ef15","operation":"task-queue-time0","startTimeMicroSeconds":1567164343111000,"durationNanoSeconds":1795270,"metadata":{}} +{"traceId":"dc7a6ec513fb3c18","parentSpanId":null,"spanId":"9e8d86f3c0ddb380","operation":"task-queue-time1","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":298374,"metadata":{}} +{"traceId":"dc7a6ec513fb3c18","parentSpanId":"cb68922b61a48334","spanId":"0bd4a72a197f96ec","operation":"sleep 100","startTimeMicroSeconds":1567164343113000,"durationNanoSeconds":100962848,"metadata":{}} +{"traceId":"5c8423a5dfee944b","parentSpanId":"3abfdc78235d9058","spanId":"32a655b0ceb57447","operation":"sleep 100","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":101040110,"metadata":{}} +{"traceId":"5c8423a5dfee944b","parentSpanId":"70371f845383a59d","spanId":"073fadc8beb46f93","operation":"sleep 90","startTimeMicroSeconds":1567164343214000,"durationNanoSeconds":92397273,"metadata":{}} +{"traceId":"dc7a6ec513fb3c18","parentSpanId":"9851a0f697fc6b93","spanId":"311b0ea4d878d0c8","operation":"sleep 90","startTimeMicroSeconds":1567164343214000,"durationNanoSeconds":92397471,"metadata":{}} +{"traceId":"5c8423a5dfee944b","parentSpanId":"3abfdc78235d9058","spanId":"70371f845383a59d","operation":"nested","startTimeMicroSeconds":1567164343214000,"durationNanoSeconds":92446987,"metadata":{}} +{"traceId":"dc7a6ec513fb3c18","parentSpanId":"cb68922b61a48334","spanId":"9851a0f697fc6b93","operation":"nested","startTimeMicroSeconds":1567164343214000,"durationNanoSeconds":92448722,"metadata":{}} +{"traceId":"5c8423a5dfee944b","parentSpanId":"3abfdc78235d9058","spanId":"85a98b1a38b7eb5a","operation":"sleep 10","startTimeMicroSeconds":1567164343306000,"durationNanoSeconds":10098850,"metadata":{}} +{"traceId":"5c8423a5dfee944b","parentSpanId":"4b5b1eecd227930c","spanId":"3abfdc78235d9058","operation":"first","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":203723611,"metadata":{}} +{"traceId":"dc7a6ec513fb3c18","parentSpanId":"cb68922b61a48334","spanId":"ebd61650973cf27e","operation":"sleep 10","startTimeMicroSeconds":1567164343306000,"durationNanoSeconds":10161928,"metadata":{}} +{"traceId":"dc7a6ec513fb3c18","parentSpanId":"2484b863fadb3675","spanId":"cb68922b61a48334","operation":"first","startTimeMicroSeconds":1567164343113000,"durationNanoSeconds":203689652,"metadata":{}} +{"traceId":"dc7a6ec513fb3c18","parentSpanId":"8c17d531e74aeaae","spanId":"3d8d624c603cd327","operation":"sleep 100","startTimeMicroSeconds":1567164343316000,"durationNanoSeconds":100197260,"metadata":{}} +{"traceId":"5c8423a5dfee944b","parentSpanId":"036dff7bcac0fca8","spanId":"d17786596f979079","operation":"sleep 100","startTimeMicroSeconds":1567164343316000,"durationNanoSeconds":100239544,"metadata":{}} +{"traceId":"dc7a6ec513fb3c18","parentSpanId":"2484b863fadb3675","spanId":"8c17d531e74aeaae","operation":"second","startTimeMicroSeconds":1567164343316000,"durationNanoSeconds":100242898,"metadata":{}} +{"traceId":"5c8423a5dfee944b","parentSpanId":"4b5b1eecd227930c","spanId":"036dff7bcac0fca8","operation":"second","startTimeMicroSeconds":1567164343316000,"durationNanoSeconds":100284835,"metadata":{}} +{"traceId":"dc7a6ec513fb3c18","parentSpanId":"754a4f3444c827f6","spanId":"2484b863fadb3675","operation":"emit_nested_spans","startTimeMicroSeconds":1567164343113000,"durationNanoSeconds":303967592,"metadata":{}} +{"traceId":"5c8423a5dfee944b","parentSpanId":"6bdcae186a9af932","spanId":"4b5b1eecd227930c","operation":"emit_nested_spans","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":304061736,"metadata":{}} +{"traceId":"5c8423a5dfee944b","parentSpanId":null,"spanId":"6bdcae186a9af932","operation":"task0","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":304144083,"metadata":{}} +{"traceId":"dc7a6ec513fb3c18","parentSpanId":null,"spanId":"754a4f3444c827f6","operation":"task1","startTimeMicroSeconds":1567164343113000,"durationNanoSeconds":304019891,"metadata":{}} +{"traceId":"0f28ba2f5c059913","parentSpanId":null,"spanId":"bec59494b7778186","operation":"task-queue-time2","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":304261908,"metadata":{}} +{"traceId":"c05b4ce2782ac39a","parentSpanId":null,"spanId":"95fdb580b8844b92","operation":"task-queue-time3","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":304198779,"metadata":{}} +{"traceId":"0f28ba2f5c059913","parentSpanId":"30d3a2d27abc07e5","spanId":"a17a78168106a369","operation":"sleep 100","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":100064530,"metadata":{}} +{"traceId":"c05b4ce2782ac39a","parentSpanId":"d928fb2ca81984a3","spanId":"62a6be6dd29eb8ab","operation":"sleep 100","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":100086268,"metadata":{}} +{"traceId":"c05b4ce2782ac39a","parentSpanId":"efa836da3be5eb6d","spanId":"dfc242b4cd8e1b1d","operation":"sleep 90","startTimeMicroSeconds":1567164343517000,"durationNanoSeconds":92073204,"metadata":{}} +{"traceId":"0f28ba2f5c059913","parentSpanId":"08b201d1c2276d49","spanId":"8994907e53bb99b1","operation":"sleep 90","startTimeMicroSeconds":1567164343517000,"durationNanoSeconds":92085266,"metadata":{}} +{"traceId":"c05b4ce2782ac39a","parentSpanId":"d928fb2ca81984a3","spanId":"efa836da3be5eb6d","operation":"nested","startTimeMicroSeconds":1567164343517000,"durationNanoSeconds":92116173,"metadata":{}} +{"traceId":"0f28ba2f5c059913","parentSpanId":"30d3a2d27abc07e5","spanId":"08b201d1c2276d49","operation":"nested","startTimeMicroSeconds":1567164343517000,"durationNanoSeconds":92138634,"metadata":{}} +{"traceId":"0f28ba2f5c059913","parentSpanId":"30d3a2d27abc07e5","spanId":"e36c8d8be2390530","operation":"sleep 10","startTimeMicroSeconds":1567164343609000,"durationNanoSeconds":10076146,"metadata":{}} +{"traceId":"0f28ba2f5c059913","parentSpanId":"e9704a61a59b6824","spanId":"30d3a2d27abc07e5","operation":"first","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":202410998,"metadata":{}} +{"traceId":"c05b4ce2782ac39a","parentSpanId":"d928fb2ca81984a3","spanId":"3b8ad38b71070344","operation":"sleep 10","startTimeMicroSeconds":1567164343609000,"durationNanoSeconds":10139063,"metadata":{}} +{"traceId":"c05b4ce2782ac39a","parentSpanId":"29039826140f0607","spanId":"d928fb2ca81984a3","operation":"first","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":202437142,"metadata":{}} +{"traceId":"0f28ba2f5c059913","parentSpanId":"54d4abbb68ec9a99","spanId":"1b0766640837dfd0","operation":"sleep 100","startTimeMicroSeconds":1567164343619000,"durationNanoSeconds":104303182,"metadata":{}} +{"traceId":"c05b4ce2782ac39a","parentSpanId":"ac21ed80b352f0f1","spanId":"91cb7c40d48151ff","operation":"sleep 100","startTimeMicroSeconds":1567164343619000,"durationNanoSeconds":104281390,"metadata":{}} +{"traceId":"0f28ba2f5c059913","parentSpanId":"e9704a61a59b6824","spanId":"54d4abbb68ec9a99","operation":"second","startTimeMicroSeconds":1567164343619000,"durationNanoSeconds":104347539,"metadata":{}} +{"traceId":"c05b4ce2782ac39a","parentSpanId":"29039826140f0607","spanId":"ac21ed80b352f0f1","operation":"second","startTimeMicroSeconds":1567164343619000,"durationNanoSeconds":104323017,"metadata":{}} +{"traceId":"0f28ba2f5c059913","parentSpanId":"06bc42dc54ba015f","spanId":"e9704a61a59b6824","operation":"emit_nested_spans","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":306804726,"metadata":{}} +{"traceId":"c05b4ce2782ac39a","parentSpanId":"35ecec1fba7188df","spanId":"29039826140f0607","operation":"emit_nested_spans","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":306796545,"metadata":{}} +{"traceId":"0f28ba2f5c059913","parentSpanId":null,"spanId":"06bc42dc54ba015f","operation":"task2","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":306843742,"metadata":{}} +{"traceId":"c05b4ce2782ac39a","parentSpanId":null,"spanId":"35ecec1fba7188df","operation":"task3","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":306836560,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log index cab66face..147340006 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log @@ -1,40 +1,40 @@ -{"traceId":"55c0e6bc5d1ddd51","parentSpanId":null,"spanId":"35ee7601c5c0226e","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567107474524000,"durationNanoSeconds":2215693,"metadata":{}} -{"traceId":"55c0e6bc5d1ddd51","parentSpanId":null,"spanId":"b284f3fe1f72c007","operation":"consumework1","startTimeMicroSeconds":1567107474526000,"durationNanoSeconds":10227486,"metadata":{}} -{"traceId":"7d6f608d53290463","parentSpanId":null,"spanId":"086bf82b3f911269","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567107474523000,"durationNanoSeconds":14105942,"metadata":{}} -{"traceId":"7d6f608d53290463","parentSpanId":null,"spanId":"79a7055602f6c319","operation":"consumework0","startTimeMicroSeconds":1567107474537000,"durationNanoSeconds":10712944,"metadata":{}} -{"traceId":"c0903c855a08497e","parentSpanId":null,"spanId":"4f8835b670049431","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567107474524000,"durationNanoSeconds":23184172,"metadata":{}} -{"traceId":"c0903c855a08497e","parentSpanId":null,"spanId":"0fca1906dde3ec9b","operation":"consumework2","startTimeMicroSeconds":1567107474548000,"durationNanoSeconds":10227405,"metadata":{}} -{"traceId":"12023779ad0f24f8","parentSpanId":null,"spanId":"e5b3da94439d90d7","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":33105476,"metadata":{}} -{"traceId":"12023779ad0f24f8","parentSpanId":null,"spanId":"a608eddd459eafe9","operation":"consumework4","startTimeMicroSeconds":1567107474558000,"durationNanoSeconds":10459334,"metadata":{}} -{"traceId":"f3c59fbfce1881aa","parentSpanId":null,"spanId":"fb56e797aa8e01f5","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":43697026,"metadata":{}} -{"traceId":"f3c59fbfce1881aa","parentSpanId":null,"spanId":"dd2125a622faf78d","operation":"consumework3","startTimeMicroSeconds":1567107474568000,"durationNanoSeconds":10883410,"metadata":{}} -{"traceId":"73cf511168384355","parentSpanId":null,"spanId":"9ddeb2731ebed9aa","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":54581504,"metadata":{}} -{"traceId":"73cf511168384355","parentSpanId":null,"spanId":"d72d1009bfd480d7","operation":"consumework5","startTimeMicroSeconds":1567107474579000,"durationNanoSeconds":10170840,"metadata":{}} -{"traceId":"118b8ebba2c41e8f","parentSpanId":null,"spanId":"dec49fc89392d80b","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":64831161,"metadata":{}} -{"traceId":"118b8ebba2c41e8f","parentSpanId":null,"spanId":"f7531975d53cdda8","operation":"consumework6","startTimeMicroSeconds":1567107474590000,"durationNanoSeconds":10469436,"metadata":{}} -{"traceId":"d812563cd7f46d49","parentSpanId":null,"spanId":"8a682de25ce90a7b","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":75349219,"metadata":{}} -{"traceId":"d812563cd7f46d49","parentSpanId":null,"spanId":"8f0529b650060561","operation":"consumework7","startTimeMicroSeconds":1567107474600000,"durationNanoSeconds":10814086,"metadata":{}} -{"traceId":"57bdb55ce128f0c2","parentSpanId":null,"spanId":"312cbb61e6aa17b8","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":86224571,"metadata":{}} -{"traceId":"57bdb55ce128f0c2","parentSpanId":null,"spanId":"16e534731e650a87","operation":"consumework8","startTimeMicroSeconds":1567107474611000,"durationNanoSeconds":10245232,"metadata":{}} -{"traceId":"64e8426e92bc9ced","parentSpanId":null,"spanId":"7b00b64d34b18ff8","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":96521517,"metadata":{}} -{"traceId":"64e8426e92bc9ced","parentSpanId":null,"spanId":"1fca947b084d0242","operation":"consumework9","startTimeMicroSeconds":1567107474621000,"durationNanoSeconds":10090469,"metadata":{}} -{"traceId":"1bf9d714c2755880","parentSpanId":null,"spanId":"c5e98fbaf82bb9d6","operation":"callback-pending10 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":106581238,"metadata":{}} -{"traceId":"1bf9d714c2755880","parentSpanId":null,"spanId":"aeeaa6a5e666f49d","operation":"consumework10","startTimeMicroSeconds":1567107474632000,"durationNanoSeconds":10133490,"metadata":{}} -{"traceId":"0ae6f5cea912c98b","parentSpanId":null,"spanId":"de7f17726f0b87f2","operation":"callback-pending11 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":116758184,"metadata":{}} -{"traceId":"0ae6f5cea912c98b","parentSpanId":null,"spanId":"be29c75d0dd05bd2","operation":"consumework11","startTimeMicroSeconds":1567107474642000,"durationNanoSeconds":10319599,"metadata":{}} -{"traceId":"1db7328a5f2f7322","parentSpanId":null,"spanId":"1311d846a32f19fc","operation":"callback-pending12 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":127111691,"metadata":{}} -{"traceId":"1db7328a5f2f7322","parentSpanId":null,"spanId":"edcca7fe2ae182bd","operation":"consumework12","startTimeMicroSeconds":1567107474652000,"durationNanoSeconds":10937910,"metadata":{}} -{"traceId":"7f48dac93360eae4","parentSpanId":null,"spanId":"9e5dcb9e9860dc08","operation":"callback-pending13 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":138108328,"metadata":{}} -{"traceId":"7f48dac93360eae4","parentSpanId":null,"spanId":"6d7e3e7599f481ef","operation":"consumework13","startTimeMicroSeconds":1567107474663000,"durationNanoSeconds":10101249,"metadata":{}} -{"traceId":"f6074bc380cc0f8d","parentSpanId":null,"spanId":"4f7bec147d07af16","operation":"callback-pending14 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":148288328,"metadata":{}} -{"traceId":"f6074bc380cc0f8d","parentSpanId":null,"spanId":"b8b929717a9fbbca","operation":"consumework14","startTimeMicroSeconds":1567107474674000,"durationNanoSeconds":10585047,"metadata":{}} -{"traceId":"99f518cf2120ef46","parentSpanId":null,"spanId":"04847a3a407f2c7f","operation":"callback-pending15 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":158946566,"metadata":{}} -{"traceId":"99f518cf2120ef46","parentSpanId":null,"spanId":"27817c117050907c","operation":"consumework15","startTimeMicroSeconds":1567107474684000,"durationNanoSeconds":10456162,"metadata":{}} -{"traceId":"6793e3aa4a03eb83","parentSpanId":null,"spanId":"dae37b792d88de3e","operation":"callback-pending16 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":169453994,"metadata":{}} -{"traceId":"6793e3aa4a03eb83","parentSpanId":null,"spanId":"9185cce3ce5127bc","operation":"consumework16","startTimeMicroSeconds":1567107474695000,"durationNanoSeconds":10133037,"metadata":{}} -{"traceId":"c279eecc87111b5f","parentSpanId":null,"spanId":"cdb690a4af52a7ba","operation":"callback-pending17 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":179621603,"metadata":{}} -{"traceId":"c279eecc87111b5f","parentSpanId":null,"spanId":"24d2e13db8fff4f8","operation":"consumework17","startTimeMicroSeconds":1567107474705000,"durationNanoSeconds":10383673,"metadata":{}} -{"traceId":"7eef6710cd8b855b","parentSpanId":null,"spanId":"c07040b5facd31d5","operation":"callback-pending18 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":190014038,"metadata":{}} -{"traceId":"7eef6710cd8b855b","parentSpanId":null,"spanId":"2e6d41d1b0fe0045","operation":"consumework18","startTimeMicroSeconds":1567107474715000,"durationNanoSeconds":10375832,"metadata":{}} -{"traceId":"cf94507e060c67e8","parentSpanId":null,"spanId":"2314b45e93a230cc","operation":"callback-pending19 (cross thread span)","startTimeMicroSeconds":1567107474525000,"durationNanoSeconds":200422149,"metadata":{}} -{"traceId":"cf94507e060c67e8","parentSpanId":null,"spanId":"9c3b87f53a650211","operation":"consumework19","startTimeMicroSeconds":1567107474726000,"durationNanoSeconds":10926673,"metadata":{}} +{"traceId":"843f84a272a00513","parentSpanId":null,"spanId":"db919df0571d45da","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567164344025000,"durationNanoSeconds":4696726,"metadata":{}} +{"traceId":"843f84a272a00513","parentSpanId":null,"spanId":"c725af5c8637e47e","operation":"consumework0","startTimeMicroSeconds":1567164344030000,"durationNanoSeconds":10151876,"metadata":{}} +{"traceId":"cf8a4c06e8ab8d7f","parentSpanId":null,"spanId":"706ded9ff2455ca2","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567164344027000,"durationNanoSeconds":12908478,"metadata":{}} +{"traceId":"cf8a4c06e8ab8d7f","parentSpanId":null,"spanId":"cd4c544a6a5ab63e","operation":"consumework1","startTimeMicroSeconds":1567164344040000,"durationNanoSeconds":10793107,"metadata":{}} +{"traceId":"da1bc5316095e03b","parentSpanId":null,"spanId":"737039598221ba1b","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567164344027000,"durationNanoSeconds":23632216,"metadata":{}} +{"traceId":"da1bc5316095e03b","parentSpanId":null,"spanId":"11d4dfa19c6739d5","operation":"consumework2","startTimeMicroSeconds":1567164344051000,"durationNanoSeconds":10137173,"metadata":{}} +{"traceId":"1a6ab76b25bb4362","parentSpanId":null,"spanId":"f540c1be86884492","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":33531126,"metadata":{}} +{"traceId":"1a6ab76b25bb4362","parentSpanId":null,"spanId":"e65cd65ccfd177cf","operation":"consumework3","startTimeMicroSeconds":1567164344061000,"durationNanoSeconds":10099212,"metadata":{}} +{"traceId":"77de7365f338c1ee","parentSpanId":null,"spanId":"5546df54dcf7e886","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":43676511,"metadata":{}} +{"traceId":"77de7365f338c1ee","parentSpanId":null,"spanId":"10e709022e092389","operation":"consumework4","startTimeMicroSeconds":1567164344071000,"durationNanoSeconds":10122892,"metadata":{}} +{"traceId":"bb9a69551b71e7ea","parentSpanId":null,"spanId":"5653530a0cbf26d7","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":53863086,"metadata":{}} +{"traceId":"bb9a69551b71e7ea","parentSpanId":null,"spanId":"8b65809262c2b2b6","operation":"consumework5","startTimeMicroSeconds":1567164344082000,"durationNanoSeconds":10137053,"metadata":{}} +{"traceId":"7cef536d3f675b2e","parentSpanId":null,"spanId":"1652a0d2e1cf3d54","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":64039263,"metadata":{}} +{"traceId":"7cef536d3f675b2e","parentSpanId":null,"spanId":"6f5c7b84d067e2f3","operation":"consumework6","startTimeMicroSeconds":1567164344092000,"durationNanoSeconds":10557940,"metadata":{}} +{"traceId":"81c295bb6bf4e8a4","parentSpanId":null,"spanId":"5e172a55796db2d1","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":74667572,"metadata":{}} +{"traceId":"81c295bb6bf4e8a4","parentSpanId":null,"spanId":"7346e7f2861daeb1","operation":"consumework7","startTimeMicroSeconds":1567164344102000,"durationNanoSeconds":10423896,"metadata":{}} +{"traceId":"200c0604c7365604","parentSpanId":null,"spanId":"6a490b5e08e6d056","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":85177907,"metadata":{}} +{"traceId":"200c0604c7365604","parentSpanId":null,"spanId":"d389ac10595fac0b","operation":"consumework8","startTimeMicroSeconds":1567164344113000,"durationNanoSeconds":10233766,"metadata":{}} +{"traceId":"2ffdd6d4b0ba7d27","parentSpanId":null,"spanId":"02af171d88197d96","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":95492489,"metadata":{}} +{"traceId":"2ffdd6d4b0ba7d27","parentSpanId":null,"spanId":"f6a91f568bcce1d3","operation":"consumework9","startTimeMicroSeconds":1567164344123000,"durationNanoSeconds":10063331,"metadata":{}} +{"traceId":"10d09aa54b374a82","parentSpanId":null,"spanId":"4a84ca6456d0a6b7","operation":"callback-pending10 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":105644112,"metadata":{}} +{"traceId":"10d09aa54b374a82","parentSpanId":null,"spanId":"bd90326725f332b0","operation":"consumework10","startTimeMicroSeconds":1567164344134000,"durationNanoSeconds":10698792,"metadata":{}} +{"traceId":"3768b61ae5514761","parentSpanId":null,"spanId":"da9ea9c9dbb5ad19","operation":"callback-pending11 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":116397192,"metadata":{}} +{"traceId":"3768b61ae5514761","parentSpanId":null,"spanId":"bb8d7efd51c2b5b4","operation":"consumework11","startTimeMicroSeconds":1567164344144000,"durationNanoSeconds":10504952,"metadata":{}} +{"traceId":"13aad173bba6c031","parentSpanId":null,"spanId":"85ee97a7eb2ab02f","operation":"callback-pending12 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":126953445,"metadata":{}} +{"traceId":"13aad173bba6c031","parentSpanId":null,"spanId":"f3a08efb59dae0ec","operation":"consumework12","startTimeMicroSeconds":1567164344155000,"durationNanoSeconds":10225682,"metadata":{}} +{"traceId":"7a0f96012f9e7a4d","parentSpanId":null,"spanId":"2d352290fdc3667c","operation":"callback-pending13 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":137263854,"metadata":{}} +{"traceId":"7a0f96012f9e7a4d","parentSpanId":null,"spanId":"9e1415eeb2ff4be5","operation":"consumework13","startTimeMicroSeconds":1567164344165000,"durationNanoSeconds":10847763,"metadata":{}} +{"traceId":"2fe8e347b82c5eca","parentSpanId":null,"spanId":"5870f91bca95c992","operation":"callback-pending14 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":148208609,"metadata":{}} +{"traceId":"2fe8e347b82c5eca","parentSpanId":null,"spanId":"be9078e925e80f64","operation":"consumework14","startTimeMicroSeconds":1567164344176000,"durationNanoSeconds":10496159,"metadata":{}} +{"traceId":"e4d8c30065dc306f","parentSpanId":null,"spanId":"7bfd20655beb6e93","operation":"callback-pending15 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":158771359,"metadata":{}} +{"traceId":"e4d8c30065dc306f","parentSpanId":null,"spanId":"9505f16ee1712b3b","operation":"consumework15","startTimeMicroSeconds":1567164344187000,"durationNanoSeconds":11327523,"metadata":{}} +{"traceId":"b934cf08d3b9ba94","parentSpanId":null,"spanId":"b062b715fb587e37","operation":"callback-pending16 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":170196016,"metadata":{}} +{"traceId":"b934cf08d3b9ba94","parentSpanId":null,"spanId":"9fb5eed7c6c2c1e8","operation":"consumework16","startTimeMicroSeconds":1567164344198000,"durationNanoSeconds":10528883,"metadata":{}} +{"traceId":"95e77706a626aed7","parentSpanId":null,"spanId":"b21aba6cdc84f387","operation":"callback-pending17 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":180823066,"metadata":{}} +{"traceId":"95e77706a626aed7","parentSpanId":null,"spanId":"0a798360053dc4d1","operation":"consumework17","startTimeMicroSeconds":1567164344209000,"durationNanoSeconds":10120623,"metadata":{}} +{"traceId":"a9ff54230beff5a1","parentSpanId":null,"spanId":"b326fce7af1473da","operation":"callback-pending18 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":190974947,"metadata":{}} +{"traceId":"a9ff54230beff5a1","parentSpanId":null,"spanId":"473b5213f2c88ace","operation":"consumework18","startTimeMicroSeconds":1567164344219000,"durationNanoSeconds":10390118,"metadata":{}} +{"traceId":"11f6946662d54ea3","parentSpanId":null,"spanId":"c28f4f1d537197fb","operation":"callback-pending19 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":201419427,"metadata":{}} +{"traceId":"11f6946662d54ea3","parentSpanId":null,"spanId":"952df20bdfa81cac","operation":"consumework19","startTimeMicroSeconds":1567164344230000,"durationNanoSeconds":10163426,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log index 8ca2026f3..0ba1dab56 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log @@ -1,3 +1,3 @@ -{"traceId":"a06693bc6df83fa2","parentSpanId":"ebd61a7b40526bbf","spanId":"6460752594f661cd","operation":"first transform","startTimeMicroSeconds":1567107470960000,"durationNanoSeconds":1008200415,"metadata":{}} -{"traceId":"a06693bc6df83fa2","parentSpanId":"ebd61a7b40526bbf","spanId":"3fae4ee2cd74cb6e","operation":"second transform","startTimeMicroSeconds":1567107471973000,"durationNanoSeconds":1002588040,"metadata":{}} -{"traceId":"a06693bc6df83fa2","parentSpanId":null,"spanId":"ebd61a7b40526bbf","operation":"foo","startTimeMicroSeconds":1567107470902000,"durationNanoSeconds":2072820670,"metadata":{}} +{"traceId":"696f08a7fdf18e0b","parentSpanId":"43d2023f678df2b0","spanId":"0e9505216efdc9f7","operation":"first transform","startTimeMicroSeconds":1567164340439000,"durationNanoSeconds":1009327380,"metadata":{}} +{"traceId":"696f08a7fdf18e0b","parentSpanId":"43d2023f678df2b0","spanId":"2d884149650c8c8b","operation":"second transform","startTimeMicroSeconds":1567164341455000,"durationNanoSeconds":1003090219,"metadata":{}} +{"traceId":"696f08a7fdf18e0b","parentSpanId":null,"spanId":"43d2023f678df2b0","operation":"foo","startTimeMicroSeconds":1567164340373000,"durationNanoSeconds":2084075392,"metadata":{}} From 6b40aa81c472dc7ab83c8198ab31881d41f9f97e Mon Sep 17 00:00:00 2001 From: Dan Fox Date: Fri, 30 Aug 2019 11:24:01 +0000 Subject: [PATCH 17/24] Add generated changelog entries --- changelog/@unreleased/pr-247.v2.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 changelog/@unreleased/pr-247.v2.yml diff --git a/changelog/@unreleased/pr-247.v2.yml b/changelog/@unreleased/pr-247.v2.yml new file mode 100644 index 000000000..3689336d3 --- /dev/null +++ b/changelog/@unreleased/pr-247.v2.yml @@ -0,0 +1,6 @@ +type: improvement +improvement: + description: A new `CrossThreadSpan` class allows measuring operations that begin + on one thread and end on another. + links: + - https://github.com/palantir/tracing-java/pull/247 From b6366ececc9a54d98b855ef555eb25599beb7466 Mon Sep 17 00:00:00 2001 From: forozco Date: Fri, 30 Aug 2019 16:27:27 +0100 Subject: [PATCH 18/24] change some names --- .../com/palantir/tracing/TracingDemos.java | 38 ++++++++++--------- .../tracing/TestTracingExtensionDemo.java | 2 +- ...panToken.java => CloseableTracerTODO.java} | 4 +- .../com/palantir/tracing/DetachedSpan.java | 20 +++++----- .../java/com/palantir/tracing/Tracer.java | 28 +++++++------- .../java/com/palantir/tracing/TracerTest.java | 16 ++++---- 6 files changed, 56 insertions(+), 52 deletions(-) rename tracing/src/main/java/com/palantir/tracing/{SpanToken.java => CloseableTracerTODO.java} (88%) diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index b00643678..ebc0fbde3 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -51,9 +51,10 @@ void handles_async_spans() throws Exception { IntStream.range(0, numTasks).forEach(i -> { Tracer.clearCurrentTrace(); // just pretending all these tasks are on a fresh request - CrossThreadSpan crossThread = CrossThreadSpan.startSpan("task-queue-time" + i); + DetachedSpan crossThread = DetachedSpan.start("task-queue-time" + i); executorService.submit(() -> { - try (CloseableTracer t = crossThread.sibling("task" + i)) { + try (CloseableTracerTODO t = crossThread.childSpan("task" + i)) { + crossThread.complete(); emit_nested_spans(); countDownLatch.countDown(); } @@ -77,13 +78,14 @@ void async_future() throws InterruptedException { IntStream.range(0, numCallbacks).forEach(i -> { - CrossThreadSpan span = CrossThreadSpan.startSpan("callback-pending" + i + " (cross thread span)"); + DetachedSpan span = DetachedSpan.start("callback-pending" + i + " (cross thread span)"); Futures.addCallback(future, new FutureCallback() { @Override public void onSuccess(@Nullable Object result) { assertThat(Tracer.hasTraceId()).isFalse(); - try (CloseableTracer tracer = span.sibling("success" + i)) { + try (CloseableTracerTODO tracer = span.childSpan("success" + i)) { + span.complete(); assertThat(Tracer.getTraceId()).isEqualTo(traceId); sleep(10); latch.countDown(); @@ -124,7 +126,7 @@ void multi_producer_single_consumer() throws InterruptedException { Tracer.clearCurrentTrace(); // just pretending all these tasks are on a fresh request - CrossThreadSpan span = CrossThreadSpan.startSpan("callback-pending" + i + " (cross thread span)"); + DetachedSpan span = DetachedSpan.start("callback-pending" + i + " (cross thread span)"); producerExecutorService.submit(() -> { work.add(new QueuedWork() { @Override @@ -133,7 +135,7 @@ public String name() { } @Override - public CrossThreadSpan span() { + public DetachedSpan span() { return span; } }); @@ -145,7 +147,8 @@ public CrossThreadSpan span() { consumerExecutorService.submit(() -> { for (int i = 0; i < numElem; i++) { QueuedWork queuedWork = work.take(); - try (CloseableTracer processing = queuedWork.span().sibling("consume" + queuedWork.name())) { + try (CloseableTracerTODO processing = queuedWork.span().childSpan("consume" + queuedWork.name())) { + queuedWork.span().complete(); Thread.sleep(10); } consumeLatch.countDown(); @@ -162,19 +165,20 @@ void backoffs_on_a_scheduled_executor() throws InterruptedException { ScheduledExecutorService executor = Tracers.wrap(Executors.newScheduledThreadPool(2)); CountDownLatch latch = new CountDownLatch(1); - CrossThreadSpan overall = CrossThreadSpan.startSpan("overall request"); + DetachedSpan overall = DetachedSpan.start("overall request"); executor.execute(() -> { try (CloseableTracer t = CloseableTracer.startSpan("first network call (pretending this fails)")) { sleep(100); } - CrossThreadSpan backoff = overall.crossThreadSpan("backoff"); + DetachedSpan backoff = overall.childDetachedSpan("backoff"); executor.schedule(() -> { - try (CloseableTracer attempt2 = backoff.sibling("secondAttempt")) { + try (CloseableTracerTODO attempt2 = backoff.childSpan("secondAttempt")) { + backoff.complete(); sleep(100); - overall.terminate(); + overall.complete(); latch.countDown(); } @@ -194,16 +198,16 @@ void transformed_future() throws InterruptedException { ScheduledExecutorService executor = Executors.newScheduledThreadPool(2); CountDownLatch latch = new CountDownLatch(1); - CrossThreadSpan foo = CrossThreadSpan.startSpan("foo"); + DetachedSpan foo = DetachedSpan.start("foo"); FluentFuture.from(future) .transform(result -> { - try (CloseableTracer t = foo.child("first transform")) { + try (CloseableTracerTODO t = foo.childSpan("first transform")) { sleep(1000); return result; } }, executor) .transform(result -> { - try (CloseableTracer t = foo.child("second transform")) { + try (CloseableTracerTODO t = foo.childSpan("second transform")) { sleep(1000); latch.countDown(); return result; @@ -212,12 +216,12 @@ void transformed_future() throws InterruptedException { .addCallback(new FutureCallback() { @Override public void onSuccess(@Nullable Object result) { - foo.terminate(); + foo.complete(); } @Override public void onFailure(Throwable throwable) { - foo.terminate(); + foo.complete(); } }, executor); @@ -261,6 +265,6 @@ private static void emit_nested_spans() { interface QueuedWork { String name(); - CrossThreadSpan span(); + DetachedSpan span(); } } diff --git a/tracing-test-utils/src/test/java/com/palantir/tracing/TestTracingExtensionDemo.java b/tracing-test-utils/src/test/java/com/palantir/tracing/TestTracingExtensionDemo.java index d16186655..5d640f2fa 100644 --- a/tracing-test-utils/src/test/java/com/palantir/tracing/TestTracingExtensionDemo.java +++ b/tracing-test-utils/src/test/java/com/palantir/tracing/TestTracingExtensionDemo.java @@ -92,7 +92,7 @@ void handles_async_spans() throws Exception { DetachedSpan detachedSpan = DetachedSpan.start("task-queue-time" + i); executorService.submit(() -> { - detachedSpan.close(); + detachedSpan.complete(); try { prod_code(); countDownLatch.countDown(); diff --git a/tracing/src/main/java/com/palantir/tracing/SpanToken.java b/tracing/src/main/java/com/palantir/tracing/CloseableTracerTODO.java similarity index 88% rename from tracing/src/main/java/com/palantir/tracing/SpanToken.java rename to tracing/src/main/java/com/palantir/tracing/CloseableTracerTODO.java index 484919df0..6549ceb9f 100644 --- a/tracing/src/main/java/com/palantir/tracing/SpanToken.java +++ b/tracing/src/main/java/com/palantir/tracing/CloseableTracerTODO.java @@ -21,10 +21,10 @@ /** * Closeable marker around a tracing span operation. This object should be used in a try/with block. */ -public interface SpanToken extends Closeable { +public interface CloseableTracerTODO extends Closeable { /** - * Completes the Span marked by this {@link SpanToken}. + * Completes the Span marked by this {@link CloseableTracerTODO}. *

* {@link #close} must be invoked on the same thread which started this span. */ diff --git a/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java b/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java index 8bad10539..3cde94e6a 100644 --- a/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java +++ b/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java @@ -18,14 +18,13 @@ import com.google.errorprone.annotations.MustBeClosed; import com.palantir.tracing.api.SpanType; -import java.io.Closeable; import javax.annotation.CheckReturnValue; /** * Span operation which is not bound to thread state, and can measure operations which * themselves aren't bound to individual threads. */ -public interface DetachedSpan extends Closeable { +public interface DetachedSpan { /** * Like {@link Tracer#startSpan(String, SpanType)}, but does not set or modify tracing thread state. @@ -51,34 +50,33 @@ static DetachedSpan start(String operation) { * as the parent instead of thread state. */ @MustBeClosed - SpanToken attach(String operationName, SpanType type); + CloseableTracerTODO childSpan(String operationName, SpanType type); /** * Equivalent to {@link Tracer#startSpan(String)}, but using this {@link DetachedSpan} as the parent instead * of thread state. */ @MustBeClosed - default SpanToken attach(String operationName) { - return attach(operationName, SpanType.LOCAL); + default CloseableTracerTODO childSpan(String operationName) { + return childSpan(operationName, SpanType.LOCAL); } /** Starts a child {@link DetachedSpan} using this instance as the parent. */ @CheckReturnValue - DetachedSpan detach(String operation, SpanType type); + DetachedSpan childDetachedSpan(String operation, SpanType type); /** * Starts a child {@link DetachedSpan} using this instance as the parent. - * Equivalent to {@link #attach(String, SpanType)} using {@link SpanType#LOCAL}. + * Equivalent to {@link #childSpan(String, SpanType)} using {@link SpanType#LOCAL}. */ @CheckReturnValue - default DetachedSpan detach(String operation) { - return detach(operation, SpanType.LOCAL); + default DetachedSpan childDetachedSpan(String operation) { + return childDetachedSpan(operation, SpanType.LOCAL); } /** * Completes this span. After complete is invoked, other methods are not expected to produce spans, but * they must not throw either in order to avoid confusing failures. */ - @Override - void close(); + void complete(); } diff --git a/tracing/src/main/java/com/palantir/tracing/Tracer.java b/tracing/src/main/java/com/palantir/tracing/Tracer.java index d9c9ec62f..7a6104b82 100644 --- a/tracing/src/main/java/com/palantir/tracing/Tracer.java +++ b/tracing/src/main/java/com/palantir/tracing/Tracer.java @@ -22,6 +22,7 @@ import com.google.common.base.Strings; import com.google.errorprone.annotations.CheckReturnValue; +import com.google.errorprone.annotations.MustBeClosed; import com.palantir.logsafe.Preconditions; import com.palantir.logsafe.SafeArg; import com.palantir.logsafe.UnsafeArg; @@ -200,22 +201,23 @@ private static final class SampledDetachedSpan implements DetachedSpan { } @Override - public SpanToken attach(String operationName, SpanType type) { + @MustBeClosed + public CloseableTracerTODO childSpan(String operationName, SpanType type) { warnIfCompleted("startSpanOnCurrentThread"); Trace maybeCurrentTrace = currentTrace.get(); setTrace(Trace.of(true, traceId)); Tracer.fastStartSpan(operationName, openSpan.getSpanId(), type); - return TraceRestoringSpanToken.of(maybeCurrentTrace); + return TraceRestoringCloseableTracerTODO.of(maybeCurrentTrace); } @Override - public DetachedSpan detach(String operation, SpanType type) { + public DetachedSpan childDetachedSpan(String operation, SpanType type) { warnIfCompleted("startDetachedSpan"); return new SampledDetachedSpan(operation, type, traceId, Optional.of(openSpan.getSpanId())); } @Override - public void close() { + public void complete() { if (completed.compareAndSet(false, true)) { Tracer.notifyObservers(toSpan(openSpan, Collections.emptyMap(), traceId)); } @@ -245,20 +247,20 @@ private static final class UnsampledDetachedSpan implements DetachedSpan { } @Override - public SpanToken attach(String operationName, SpanType type) { + public CloseableTracerTODO childSpan(String operationName, SpanType type) { Trace maybeCurrentTrace = currentTrace.get(); setTrace(Trace.of(false, traceId)); Tracer.fastStartSpan(operationName, type); - return TraceRestoringSpanToken.of(maybeCurrentTrace); + return TraceRestoringCloseableTracerTODO.of(maybeCurrentTrace); } @Override - public DetachedSpan detach(String operation, SpanType type) { + public DetachedSpan childDetachedSpan(String operation, SpanType type) { return this; } @Override - public void close() { + public void complete() { // nop } @@ -268,18 +270,18 @@ public String toString() { } } - private static final class TraceRestoringSpanToken implements SpanToken { + private static final class TraceRestoringCloseableTracerTODO implements CloseableTracerTODO { // Complete the current span. - private static final SpanToken DEFAULT_TOKEN = Tracer::fastCompleteSpan; + private static final CloseableTracerTODO DEFAULT_TOKEN = Tracer::fastCompleteSpan; private final Trace original; - static SpanToken of(@Nullable Trace original) { - return original == null ? DEFAULT_TOKEN : new TraceRestoringSpanToken(original); + static CloseableTracerTODO of(@Nullable Trace original) { + return original == null ? DEFAULT_TOKEN : new TraceRestoringCloseableTracerTODO(original); } - TraceRestoringSpanToken(Trace original) { + TraceRestoringCloseableTracerTODO(Trace original) { this.original = Preconditions.checkNotNull(original, "Expected an original trace instance"); } diff --git a/tracing/src/test/java/com/palantir/tracing/TracerTest.java b/tracing/src/test/java/com/palantir/tracing/TracerTest.java index 286c504bc..6b8acbe20 100644 --- a/tracing/src/test/java/com/palantir/tracing/TracerTest.java +++ b/tracing/src/test/java/com/palantir/tracing/TracerTest.java @@ -366,7 +366,7 @@ public void testSimpleDetachedTrace() { .describedAs("Detached spans should not set thread state") .isFalse(); } finally { - detached.close(); + detached.complete(); } verify(observer1).consume(spanCaptor.capture()); assertThat(spanCaptor.getValue().getOperation()).isEqualTo(operation); @@ -382,14 +382,14 @@ public void testDetachedTraceAppliedToThreadState() { DetachedSpan detached = DetachedSpan.start(operation1); try { assertThat(Tracer.hasTraceId()).isFalse(); - try (SpanToken ignored = detached.attach(operation2)) { + try (CloseableTracerTODO ignored = detached.childSpan(operation2)) { assertThat(Tracer.hasTraceId()).isTrue(); } verify(observer1).consume(spanCaptor.capture()); assertThat(spanCaptor.getValue().getOperation()).isEqualTo(operation2); assertThat(Tracer.hasTraceId()).isFalse(); } finally { - detached.close(); + detached.complete(); } assertThat(Tracer.hasTraceId()).isFalse(); Tracer.unsubscribe("1"); @@ -401,7 +401,7 @@ public void testDetachedTraceRestoresTrace() { DetachedSpan detached = DetachedSpan.start("detached"); Tracer.fastStartSpan("standard"); String standardTraceId = Tracer.getTraceId(); - try (SpanToken ignored = detached.attach("operation")) { + try (CloseableTracerTODO ignored = detached.childSpan("operation")) { assertThat(Tracer.getTraceId()) .describedAs("The detached span should have a different trace") .isNotEqualTo(standardTraceId); @@ -410,7 +410,7 @@ public void testDetachedTraceRestoresTrace() { .describedAs("The detached span restores the original trace") .isEqualTo(standardTraceId); Tracer.fastCompleteSpan(); - detached.close(); + detached.complete(); assertThat(Tracer.hasTraceId()).isEqualTo(false); } @@ -422,7 +422,7 @@ public void testDetachedTraceRestoresOriginalTrace() { assertThat(Tracer.hasTraceId()).isEqualTo(false); try (CloseableTracer outer = CloseableTracer.startSpan("root")) { assertThat(Tracer.hasTraceId()).isEqualTo(true); - DetachedSpan.start("detached").close(); + DetachedSpan.start("detached").complete(); assertThat(Tracer.hasTraceId()).isEqualTo(true); } assertThat(Tracer.hasTraceId()).isEqualTo(false); @@ -442,13 +442,13 @@ public void testDetachedTraceBuildsUponExistingTrace() { Tracer.fastStartSpan("standard"); DetachedSpan detached = DetachedSpan.start("detached"); String standardTraceId = Tracer.getTraceId(); - try (SpanToken ignored = detached.attach("operation")) { + try (CloseableTracerTODO ignored = detached.childSpan("operation")) { assertThat(Tracer.getTraceId()).isEqualTo(standardTraceId); } assertThat(Tracer.getTraceId()).isEqualTo(standardTraceId); Tracer.fastCompleteSpan(); assertThat(Tracer.hasTraceId()).isEqualTo(false); - detached.close(); + detached.complete(); assertThat(Tracer.hasTraceId()).isEqualTo(false); verify(sampler, times(1)).sample(); ArgumentCaptor captor = ArgumentCaptor.forClass(Span.class); From b5104425af8702e78990ab4fe39e71921fd87548 Mon Sep 17 00:00:00 2001 From: forozco Date: Fri, 30 Aug 2019 16:43:37 +0100 Subject: [PATCH 19/24] add CloseableSpan, update test cases --- .../com/palantir/tracing/TracingDemos.java | 17 +- .../tracing/TracingDemos/async_future.log | 44 +++--- .../backoffs_on_a_scheduled_executor.log | 7 +- .../TracingDemos/handles_async_spans.log | 80 +++++----- .../multi_producer_single_consumer.log | 80 +++++----- .../TracingDemos/transformed_future.log | 6 +- ...ableTracerTODO.java => CloseableSpan.java} | 4 +- .../com/palantir/tracing/CrossThreadSpan.java | 146 ------------------ .../com/palantir/tracing/DetachedSpan.java | 16 +- .../java/com/palantir/tracing/Tracer.java | 10 +- .../java/com/palantir/tracing/TracerTest.java | 6 +- 11 files changed, 139 insertions(+), 277 deletions(-) rename tracing/src/main/java/com/palantir/tracing/{CloseableTracerTODO.java => CloseableSpan.java} (88%) delete mode 100644 tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index ebc0fbde3..0d2260232 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -53,8 +53,7 @@ void handles_async_spans() throws Exception { DetachedSpan crossThread = DetachedSpan.start("task-queue-time" + i); executorService.submit(() -> { - try (CloseableTracerTODO t = crossThread.childSpan("task" + i)) { - crossThread.complete(); + try (CloseableSpan t = crossThread.completeAndStartChild("task" + i)) { emit_nested_spans(); countDownLatch.countDown(); } @@ -84,8 +83,7 @@ void async_future() throws InterruptedException { @Override public void onSuccess(@Nullable Object result) { assertThat(Tracer.hasTraceId()).isFalse(); - try (CloseableTracerTODO tracer = span.childSpan("success" + i)) { - span.complete(); + try (CloseableSpan tracer = span.completeAndStartChild("success" + i)) { assertThat(Tracer.getTraceId()).isEqualTo(traceId); sleep(10); latch.countDown(); @@ -147,8 +145,7 @@ public DetachedSpan span() { consumerExecutorService.submit(() -> { for (int i = 0; i < numElem; i++) { QueuedWork queuedWork = work.take(); - try (CloseableTracerTODO processing = queuedWork.span().childSpan("consume" + queuedWork.name())) { - queuedWork.span().complete(); + try (CloseableSpan processing = queuedWork.span().completeAndStartChild("consume" + queuedWork.name())) { Thread.sleep(10); } consumeLatch.countDown(); @@ -174,9 +171,7 @@ void backoffs_on_a_scheduled_executor() throws InterruptedException { DetachedSpan backoff = overall.childDetachedSpan("backoff"); executor.schedule(() -> { - try (CloseableTracerTODO attempt2 = backoff.childSpan("secondAttempt")) { - backoff.complete(); - + try (CloseableSpan attempt2 = backoff.completeAndStartChild("secondAttempt")) { sleep(100); overall.complete(); latch.countDown(); @@ -201,13 +196,13 @@ void transformed_future() throws InterruptedException { DetachedSpan foo = DetachedSpan.start("foo"); FluentFuture.from(future) .transform(result -> { - try (CloseableTracerTODO t = foo.childSpan("first transform")) { + try (CloseableSpan t = foo.childSpan("first transform")) { sleep(1000); return result; } }, executor) .transform(result -> { - try (CloseableTracerTODO t = foo.childSpan("second transform")) { + try (CloseableSpan t = foo.childSpan("second transform")) { sleep(1000); latch.countDown(); return result; diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log index bb9b733c5..2619ca91b 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/async_future.log @@ -1,22 +1,22 @@ -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"e973037e65397de8","operation":"bbb","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":410805,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":null,"spanId":"195f76106a7e5dca","operation":"I am a root span","startTimeMicroSeconds":1567164344308000,"durationNanoSeconds":2907840,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"93bf3e454b56e663","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":869457,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"87153c0b2d7755ba","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567164344308000,"durationNanoSeconds":2285745,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"c274d1a457b621d8","operation":"success1","startTimeMicroSeconds":1567164344311000,"durationNanoSeconds":15101155,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"90c101d448b6f8da","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":16077841,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"864206ea8ba2fc76","operation":"success0","startTimeMicroSeconds":1567164344311000,"durationNanoSeconds":15585159,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"658ea8dacccefffe","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":16560366,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"45c87ffc2a12802b","operation":"success2","startTimeMicroSeconds":1567164344326000,"durationNanoSeconds":10370911,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"bffa1fc8234e64cd","operation":"success3","startTimeMicroSeconds":1567164344326000,"durationNanoSeconds":10174539,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"23f7b69f94db31c8","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":26867358,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"a240e9916581abcb","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":26913010,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"904f22bcb1661589","operation":"success5","startTimeMicroSeconds":1567164344337000,"durationNanoSeconds":10206623,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"92f76c2807d48479","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":37283169,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"f11e5f54945d59fb","operation":"success4","startTimeMicroSeconds":1567164344337000,"durationNanoSeconds":10395782,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"193ab8cba43b960c","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":37358061,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"c58a6b9a11e09b43","operation":"success6","startTimeMicroSeconds":1567164344347000,"durationNanoSeconds":10240551,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"bcd255ed633e78a3","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":47632731,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"933e132051dcd9a7","operation":"success7","startTimeMicroSeconds":1567164344347000,"durationNanoSeconds":10758328,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"7a0c26b3e314d175","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567164344310000,"durationNanoSeconds":48172719,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"430c1f618949bce4","operation":"success8","startTimeMicroSeconds":1567164344358000,"durationNanoSeconds":10446311,"metadata":{}} -{"traceId":"0c590f620f84b9da","parentSpanId":"195f76106a7e5dca","spanId":"d720a6199f270505","operation":"success9","startTimeMicroSeconds":1567164344358000,"durationNanoSeconds":10576263,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"49142deefcd1dd5f","spanId":"af3ddd010fd48254","operation":"bbb","startTimeMicroSeconds":1567179155782200,"durationNanoSeconds":529963,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":null,"spanId":"49142deefcd1dd5f","operation":"I am a root span","startTimeMicroSeconds":1567179155780579,"durationNanoSeconds":2218286,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"49142deefcd1dd5f","spanId":"580ff7b7ad4b95f3","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567179155782089,"durationNanoSeconds":1142255,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"49142deefcd1dd5f","spanId":"75f49423cd40df70","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567179155781478,"durationNanoSeconds":1766619,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"75f49423cd40df70","spanId":"aa6e6a82b568c2ec","operation":"success0","startTimeMicroSeconds":1567179155783221,"durationNanoSeconds":15098236,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"580ff7b7ad4b95f3","spanId":"96d218e038c4776b","operation":"success1","startTimeMicroSeconds":1567179155783220,"durationNanoSeconds":15094089,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"49142deefcd1dd5f","spanId":"e37d20f874a49f16","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567179155782126,"durationNanoSeconds":16333485,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"49142deefcd1dd5f","spanId":"c207a951e62c91b1","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567179155782115,"durationNanoSeconds":16348051,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"c207a951e62c91b1","spanId":"8bd9343a83ffa4db","operation":"success2","startTimeMicroSeconds":1567179155798443,"durationNanoSeconds":10821050,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"e37d20f874a49f16","spanId":"1db2a1fa32756d00","operation":"success3","startTimeMicroSeconds":1567179155798443,"durationNanoSeconds":10810099,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"49142deefcd1dd5f","spanId":"7e642a86c252122c","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567179155782135,"durationNanoSeconds":27231966,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"49142deefcd1dd5f","spanId":"88ad8db756022b94","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567179155782144,"durationNanoSeconds":27223573,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"88ad8db756022b94","spanId":"b0692a6c826fad87","operation":"success5","startTimeMicroSeconds":1567179155809360,"durationNanoSeconds":10700416,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"7e642a86c252122c","spanId":"dedf8317a9d4b288","operation":"success4","startTimeMicroSeconds":1567179155809359,"durationNanoSeconds":10762276,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"49142deefcd1dd5f","spanId":"096a8df56cb77aec","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567179155782153,"durationNanoSeconds":38024975,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"49142deefcd1dd5f","spanId":"d4915e5cf7429d77","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567179155782161,"durationNanoSeconds":38044235,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"096a8df56cb77aec","spanId":"b344655f74628b52","operation":"success6","startTimeMicroSeconds":1567179155820167,"durationNanoSeconds":12588624,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"d4915e5cf7429d77","spanId":"62d50ba730b7f4b2","operation":"success7","startTimeMicroSeconds":1567179155820198,"durationNanoSeconds":12570825,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"49142deefcd1dd5f","spanId":"05ad89a8326f09de","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567179155782177,"durationNanoSeconds":50681074,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"49142deefcd1dd5f","spanId":"e3cea1940a9ecdd7","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567179155782169,"durationNanoSeconds":50696635,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"05ad89a8326f09de","spanId":"174ed71cbb826de7","operation":"success9","startTimeMicroSeconds":1567179155832848,"durationNanoSeconds":12614440,"metadata":{}} +{"traceId":"a47a27ec8ab072c1","parentSpanId":"e3cea1940a9ecdd7","spanId":"5290244fbbc54ccc","operation":"success8","startTimeMicroSeconds":1567179155832858,"durationNanoSeconds":12607842,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log index 9ef141329..b9830dbbe 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/backoffs_on_a_scheduled_executor.log @@ -1,3 +1,4 @@ -{"traceId":"eebf31dc7a596d0d","parentSpanId":null,"spanId":"035fef1e6aa60fea","operation":"first network call (pretending this fails)","startTimeMicroSeconds":1567164343792000,"durationNanoSeconds":100265104,"metadata":{}} -{"traceId":"3afa1d5998abfb95","parentSpanId":"caceb069014e4b72","spanId":"4996c21741a9c22a","operation":"backoff","startTimeMicroSeconds":1567164343892000,"durationNanoSeconds":20952187,"metadata":{}} -{"traceId":"3afa1d5998abfb95","parentSpanId":null,"spanId":"caceb069014e4b72","operation":"overall request","startTimeMicroSeconds":1567164343787000,"durationNanoSeconds":226787348,"metadata":{}} +{"traceId":"a9b1288b1a50a32f","parentSpanId":null,"spanId":"aea1bfae41893b23","operation":"first network call (pretending this fails)","startTimeMicroSeconds":1567179155258813,"durationNanoSeconds":103760661,"metadata":{}} +{"traceId":"b8e058ed67897372","parentSpanId":"50fe3e94c84af5ee","spanId":"e3cd9eda596108d2","operation":"backoff","startTimeMicroSeconds":1567179155362656,"durationNanoSeconds":24989226,"metadata":{}} +{"traceId":"b8e058ed67897372","parentSpanId":null,"spanId":"50fe3e94c84af5ee","operation":"overall request","startTimeMicroSeconds":1567179155255200,"durationNanoSeconds":236451599,"metadata":{}} +{"traceId":"b8e058ed67897372","parentSpanId":"e3cd9eda596108d2","spanId":"4f7b471a24b311cb","operation":"secondAttempt","startTimeMicroSeconds":1567179155387639,"durationNanoSeconds":104106473,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log index b6892dd2c..560af32cf 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/handles_async_spans.log @@ -1,40 +1,40 @@ -{"traceId":"5c8423a5dfee944b","parentSpanId":null,"spanId":"db47470640f4ef15","operation":"task-queue-time0","startTimeMicroSeconds":1567164343111000,"durationNanoSeconds":1795270,"metadata":{}} -{"traceId":"dc7a6ec513fb3c18","parentSpanId":null,"spanId":"9e8d86f3c0ddb380","operation":"task-queue-time1","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":298374,"metadata":{}} -{"traceId":"dc7a6ec513fb3c18","parentSpanId":"cb68922b61a48334","spanId":"0bd4a72a197f96ec","operation":"sleep 100","startTimeMicroSeconds":1567164343113000,"durationNanoSeconds":100962848,"metadata":{}} -{"traceId":"5c8423a5dfee944b","parentSpanId":"3abfdc78235d9058","spanId":"32a655b0ceb57447","operation":"sleep 100","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":101040110,"metadata":{}} -{"traceId":"5c8423a5dfee944b","parentSpanId":"70371f845383a59d","spanId":"073fadc8beb46f93","operation":"sleep 90","startTimeMicroSeconds":1567164343214000,"durationNanoSeconds":92397273,"metadata":{}} -{"traceId":"dc7a6ec513fb3c18","parentSpanId":"9851a0f697fc6b93","spanId":"311b0ea4d878d0c8","operation":"sleep 90","startTimeMicroSeconds":1567164343214000,"durationNanoSeconds":92397471,"metadata":{}} -{"traceId":"5c8423a5dfee944b","parentSpanId":"3abfdc78235d9058","spanId":"70371f845383a59d","operation":"nested","startTimeMicroSeconds":1567164343214000,"durationNanoSeconds":92446987,"metadata":{}} -{"traceId":"dc7a6ec513fb3c18","parentSpanId":"cb68922b61a48334","spanId":"9851a0f697fc6b93","operation":"nested","startTimeMicroSeconds":1567164343214000,"durationNanoSeconds":92448722,"metadata":{}} -{"traceId":"5c8423a5dfee944b","parentSpanId":"3abfdc78235d9058","spanId":"85a98b1a38b7eb5a","operation":"sleep 10","startTimeMicroSeconds":1567164343306000,"durationNanoSeconds":10098850,"metadata":{}} -{"traceId":"5c8423a5dfee944b","parentSpanId":"4b5b1eecd227930c","spanId":"3abfdc78235d9058","operation":"first","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":203723611,"metadata":{}} -{"traceId":"dc7a6ec513fb3c18","parentSpanId":"cb68922b61a48334","spanId":"ebd61650973cf27e","operation":"sleep 10","startTimeMicroSeconds":1567164343306000,"durationNanoSeconds":10161928,"metadata":{}} -{"traceId":"dc7a6ec513fb3c18","parentSpanId":"2484b863fadb3675","spanId":"cb68922b61a48334","operation":"first","startTimeMicroSeconds":1567164343113000,"durationNanoSeconds":203689652,"metadata":{}} -{"traceId":"dc7a6ec513fb3c18","parentSpanId":"8c17d531e74aeaae","spanId":"3d8d624c603cd327","operation":"sleep 100","startTimeMicroSeconds":1567164343316000,"durationNanoSeconds":100197260,"metadata":{}} -{"traceId":"5c8423a5dfee944b","parentSpanId":"036dff7bcac0fca8","spanId":"d17786596f979079","operation":"sleep 100","startTimeMicroSeconds":1567164343316000,"durationNanoSeconds":100239544,"metadata":{}} -{"traceId":"dc7a6ec513fb3c18","parentSpanId":"2484b863fadb3675","spanId":"8c17d531e74aeaae","operation":"second","startTimeMicroSeconds":1567164343316000,"durationNanoSeconds":100242898,"metadata":{}} -{"traceId":"5c8423a5dfee944b","parentSpanId":"4b5b1eecd227930c","spanId":"036dff7bcac0fca8","operation":"second","startTimeMicroSeconds":1567164343316000,"durationNanoSeconds":100284835,"metadata":{}} -{"traceId":"dc7a6ec513fb3c18","parentSpanId":"754a4f3444c827f6","spanId":"2484b863fadb3675","operation":"emit_nested_spans","startTimeMicroSeconds":1567164343113000,"durationNanoSeconds":303967592,"metadata":{}} -{"traceId":"5c8423a5dfee944b","parentSpanId":"6bdcae186a9af932","spanId":"4b5b1eecd227930c","operation":"emit_nested_spans","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":304061736,"metadata":{}} -{"traceId":"5c8423a5dfee944b","parentSpanId":null,"spanId":"6bdcae186a9af932","operation":"task0","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":304144083,"metadata":{}} -{"traceId":"dc7a6ec513fb3c18","parentSpanId":null,"spanId":"754a4f3444c827f6","operation":"task1","startTimeMicroSeconds":1567164343113000,"durationNanoSeconds":304019891,"metadata":{}} -{"traceId":"0f28ba2f5c059913","parentSpanId":null,"spanId":"bec59494b7778186","operation":"task-queue-time2","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":304261908,"metadata":{}} -{"traceId":"c05b4ce2782ac39a","parentSpanId":null,"spanId":"95fdb580b8844b92","operation":"task-queue-time3","startTimeMicroSeconds":1567164343112000,"durationNanoSeconds":304198779,"metadata":{}} -{"traceId":"0f28ba2f5c059913","parentSpanId":"30d3a2d27abc07e5","spanId":"a17a78168106a369","operation":"sleep 100","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":100064530,"metadata":{}} -{"traceId":"c05b4ce2782ac39a","parentSpanId":"d928fb2ca81984a3","spanId":"62a6be6dd29eb8ab","operation":"sleep 100","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":100086268,"metadata":{}} -{"traceId":"c05b4ce2782ac39a","parentSpanId":"efa836da3be5eb6d","spanId":"dfc242b4cd8e1b1d","operation":"sleep 90","startTimeMicroSeconds":1567164343517000,"durationNanoSeconds":92073204,"metadata":{}} -{"traceId":"0f28ba2f5c059913","parentSpanId":"08b201d1c2276d49","spanId":"8994907e53bb99b1","operation":"sleep 90","startTimeMicroSeconds":1567164343517000,"durationNanoSeconds":92085266,"metadata":{}} -{"traceId":"c05b4ce2782ac39a","parentSpanId":"d928fb2ca81984a3","spanId":"efa836da3be5eb6d","operation":"nested","startTimeMicroSeconds":1567164343517000,"durationNanoSeconds":92116173,"metadata":{}} -{"traceId":"0f28ba2f5c059913","parentSpanId":"30d3a2d27abc07e5","spanId":"08b201d1c2276d49","operation":"nested","startTimeMicroSeconds":1567164343517000,"durationNanoSeconds":92138634,"metadata":{}} -{"traceId":"0f28ba2f5c059913","parentSpanId":"30d3a2d27abc07e5","spanId":"e36c8d8be2390530","operation":"sleep 10","startTimeMicroSeconds":1567164343609000,"durationNanoSeconds":10076146,"metadata":{}} -{"traceId":"0f28ba2f5c059913","parentSpanId":"e9704a61a59b6824","spanId":"30d3a2d27abc07e5","operation":"first","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":202410998,"metadata":{}} -{"traceId":"c05b4ce2782ac39a","parentSpanId":"d928fb2ca81984a3","spanId":"3b8ad38b71070344","operation":"sleep 10","startTimeMicroSeconds":1567164343609000,"durationNanoSeconds":10139063,"metadata":{}} -{"traceId":"c05b4ce2782ac39a","parentSpanId":"29039826140f0607","spanId":"d928fb2ca81984a3","operation":"first","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":202437142,"metadata":{}} -{"traceId":"0f28ba2f5c059913","parentSpanId":"54d4abbb68ec9a99","spanId":"1b0766640837dfd0","operation":"sleep 100","startTimeMicroSeconds":1567164343619000,"durationNanoSeconds":104303182,"metadata":{}} -{"traceId":"c05b4ce2782ac39a","parentSpanId":"ac21ed80b352f0f1","spanId":"91cb7c40d48151ff","operation":"sleep 100","startTimeMicroSeconds":1567164343619000,"durationNanoSeconds":104281390,"metadata":{}} -{"traceId":"0f28ba2f5c059913","parentSpanId":"e9704a61a59b6824","spanId":"54d4abbb68ec9a99","operation":"second","startTimeMicroSeconds":1567164343619000,"durationNanoSeconds":104347539,"metadata":{}} -{"traceId":"c05b4ce2782ac39a","parentSpanId":"29039826140f0607","spanId":"ac21ed80b352f0f1","operation":"second","startTimeMicroSeconds":1567164343619000,"durationNanoSeconds":104323017,"metadata":{}} -{"traceId":"0f28ba2f5c059913","parentSpanId":"06bc42dc54ba015f","spanId":"e9704a61a59b6824","operation":"emit_nested_spans","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":306804726,"metadata":{}} -{"traceId":"c05b4ce2782ac39a","parentSpanId":"35ecec1fba7188df","spanId":"29039826140f0607","operation":"emit_nested_spans","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":306796545,"metadata":{}} -{"traceId":"0f28ba2f5c059913","parentSpanId":null,"spanId":"06bc42dc54ba015f","operation":"task2","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":306843742,"metadata":{}} -{"traceId":"c05b4ce2782ac39a","parentSpanId":null,"spanId":"35ecec1fba7188df","operation":"task3","startTimeMicroSeconds":1567164343417000,"durationNanoSeconds":306836560,"metadata":{}} +{"traceId":"176030035d9125ce","parentSpanId":null,"spanId":"41ebac16dba1fa86","operation":"task-queue-time0","startTimeMicroSeconds":1567179154587500,"durationNanoSeconds":2312836,"metadata":{}} +{"traceId":"f78c2c0415568424","parentSpanId":null,"spanId":"8b1d5782614f41c0","operation":"task-queue-time1","startTimeMicroSeconds":1567179154589588,"durationNanoSeconds":287243,"metadata":{}} +{"traceId":"f78c2c0415568424","parentSpanId":"8dfb2c5359d68ed4","spanId":"19dd47a899b399c2","operation":"sleep 100","startTimeMicroSeconds":1567179154590621,"durationNanoSeconds":102299404,"metadata":{}} +{"traceId":"176030035d9125ce","parentSpanId":"049a0278ed5bbc15","spanId":"76eaa90711d92fb6","operation":"sleep 100","startTimeMicroSeconds":1567179154590617,"durationNanoSeconds":102303728,"metadata":{}} +{"traceId":"f78c2c0415568424","parentSpanId":"36a0f2020d66434f","spanId":"f512500b5cc52df3","operation":"sleep 90","startTimeMicroSeconds":1567179154692995,"durationNanoSeconds":94457914,"metadata":{}} +{"traceId":"176030035d9125ce","parentSpanId":"00c89687a14e9b29","spanId":"a21f119c1865de62","operation":"sleep 90","startTimeMicroSeconds":1567179154693000,"durationNanoSeconds":94464780,"metadata":{}} +{"traceId":"f78c2c0415568424","parentSpanId":"8dfb2c5359d68ed4","spanId":"36a0f2020d66434f","operation":"nested","startTimeMicroSeconds":1567179154692977,"durationNanoSeconds":94546714,"metadata":{}} +{"traceId":"176030035d9125ce","parentSpanId":"049a0278ed5bbc15","spanId":"00c89687a14e9b29","operation":"nested","startTimeMicroSeconds":1567179154692977,"durationNanoSeconds":94564079,"metadata":{}} +{"traceId":"176030035d9125ce","parentSpanId":"049a0278ed5bbc15","spanId":"6667b61eebf86d54","operation":"sleep 10","startTimeMicroSeconds":1567179154787599,"durationNanoSeconds":12638021,"metadata":{}} +{"traceId":"f78c2c0415568424","parentSpanId":"8dfb2c5359d68ed4","spanId":"39f2ae0560032729","operation":"sleep 10","startTimeMicroSeconds":1567179154787583,"durationNanoSeconds":12653683,"metadata":{}} +{"traceId":"176030035d9125ce","parentSpanId":"7f6aa5a29b47155f","spanId":"049a0278ed5bbc15","operation":"first","startTimeMicroSeconds":1567179154590602,"durationNanoSeconds":209723627,"metadata":{}} +{"traceId":"f78c2c0415568424","parentSpanId":"4bb0eb9e70f14bd0","spanId":"8dfb2c5359d68ed4","operation":"first","startTimeMicroSeconds":1567179154590602,"durationNanoSeconds":209773659,"metadata":{}} +{"traceId":"f78c2c0415568424","parentSpanId":"6a2e7db1304ef445","spanId":"8a1c0752a71556ae","operation":"sleep 100","startTimeMicroSeconds":1567179154800466,"durationNanoSeconds":103032440,"metadata":{}} +{"traceId":"176030035d9125ce","parentSpanId":"806df1b790ea64c2","spanId":"e72f0ab2bdf2b8d6","operation":"sleep 100","startTimeMicroSeconds":1567179154800427,"durationNanoSeconds":103071337,"metadata":{}} +{"traceId":"f78c2c0415568424","parentSpanId":"4bb0eb9e70f14bd0","spanId":"6a2e7db1304ef445","operation":"second","startTimeMicroSeconds":1567179154800435,"durationNanoSeconds":103110887,"metadata":{}} +{"traceId":"176030035d9125ce","parentSpanId":"7f6aa5a29b47155f","spanId":"806df1b790ea64c2","operation":"second","startTimeMicroSeconds":1567179154800393,"durationNanoSeconds":103156990,"metadata":{}} +{"traceId":"f78c2c0415568424","parentSpanId":"9781efb108a88535","spanId":"4bb0eb9e70f14bd0","operation":"emit_nested_spans","startTimeMicroSeconds":1567179154590584,"durationNanoSeconds":312982552,"metadata":{}} +{"traceId":"176030035d9125ce","parentSpanId":"5231bf63c65db5cb","spanId":"7f6aa5a29b47155f","operation":"emit_nested_spans","startTimeMicroSeconds":1567179154590583,"durationNanoSeconds":312989050,"metadata":{}} +{"traceId":"f78c2c0415568424","parentSpanId":"8b1d5782614f41c0","spanId":"9781efb108a88535","operation":"task1","startTimeMicroSeconds":1567179154589872,"durationNanoSeconds":313739795,"metadata":{}} +{"traceId":"176030035d9125ce","parentSpanId":"41ebac16dba1fa86","spanId":"5231bf63c65db5cb","operation":"task0","startTimeMicroSeconds":1567179154589789,"durationNanoSeconds":313824675,"metadata":{}} +{"traceId":"8f59c9ec0be8fef0","parentSpanId":null,"spanId":"c5133147cf49ce62","operation":"task-queue-time2","startTimeMicroSeconds":1567179154589755,"durationNanoSeconds":313989392,"metadata":{}} +{"traceId":"a3f5b5118b3e3ee0","parentSpanId":null,"spanId":"ba58e523b62bcc55","operation":"task-queue-time3","startTimeMicroSeconds":1567179154589813,"durationNanoSeconds":313933381,"metadata":{}} +{"traceId":"a3f5b5118b3e3ee0","parentSpanId":"ee8998b5579dbc59","spanId":"5f9f0f452adca3c4","operation":"sleep 100","startTimeMicroSeconds":1567179154903810,"durationNanoSeconds":103206613,"metadata":{}} +{"traceId":"8f59c9ec0be8fef0","parentSpanId":"f4b2899650b13e71","spanId":"bb9991793958d418","operation":"sleep 100","startTimeMicroSeconds":1567179154903805,"durationNanoSeconds":103211893,"metadata":{}} +{"traceId":"8f59c9ec0be8fef0","parentSpanId":"998a9d77eaa8208a","spanId":"5690683d4461411c","operation":"sleep 90","startTimeMicroSeconds":1567179155009144,"durationNanoSeconds":90753895,"metadata":{}} +{"traceId":"a3f5b5118b3e3ee0","parentSpanId":"7bcd1c51438f447d","spanId":"e3af6d103204b6c0","operation":"sleep 90","startTimeMicroSeconds":1567179155007145,"durationNanoSeconds":92753245,"metadata":{}} +{"traceId":"8f59c9ec0be8fef0","parentSpanId":"f4b2899650b13e71","spanId":"998a9d77eaa8208a","operation":"nested","startTimeMicroSeconds":1567179155007111,"durationNanoSeconds":90818457,"metadata":{}} +{"traceId":"a3f5b5118b3e3ee0","parentSpanId":"ee8998b5579dbc59","spanId":"7bcd1c51438f447d","operation":"nested","startTimeMicroSeconds":1567179155007111,"durationNanoSeconds":92821594,"metadata":{}} +{"traceId":"8f59c9ec0be8fef0","parentSpanId":"f4b2899650b13e71","spanId":"a99c1919509f381b","operation":"sleep 10","startTimeMicroSeconds":1567179155099964,"durationNanoSeconds":11009238,"metadata":{}} +{"traceId":"a3f5b5118b3e3ee0","parentSpanId":"ee8998b5579dbc59","spanId":"c098a177ffb82085","operation":"sleep 10","startTimeMicroSeconds":1567179155099968,"durationNanoSeconds":11006031,"metadata":{}} +{"traceId":"8f59c9ec0be8fef0","parentSpanId":"dff26b76fdda9416","spanId":"f4b2899650b13e71","operation":"first","startTimeMicroSeconds":1567179154903790,"durationNanoSeconds":207233157,"metadata":{}} +{"traceId":"a3f5b5118b3e3ee0","parentSpanId":"295f4b54d1aa84fb","spanId":"ee8998b5579dbc59","operation":"first","startTimeMicroSeconds":1567179154903795,"durationNanoSeconds":207246002,"metadata":{}} +{"traceId":"8f59c9ec0be8fef0","parentSpanId":"3a509ff9654b200a","spanId":"dac364da48fe221f","operation":"sleep 100","startTimeMicroSeconds":1567179155111101,"durationNanoSeconds":100088506,"metadata":{}} +{"traceId":"a3f5b5118b3e3ee0","parentSpanId":"d844f831e0b95f24","spanId":"80ab631ac14c51c9","operation":"sleep 100","startTimeMicroSeconds":1567179155111102,"durationNanoSeconds":100087687,"metadata":{}} +{"traceId":"8f59c9ec0be8fef0","parentSpanId":"dff26b76fdda9416","spanId":"3a509ff9654b200a","operation":"second","startTimeMicroSeconds":1567179155111067,"durationNanoSeconds":100154897,"metadata":{}} +{"traceId":"a3f5b5118b3e3ee0","parentSpanId":"295f4b54d1aa84fb","spanId":"d844f831e0b95f24","operation":"second","startTimeMicroSeconds":1567179155111080,"durationNanoSeconds":100152595,"metadata":{}} +{"traceId":"8f59c9ec0be8fef0","parentSpanId":"ffe3f2c4f1eb6865","spanId":"dff26b76fdda9416","operation":"emit_nested_spans","startTimeMicroSeconds":1567179154903775,"durationNanoSeconds":307461835,"metadata":{}} +{"traceId":"a3f5b5118b3e3ee0","parentSpanId":"b14b1ed055d7d0d7","spanId":"295f4b54d1aa84fb","operation":"emit_nested_spans","startTimeMicroSeconds":1567179154903780,"durationNanoSeconds":307466424,"metadata":{}} +{"traceId":"8f59c9ec0be8fef0","parentSpanId":"c5133147cf49ce62","spanId":"ffe3f2c4f1eb6865","operation":"task2","startTimeMicroSeconds":1567179154903733,"durationNanoSeconds":307533908,"metadata":{}} +{"traceId":"a3f5b5118b3e3ee0","parentSpanId":"ba58e523b62bcc55","spanId":"b14b1ed055d7d0d7","operation":"task3","startTimeMicroSeconds":1567179154903733,"durationNanoSeconds":307548142,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log index 147340006..20f18c145 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/multi_producer_single_consumer.log @@ -1,40 +1,40 @@ -{"traceId":"843f84a272a00513","parentSpanId":null,"spanId":"db919df0571d45da","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567164344025000,"durationNanoSeconds":4696726,"metadata":{}} -{"traceId":"843f84a272a00513","parentSpanId":null,"spanId":"c725af5c8637e47e","operation":"consumework0","startTimeMicroSeconds":1567164344030000,"durationNanoSeconds":10151876,"metadata":{}} -{"traceId":"cf8a4c06e8ab8d7f","parentSpanId":null,"spanId":"706ded9ff2455ca2","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567164344027000,"durationNanoSeconds":12908478,"metadata":{}} -{"traceId":"cf8a4c06e8ab8d7f","parentSpanId":null,"spanId":"cd4c544a6a5ab63e","operation":"consumework1","startTimeMicroSeconds":1567164344040000,"durationNanoSeconds":10793107,"metadata":{}} -{"traceId":"da1bc5316095e03b","parentSpanId":null,"spanId":"737039598221ba1b","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567164344027000,"durationNanoSeconds":23632216,"metadata":{}} -{"traceId":"da1bc5316095e03b","parentSpanId":null,"spanId":"11d4dfa19c6739d5","operation":"consumework2","startTimeMicroSeconds":1567164344051000,"durationNanoSeconds":10137173,"metadata":{}} -{"traceId":"1a6ab76b25bb4362","parentSpanId":null,"spanId":"f540c1be86884492","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":33531126,"metadata":{}} -{"traceId":"1a6ab76b25bb4362","parentSpanId":null,"spanId":"e65cd65ccfd177cf","operation":"consumework3","startTimeMicroSeconds":1567164344061000,"durationNanoSeconds":10099212,"metadata":{}} -{"traceId":"77de7365f338c1ee","parentSpanId":null,"spanId":"5546df54dcf7e886","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":43676511,"metadata":{}} -{"traceId":"77de7365f338c1ee","parentSpanId":null,"spanId":"10e709022e092389","operation":"consumework4","startTimeMicroSeconds":1567164344071000,"durationNanoSeconds":10122892,"metadata":{}} -{"traceId":"bb9a69551b71e7ea","parentSpanId":null,"spanId":"5653530a0cbf26d7","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":53863086,"metadata":{}} -{"traceId":"bb9a69551b71e7ea","parentSpanId":null,"spanId":"8b65809262c2b2b6","operation":"consumework5","startTimeMicroSeconds":1567164344082000,"durationNanoSeconds":10137053,"metadata":{}} -{"traceId":"7cef536d3f675b2e","parentSpanId":null,"spanId":"1652a0d2e1cf3d54","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":64039263,"metadata":{}} -{"traceId":"7cef536d3f675b2e","parentSpanId":null,"spanId":"6f5c7b84d067e2f3","operation":"consumework6","startTimeMicroSeconds":1567164344092000,"durationNanoSeconds":10557940,"metadata":{}} -{"traceId":"81c295bb6bf4e8a4","parentSpanId":null,"spanId":"5e172a55796db2d1","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":74667572,"metadata":{}} -{"traceId":"81c295bb6bf4e8a4","parentSpanId":null,"spanId":"7346e7f2861daeb1","operation":"consumework7","startTimeMicroSeconds":1567164344102000,"durationNanoSeconds":10423896,"metadata":{}} -{"traceId":"200c0604c7365604","parentSpanId":null,"spanId":"6a490b5e08e6d056","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":85177907,"metadata":{}} -{"traceId":"200c0604c7365604","parentSpanId":null,"spanId":"d389ac10595fac0b","operation":"consumework8","startTimeMicroSeconds":1567164344113000,"durationNanoSeconds":10233766,"metadata":{}} -{"traceId":"2ffdd6d4b0ba7d27","parentSpanId":null,"spanId":"02af171d88197d96","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":95492489,"metadata":{}} -{"traceId":"2ffdd6d4b0ba7d27","parentSpanId":null,"spanId":"f6a91f568bcce1d3","operation":"consumework9","startTimeMicroSeconds":1567164344123000,"durationNanoSeconds":10063331,"metadata":{}} -{"traceId":"10d09aa54b374a82","parentSpanId":null,"spanId":"4a84ca6456d0a6b7","operation":"callback-pending10 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":105644112,"metadata":{}} -{"traceId":"10d09aa54b374a82","parentSpanId":null,"spanId":"bd90326725f332b0","operation":"consumework10","startTimeMicroSeconds":1567164344134000,"durationNanoSeconds":10698792,"metadata":{}} -{"traceId":"3768b61ae5514761","parentSpanId":null,"spanId":"da9ea9c9dbb5ad19","operation":"callback-pending11 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":116397192,"metadata":{}} -{"traceId":"3768b61ae5514761","parentSpanId":null,"spanId":"bb8d7efd51c2b5b4","operation":"consumework11","startTimeMicroSeconds":1567164344144000,"durationNanoSeconds":10504952,"metadata":{}} -{"traceId":"13aad173bba6c031","parentSpanId":null,"spanId":"85ee97a7eb2ab02f","operation":"callback-pending12 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":126953445,"metadata":{}} -{"traceId":"13aad173bba6c031","parentSpanId":null,"spanId":"f3a08efb59dae0ec","operation":"consumework12","startTimeMicroSeconds":1567164344155000,"durationNanoSeconds":10225682,"metadata":{}} -{"traceId":"7a0f96012f9e7a4d","parentSpanId":null,"spanId":"2d352290fdc3667c","operation":"callback-pending13 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":137263854,"metadata":{}} -{"traceId":"7a0f96012f9e7a4d","parentSpanId":null,"spanId":"9e1415eeb2ff4be5","operation":"consumework13","startTimeMicroSeconds":1567164344165000,"durationNanoSeconds":10847763,"metadata":{}} -{"traceId":"2fe8e347b82c5eca","parentSpanId":null,"spanId":"5870f91bca95c992","operation":"callback-pending14 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":148208609,"metadata":{}} -{"traceId":"2fe8e347b82c5eca","parentSpanId":null,"spanId":"be9078e925e80f64","operation":"consumework14","startTimeMicroSeconds":1567164344176000,"durationNanoSeconds":10496159,"metadata":{}} -{"traceId":"e4d8c30065dc306f","parentSpanId":null,"spanId":"7bfd20655beb6e93","operation":"callback-pending15 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":158771359,"metadata":{}} -{"traceId":"e4d8c30065dc306f","parentSpanId":null,"spanId":"9505f16ee1712b3b","operation":"consumework15","startTimeMicroSeconds":1567164344187000,"durationNanoSeconds":11327523,"metadata":{}} -{"traceId":"b934cf08d3b9ba94","parentSpanId":null,"spanId":"b062b715fb587e37","operation":"callback-pending16 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":170196016,"metadata":{}} -{"traceId":"b934cf08d3b9ba94","parentSpanId":null,"spanId":"9fb5eed7c6c2c1e8","operation":"consumework16","startTimeMicroSeconds":1567164344198000,"durationNanoSeconds":10528883,"metadata":{}} -{"traceId":"95e77706a626aed7","parentSpanId":null,"spanId":"b21aba6cdc84f387","operation":"callback-pending17 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":180823066,"metadata":{}} -{"traceId":"95e77706a626aed7","parentSpanId":null,"spanId":"0a798360053dc4d1","operation":"consumework17","startTimeMicroSeconds":1567164344209000,"durationNanoSeconds":10120623,"metadata":{}} -{"traceId":"a9ff54230beff5a1","parentSpanId":null,"spanId":"b326fce7af1473da","operation":"callback-pending18 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":190974947,"metadata":{}} -{"traceId":"a9ff54230beff5a1","parentSpanId":null,"spanId":"473b5213f2c88ace","operation":"consumework18","startTimeMicroSeconds":1567164344219000,"durationNanoSeconds":10390118,"metadata":{}} -{"traceId":"11f6946662d54ea3","parentSpanId":null,"spanId":"c28f4f1d537197fb","operation":"callback-pending19 (cross thread span)","startTimeMicroSeconds":1567164344028000,"durationNanoSeconds":201419427,"metadata":{}} -{"traceId":"11f6946662d54ea3","parentSpanId":null,"spanId":"952df20bdfa81cac","operation":"consumework19","startTimeMicroSeconds":1567164344230000,"durationNanoSeconds":10163426,"metadata":{}} +{"traceId":"50b900d8dbe6c9a0","parentSpanId":null,"spanId":"28a4d1d0317d1ec5","operation":"callback-pending0 (cross thread span)","startTimeMicroSeconds":1567179155501507,"durationNanoSeconds":4007792,"metadata":{}} +{"traceId":"50b900d8dbe6c9a0","parentSpanId":"28a4d1d0317d1ec5","spanId":"5e7e39cbe58ab983","operation":"consumework0","startTimeMicroSeconds":1567179155505509,"durationNanoSeconds":12579958,"metadata":{}} +{"traceId":"6bfab3252e68720c","parentSpanId":null,"spanId":"58ee422db11c0392","operation":"callback-pending1 (cross thread span)","startTimeMicroSeconds":1567179155503016,"durationNanoSeconds":15153733,"metadata":{}} +{"traceId":"6bfab3252e68720c","parentSpanId":"58ee422db11c0392","spanId":"8d1ede59e12be15a","operation":"consumework1","startTimeMicroSeconds":1567179155518167,"durationNanoSeconds":12559184,"metadata":{}} +{"traceId":"1d6d6e7ca65cf7de","parentSpanId":null,"spanId":"e8d785cf4d6ce075","operation":"callback-pending2 (cross thread span)","startTimeMicroSeconds":1567179155503168,"durationNanoSeconds":27629188,"metadata":{}} +{"traceId":"1d6d6e7ca65cf7de","parentSpanId":"e8d785cf4d6ce075","spanId":"6582b117c77e4f3d","operation":"consumework2","startTimeMicroSeconds":1567179155530792,"durationNanoSeconds":12536869,"metadata":{}} +{"traceId":"302841f6b2e46924","parentSpanId":null,"spanId":"88d316f1d122f097","operation":"callback-pending3 (cross thread span)","startTimeMicroSeconds":1567179155503226,"durationNanoSeconds":40140540,"metadata":{}} +{"traceId":"302841f6b2e46924","parentSpanId":"88d316f1d122f097","spanId":"2a1e25df6b32d90a","operation":"consumework3","startTimeMicroSeconds":1567179155543363,"durationNanoSeconds":12568984,"metadata":{}} +{"traceId":"2b1ae80539f41eae","parentSpanId":null,"spanId":"83628878fbfc122a","operation":"callback-pending4 (cross thread span)","startTimeMicroSeconds":1567179155503245,"durationNanoSeconds":52774184,"metadata":{}} +{"traceId":"2b1ae80539f41eae","parentSpanId":"83628878fbfc122a","spanId":"6c138b216ec7abb9","operation":"consumework4","startTimeMicroSeconds":1567179155556011,"durationNanoSeconds":12624928,"metadata":{}} +{"traceId":"11b7f46d12690c89","parentSpanId":null,"spanId":"64bd3d490de24aa2","operation":"callback-pending5 (cross thread span)","startTimeMicroSeconds":1567179155503563,"durationNanoSeconds":65199927,"metadata":{}} +{"traceId":"11b7f46d12690c89","parentSpanId":"64bd3d490de24aa2","spanId":"b01bbe5969b27dd7","operation":"consumework5","startTimeMicroSeconds":1567179155568740,"durationNanoSeconds":12604639,"metadata":{}} +{"traceId":"83256f209edb14eb","parentSpanId":null,"spanId":"d031e174bebbdbb4","operation":"callback-pending6 (cross thread span)","startTimeMicroSeconds":1567179155503600,"durationNanoSeconds":77887397,"metadata":{}} +{"traceId":"83256f209edb14eb","parentSpanId":"d031e174bebbdbb4","spanId":"21021526f6a3c8d1","operation":"consumework6","startTimeMicroSeconds":1567179155581477,"durationNanoSeconds":11489059,"metadata":{}} +{"traceId":"49f1b5fb982f5d09","parentSpanId":null,"spanId":"a543aaf21ddb13f9","operation":"callback-pending7 (cross thread span)","startTimeMicroSeconds":1567179155503645,"durationNanoSeconds":89420459,"metadata":{}} +{"traceId":"49f1b5fb982f5d09","parentSpanId":"a543aaf21ddb13f9","spanId":"0c1b5497daff1534","operation":"consumework7","startTimeMicroSeconds":1567179155593057,"durationNanoSeconds":12605636,"metadata":{}} +{"traceId":"db7fa8697142f7ae","parentSpanId":null,"spanId":"7685d09b092f354e","operation":"callback-pending8 (cross thread span)","startTimeMicroSeconds":1567179155503681,"durationNanoSeconds":102085071,"metadata":{}} +{"traceId":"db7fa8697142f7ae","parentSpanId":"7685d09b092f354e","spanId":"7f4e6b366f706476","operation":"consumework8","startTimeMicroSeconds":1567179155605758,"durationNanoSeconds":12317997,"metadata":{}} +{"traceId":"2f2a5dcb2caee8dd","parentSpanId":null,"spanId":"d6f522494408f854","operation":"callback-pending9 (cross thread span)","startTimeMicroSeconds":1567179155503725,"durationNanoSeconds":114431854,"metadata":{}} +{"traceId":"2f2a5dcb2caee8dd","parentSpanId":"d6f522494408f854","spanId":"cd0d3b798153b2b4","operation":"consumework9","startTimeMicroSeconds":1567179155618140,"durationNanoSeconds":12561795,"metadata":{}} +{"traceId":"a6309c1be32204dc","parentSpanId":null,"spanId":"ccf5b25861b6d08f","operation":"callback-pending10 (cross thread span)","startTimeMicroSeconds":1567179155503743,"durationNanoSeconds":127010221,"metadata":{}} +{"traceId":"a6309c1be32204dc","parentSpanId":"ccf5b25861b6d08f","spanId":"acdccb38c2edc241","operation":"consumework10","startTimeMicroSeconds":1567179155630748,"durationNanoSeconds":11866240,"metadata":{}} +{"traceId":"c35420ad51604d25","parentSpanId":null,"spanId":"e1b796a20045a5d1","operation":"callback-pending11 (cross thread span)","startTimeMicroSeconds":1567179155503850,"durationNanoSeconds":138843666,"metadata":{}} +{"traceId":"c35420ad51604d25","parentSpanId":"e1b796a20045a5d1","spanId":"3f031c1aac724c42","operation":"consumework11","startTimeMicroSeconds":1567179155642687,"durationNanoSeconds":12595121,"metadata":{}} +{"traceId":"99d332993dccfc5a","parentSpanId":null,"spanId":"522191af8221747d","operation":"callback-pending12 (cross thread span)","startTimeMicroSeconds":1567179155503885,"durationNanoSeconds":151466802,"metadata":{}} +{"traceId":"99d332993dccfc5a","parentSpanId":"522191af8221747d","spanId":"593d55f9c85ad567","operation":"consumework12","startTimeMicroSeconds":1567179155655345,"durationNanoSeconds":12562436,"metadata":{}} +{"traceId":"791f65806ad87c1c","parentSpanId":null,"spanId":"1afb4f467927972d","operation":"callback-pending13 (cross thread span)","startTimeMicroSeconds":1567179155503905,"durationNanoSeconds":164093060,"metadata":{}} +{"traceId":"791f65806ad87c1c","parentSpanId":"1afb4f467927972d","spanId":"addcf286609e7c45","operation":"consumework13","startTimeMicroSeconds":1567179155667992,"durationNanoSeconds":10527035,"metadata":{}} +{"traceId":"2375c1cdb687eedb","parentSpanId":null,"spanId":"2852cefecfb5d231","operation":"callback-pending14 (cross thread span)","startTimeMicroSeconds":1567179155503954,"durationNanoSeconds":174624506,"metadata":{}} +{"traceId":"2375c1cdb687eedb","parentSpanId":"2852cefecfb5d231","spanId":"c320fe1f20c68c0d","operation":"consumework14","startTimeMicroSeconds":1567179155678573,"durationNanoSeconds":12631227,"metadata":{}} +{"traceId":"126284dcaee0eeeb","parentSpanId":null,"spanId":"d035154cd49ae8f4","operation":"callback-pending15 (cross thread span)","startTimeMicroSeconds":1567179155503976,"durationNanoSeconds":187338227,"metadata":{}} +{"traceId":"126284dcaee0eeeb","parentSpanId":"d035154cd49ae8f4","spanId":"a6b1d607df74b2a9","operation":"consumework15","startTimeMicroSeconds":1567179155691303,"durationNanoSeconds":10076927,"metadata":{}} +{"traceId":"30230338d01054bb","parentSpanId":null,"spanId":"7964e2c1c8fc7df5","operation":"callback-pending16 (cross thread span)","startTimeMicroSeconds":1567179155503993,"durationNanoSeconds":197473467,"metadata":{}} +{"traceId":"30230338d01054bb","parentSpanId":"7964e2c1c8fc7df5","spanId":"d7e8281963b508d2","operation":"consumework16","startTimeMicroSeconds":1567179155701461,"durationNanoSeconds":10134059,"metadata":{}} +{"traceId":"aa54f0644b4228f5","parentSpanId":null,"spanId":"5dd6caf9d487151b","operation":"callback-pending17 (cross thread span)","startTimeMicroSeconds":1567179155504037,"durationNanoSeconds":207651656,"metadata":{}} +{"traceId":"aa54f0644b4228f5","parentSpanId":"5dd6caf9d487151b","spanId":"6e1aef9b3aa803c1","operation":"consumework17","startTimeMicroSeconds":1567179155711678,"durationNanoSeconds":12642382,"metadata":{}} +{"traceId":"5a492f1487ce1a0e","parentSpanId":null,"spanId":"eae8596ace5b266e","operation":"callback-pending18 (cross thread span)","startTimeMicroSeconds":1567179155504072,"durationNanoSeconds":220465071,"metadata":{}} +{"traceId":"5a492f1487ce1a0e","parentSpanId":"eae8596ace5b266e","spanId":"3ec21c0b462cc56a","operation":"consumework18","startTimeMicroSeconds":1567179155724516,"durationNanoSeconds":10779929,"metadata":{}} +{"traceId":"173c72e6e1887dc7","parentSpanId":null,"spanId":"6b72191b92ce9815","operation":"callback-pending19 (cross thread span)","startTimeMicroSeconds":1567179155504126,"durationNanoSeconds":231383222,"metadata":{}} +{"traceId":"173c72e6e1887dc7","parentSpanId":"6b72191b92ce9815","spanId":"0b7da4d94029d9f3","operation":"consumework19","startTimeMicroSeconds":1567179155735491,"durationNanoSeconds":11057095,"metadata":{}} diff --git a/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log index 0ba1dab56..9cc33130a 100644 --- a/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log +++ b/tracing-demos/src/test/resources/tracing/TracingDemos/transformed_future.log @@ -1,3 +1,3 @@ -{"traceId":"696f08a7fdf18e0b","parentSpanId":"43d2023f678df2b0","spanId":"0e9505216efdc9f7","operation":"first transform","startTimeMicroSeconds":1567164340439000,"durationNanoSeconds":1009327380,"metadata":{}} -{"traceId":"696f08a7fdf18e0b","parentSpanId":"43d2023f678df2b0","spanId":"2d884149650c8c8b","operation":"second transform","startTimeMicroSeconds":1567164341455000,"durationNanoSeconds":1003090219,"metadata":{}} -{"traceId":"696f08a7fdf18e0b","parentSpanId":null,"spanId":"43d2023f678df2b0","operation":"foo","startTimeMicroSeconds":1567164340373000,"durationNanoSeconds":2084075392,"metadata":{}} +{"traceId":"329f397ec3b7a0fe","parentSpanId":"9d83788a8b0f4ad7","spanId":"5ac0ec0a87e2435f","operation":"first transform","startTimeMicroSeconds":1567179152222200,"durationNanoSeconds":1013520284,"metadata":{}} +{"traceId":"329f397ec3b7a0fe","parentSpanId":"9d83788a8b0f4ad7","spanId":"e5e9381fe8b0fa02","operation":"second transform","startTimeMicroSeconds":1567179153239438,"durationNanoSeconds":1002827662,"metadata":{}} +{"traceId":"329f397ec3b7a0fe","parentSpanId":null,"spanId":"9d83788a8b0f4ad7","operation":"foo","startTimeMicroSeconds":1567179152163922,"durationNanoSeconds":2077780920,"metadata":{}} diff --git a/tracing/src/main/java/com/palantir/tracing/CloseableTracerTODO.java b/tracing/src/main/java/com/palantir/tracing/CloseableSpan.java similarity index 88% rename from tracing/src/main/java/com/palantir/tracing/CloseableTracerTODO.java rename to tracing/src/main/java/com/palantir/tracing/CloseableSpan.java index 6549ceb9f..85f89757e 100644 --- a/tracing/src/main/java/com/palantir/tracing/CloseableTracerTODO.java +++ b/tracing/src/main/java/com/palantir/tracing/CloseableSpan.java @@ -21,10 +21,10 @@ /** * Closeable marker around a tracing span operation. This object should be used in a try/with block. */ -public interface CloseableTracerTODO extends Closeable { +public interface CloseableSpan extends Closeable { /** - * Completes the Span marked by this {@link CloseableTracerTODO}. + * Completes the Span marked by this {@link CloseableSpan}. *

* {@link #close} must be invoked on the same thread which started this span. */ diff --git a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java b/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java deleted file mode 100644 index 492ec22cf..000000000 --- a/tracing/src/main/java/com/palantir/tracing/CrossThreadSpan.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * (c) Copyright 2019 Palantir Technologies Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.palantir.tracing; - -import com.google.errorprone.annotations.CheckReturnValue; -import com.google.errorprone.annotations.CompileTimeConstant; -import com.google.errorprone.annotations.MustBeClosed; -import com.palantir.logsafe.Preconditions; -import com.palantir.tracing.api.OpenSpan; -import com.palantir.tracing.api.Span; -import com.palantir.tracing.api.SpanType; -import java.util.Collections; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.atomic.AtomicReference; -import javax.annotation.concurrent.ThreadSafe; - -/** For low-level library code only. */ -@ThreadSafe -public final class CrossThreadSpan { - - private final String traceId; - private final boolean observable; - private final AtomicReference openSpan; - - private CrossThreadSpan(String traceId, boolean observable, AtomicReference openSpan) { - this.traceId = traceId; - this.observable = observable; - this.openSpan = openSpan; - } - - @CheckReturnValue - public static CrossThreadSpan startSpan(String operation) { - Trace trace = Tracer.hasTraceId() - ? Tracer.getOrCreateCurrentTrace() - : Tracer.createTrace(Observability.UNDECIDED, Tracers.randomId()); - - Optional parentSpanId = trace.top().map(OpenSpan::getSpanId); - OpenSpan openSpan1 = OpenSpan.of( - operation, - Tracers.randomId(), - SpanType.LOCAL, - parentSpanId, - trace.getOriginatingSpanId()); - - return new CrossThreadSpan(trace.getTraceId(), trace.isObservable(), new AtomicReference<>(openSpan1)); - } - - /** - * Complete the span. This method does not change any thread-local state, so successive operations on this - * thread may have different traceIds. If you want to finish the span and continue work related to - * this traceId use {@link #sibling}, or if you want to continue work related to this traceId without completing - * the span, use {@link #child}. - */ - public void terminate() { - OpenSpan inProgress = consumeOpenSpan("CrossThreadSpan may only be terminated once"); - - // end the OpenSpan - Map metadata = Collections.emptyMap(); - Span span = Tracer.toSpan(inProgress, metadata, traceId); - - Tracer.notifyObservers(span); - } - - /** - * Finish the cross-thread span and start a new (thread local span) with the given operation name. - * NOTE: this is destructive, because any existing threadlocal tracing state is thrown away. - */ - @MustBeClosed - public CloseableTracer sibling(String nextOperationName) { - OpenSpan inProgress = consumeOpenSpan("Can't call CrossThreadSpan#sibling if span has already been closed"); - - Map metadata = Collections.emptyMap(); - Span span = Tracer.toSpan(inProgress, metadata, traceId); - Tracer.notifyObservers(span); - - // we throw away the existing thread local state and replace it with our view of the world - Tracer.clearCurrentTrace(); - Tracer.setTrace(Trace.of(observable, traceId)); - - return CloseableTracer.startSpan(nextOperationName, inProgress.getParentSpanId(), SpanType.LOCAL); - } - - /** - * Start a new span parented to this current in-progress CrossThreadSpan. - * NOTE: this is destructive, because any existing threadlocal tracing state is thrown away. - */ - @MustBeClosed - public CloseableTracer child(String nextOperationName) { - Tracer.clearCurrentTrace(); - - OpenSpan inProgress = accessOpenSpan("Can't create child after terminate has been called"); - - Tracer.setTrace(Trace.of(observable, traceId)); - - return CloseableTracer.startSpan(nextOperationName, Optional.of(inProgress.getSpanId()), SpanType.LOCAL); - } - - /** - * Unusual method - returns a new {@link CrossThreadSpan} parented to this instance. Only necessary if you want - * to instrument something that begins on this thread and ends on another thread. Otherwise, use - * {@link #sibling} or {@link #child}. - * - * This method does not touch any thread-local tracing state, so successive operations on this thread may have - * completely unrelated traceIds. - */ - @CheckReturnValue - public CrossThreadSpan crossThreadSpan(String operation) { - OpenSpan parent = accessOpenSpan("Can't create crossThreadSpan after terminate has been called"); - - OpenSpan child = OpenSpan.of( - operation, - Tracers.randomId(), - SpanType.LOCAL, - Optional.of(parent.getSpanId()), - parent.getOriginatingSpanId()); - - return new CrossThreadSpan(traceId, Tracer.isTraceObservable(), new AtomicReference<>(child)); - } - - private OpenSpan consumeOpenSpan(@CompileTimeConstant String failureMessage) { - OpenSpan inProgress = openSpan.getAndSet(null); - Preconditions.checkState(inProgress != null, failureMessage); - return inProgress; - } - - private OpenSpan accessOpenSpan(@CompileTimeConstant String failureMessage) { - OpenSpan inProgress = openSpan.get(); - Preconditions.checkState(inProgress != null, failureMessage); - return inProgress; - } -} diff --git a/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java b/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java index 3cde94e6a..a4cd034af 100644 --- a/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java +++ b/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java @@ -50,17 +50,29 @@ static DetachedSpan start(String operation) { * as the parent instead of thread state. */ @MustBeClosed - CloseableTracerTODO childSpan(String operationName, SpanType type); + CloseableSpan childSpan(String operationName, SpanType type); /** * Equivalent to {@link Tracer#startSpan(String)}, but using this {@link DetachedSpan} as the parent instead * of thread state. */ @MustBeClosed - default CloseableTracerTODO childSpan(String operationName) { + default CloseableSpan childSpan(String operationName) { return childSpan(operationName, SpanType.LOCAL); } + @MustBeClosed + default CloseableSpan completeAndStartChild(String operationName, SpanType type) { + CloseableSpan closeableTracerTODO = childSpan(operationName, type); + complete(); + return closeableTracerTODO; + } + + @MustBeClosed + default CloseableSpan completeAndStartChild(String operationName) { + return completeAndStartChild(operationName, SpanType.LOCAL); + } + /** Starts a child {@link DetachedSpan} using this instance as the parent. */ @CheckReturnValue DetachedSpan childDetachedSpan(String operation, SpanType type); diff --git a/tracing/src/main/java/com/palantir/tracing/Tracer.java b/tracing/src/main/java/com/palantir/tracing/Tracer.java index 7a6104b82..92087024a 100644 --- a/tracing/src/main/java/com/palantir/tracing/Tracer.java +++ b/tracing/src/main/java/com/palantir/tracing/Tracer.java @@ -202,7 +202,7 @@ private static final class SampledDetachedSpan implements DetachedSpan { @Override @MustBeClosed - public CloseableTracerTODO childSpan(String operationName, SpanType type) { + public CloseableSpan childSpan(String operationName, SpanType type) { warnIfCompleted("startSpanOnCurrentThread"); Trace maybeCurrentTrace = currentTrace.get(); setTrace(Trace.of(true, traceId)); @@ -247,7 +247,7 @@ private static final class UnsampledDetachedSpan implements DetachedSpan { } @Override - public CloseableTracerTODO childSpan(String operationName, SpanType type) { + public CloseableSpan childSpan(String operationName, SpanType type) { Trace maybeCurrentTrace = currentTrace.get(); setTrace(Trace.of(false, traceId)); Tracer.fastStartSpan(operationName, type); @@ -270,14 +270,14 @@ public String toString() { } } - private static final class TraceRestoringCloseableTracerTODO implements CloseableTracerTODO { + private static final class TraceRestoringCloseableTracerTODO implements CloseableSpan { // Complete the current span. - private static final CloseableTracerTODO DEFAULT_TOKEN = Tracer::fastCompleteSpan; + private static final CloseableSpan DEFAULT_TOKEN = Tracer::fastCompleteSpan; private final Trace original; - static CloseableTracerTODO of(@Nullable Trace original) { + static CloseableSpan of(@Nullable Trace original) { return original == null ? DEFAULT_TOKEN : new TraceRestoringCloseableTracerTODO(original); } diff --git a/tracing/src/test/java/com/palantir/tracing/TracerTest.java b/tracing/src/test/java/com/palantir/tracing/TracerTest.java index 6b8acbe20..e9d63cbe1 100644 --- a/tracing/src/test/java/com/palantir/tracing/TracerTest.java +++ b/tracing/src/test/java/com/palantir/tracing/TracerTest.java @@ -382,7 +382,7 @@ public void testDetachedTraceAppliedToThreadState() { DetachedSpan detached = DetachedSpan.start(operation1); try { assertThat(Tracer.hasTraceId()).isFalse(); - try (CloseableTracerTODO ignored = detached.childSpan(operation2)) { + try (CloseableSpan ignored = detached.childSpan(operation2)) { assertThat(Tracer.hasTraceId()).isTrue(); } verify(observer1).consume(spanCaptor.capture()); @@ -401,7 +401,7 @@ public void testDetachedTraceRestoresTrace() { DetachedSpan detached = DetachedSpan.start("detached"); Tracer.fastStartSpan("standard"); String standardTraceId = Tracer.getTraceId(); - try (CloseableTracerTODO ignored = detached.childSpan("operation")) { + try (CloseableSpan ignored = detached.childSpan("operation")) { assertThat(Tracer.getTraceId()) .describedAs("The detached span should have a different trace") .isNotEqualTo(standardTraceId); @@ -442,7 +442,7 @@ public void testDetachedTraceBuildsUponExistingTrace() { Tracer.fastStartSpan("standard"); DetachedSpan detached = DetachedSpan.start("detached"); String standardTraceId = Tracer.getTraceId(); - try (CloseableTracerTODO ignored = detached.childSpan("operation")) { + try (CloseableSpan ignored = detached.childSpan("operation")) { assertThat(Tracer.getTraceId()).isEqualTo(standardTraceId); } assertThat(Tracer.getTraceId()).isEqualTo(standardTraceId); From 00df1a26c4796348be73f801747032c9a98c3bd6 Mon Sep 17 00:00:00 2001 From: forozco Date: Fri, 30 Aug 2019 16:47:10 +0100 Subject: [PATCH 20/24] revert unnecessary API expansion --- .../java/com/palantir/tracing/CloseableTracer.java | 10 ---------- tracing/src/main/java/com/palantir/tracing/Tracer.java | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/tracing/src/main/java/com/palantir/tracing/CloseableTracer.java b/tracing/src/main/java/com/palantir/tracing/CloseableTracer.java index 907150f2e..c32cd3710 100644 --- a/tracing/src/main/java/com/palantir/tracing/CloseableTracer.java +++ b/tracing/src/main/java/com/palantir/tracing/CloseableTracer.java @@ -17,7 +17,6 @@ package com.palantir.tracing; import com.palantir.tracing.api.SpanType; -import java.util.Optional; /** * Wraps the {@link Tracer} methods in a closeable resource to enable the usage of the try-with-resources pattern. @@ -49,15 +48,6 @@ public static CloseableTracer startSpan(String operation, SpanType spanType) { return INSTANCE; } - static CloseableTracer startSpan(String operation, Optional parentSpanId, SpanType spanType) { - if (parentSpanId.isPresent()) { - Tracer.fastStartSpan(operation, parentSpanId.get(), spanType); - } else { - Tracer.fastStartSpan(operation, spanType); - } - return INSTANCE; - } - @Override public void close() { Tracer.fastCompleteSpan(); diff --git a/tracing/src/main/java/com/palantir/tracing/Tracer.java b/tracing/src/main/java/com/palantir/tracing/Tracer.java index 92087024a..6f2eda084 100644 --- a/tracing/src/main/java/com/palantir/tracing/Tracer.java +++ b/tracing/src/main/java/com/palantir/tracing/Tracer.java @@ -69,7 +69,7 @@ private Tracer() {} /** * Creates a new trace, but does not set it as the current trace. */ - static Trace createTrace(Observability observability, String traceId) { + private static Trace createTrace(Observability observability, String traceId) { checkArgument(!Strings.isNullOrEmpty(traceId), "traceId must be non-empty"); boolean observable = shouldObserve(observability); return Trace.of(observable, traceId); From 5e5911fd6fbd809e02f31e75bfad3f767ec64c5d Mon Sep 17 00:00:00 2001 From: forozco Date: Fri, 30 Aug 2019 16:58:25 +0100 Subject: [PATCH 21/24] compile --- .../tracing/TestTracingExtensionDemo.java | 3 +- .../handles_async_spans.log | 53 ++++++++++--------- .../com/palantir/tracing/DetachedSpan.java | 1 + .../java/com/palantir/tracing/Tracer.java | 10 ++-- 4 files changed, 35 insertions(+), 32 deletions(-) diff --git a/tracing-test-utils/src/test/java/com/palantir/tracing/TestTracingExtensionDemo.java b/tracing-test-utils/src/test/java/com/palantir/tracing/TestTracingExtensionDemo.java index 5d640f2fa..7340bf6fa 100644 --- a/tracing-test-utils/src/test/java/com/palantir/tracing/TestTracingExtensionDemo.java +++ b/tracing-test-utils/src/test/java/com/palantir/tracing/TestTracingExtensionDemo.java @@ -92,8 +92,7 @@ void handles_async_spans() throws Exception { DetachedSpan detachedSpan = DetachedSpan.start("task-queue-time" + i); executorService.submit(() -> { - detachedSpan.complete(); - try { + try (CloseableSpan closeableSpan = detachedSpan.completeAndStartChild("do-work-" + i)){ prod_code(); countDownLatch.countDown(); } catch (InterruptedException e) { diff --git a/tracing-test-utils/src/test/resources/tracing/TestTracingExtensionDemo/handles_async_spans.log b/tracing-test-utils/src/test/resources/tracing/TestTracingExtensionDemo/handles_async_spans.log index e87048bea..53dd699fd 100644 --- a/tracing-test-utils/src/test/resources/tracing/TestTracingExtensionDemo/handles_async_spans.log +++ b/tracing-test-utils/src/test/resources/tracing/TestTracingExtensionDemo/handles_async_spans.log @@ -1,25 +1,28 @@ -{"traceId":"fb05fd207c630bd3","parentSpanId":null,"spanId":"a3f606c72e62a710","operation":"ignored","startTimeMicroSeconds":1567076410003543,"durationNanoSeconds":12938215,"metadata":{}} -{"traceId":"73381203b2c47136","parentSpanId":null,"spanId":"3086a27c24ce815e","operation":"task-queue-time0","startTimeMicroSeconds":1567076410021179,"durationNanoSeconds":899520,"metadata":{}} -{"traceId":"b79cc4c64574aad2","parentSpanId":null,"spanId":"1e21376014cb7f61","operation":"task-queue-time1","startTimeMicroSeconds":1567076410021935,"durationNanoSeconds":193480,"metadata":{}} -{"traceId":"4ef4bff01e1b1bd9","parentSpanId":"c2d2eda8fcae8a05","spanId":"ca9788b9eea26f72","operation":"nested","startTimeMicroSeconds":1567076410126903,"durationNanoSeconds":92485899,"metadata":{}} -{"traceId":"a156e2e8780b6012","parentSpanId":"61515e65bda9e381","spanId":"dee598fcad473c48","operation":"nested","startTimeMicroSeconds":1567076410126903,"durationNanoSeconds":92471364,"metadata":{}} -{"traceId":"a156e2e8780b6012","parentSpanId":"b27a810be2a4d3e4","spanId":"61515e65bda9e381","operation":"first","startTimeMicroSeconds":1567076410022204,"durationNanoSeconds":207478610,"metadata":{}} -{"traceId":"4ef4bff01e1b1bd9","parentSpanId":"aafa74f69d59f292","spanId":"c2d2eda8fcae8a05","operation":"first","startTimeMicroSeconds":1567076410022205,"durationNanoSeconds":209009077,"metadata":{}} -{"traceId":"a156e2e8780b6012","parentSpanId":"b27a810be2a4d3e4","spanId":"f0679ccf1733c6fe","operation":"second","startTimeMicroSeconds":1567076410229819,"durationNanoSeconds":103480610,"metadata":{}} -{"traceId":"4ef4bff01e1b1bd9","parentSpanId":"aafa74f69d59f292","spanId":"31b161149a41f6fb","operation":"second","startTimeMicroSeconds":1567076410231255,"durationNanoSeconds":105083748,"metadata":{}} -{"traceId":"4ef4bff01e1b1bd9","parentSpanId":"aafa74f69d59f292","spanId":"0785b0e74e8cdbf8","operation":"third","startTimeMicroSeconds":1567076410336443,"durationNanoSeconds":100367739,"metadata":{}} -{"traceId":"a156e2e8780b6012","parentSpanId":"b27a810be2a4d3e4","spanId":"30fd313240f1a726","operation":"third","startTimeMicroSeconds":1567076410333428,"durationNanoSeconds":103376370,"metadata":{}} -{"traceId":"4ef4bff01e1b1bd9","parentSpanId":null,"spanId":"aafa74f69d59f292","operation":"root","startTimeMicroSeconds":1567076410022165,"durationNanoSeconds":414732085,"metadata":{}} -{"traceId":"a156e2e8780b6012","parentSpanId":null,"spanId":"b27a810be2a4d3e4","operation":"root","startTimeMicroSeconds":1567076410022165,"durationNanoSeconds":414732899,"metadata":{}} -{"traceId":"89d3d017d425a8b8","parentSpanId":null,"spanId":"dde59522bc8a754f","operation":"task-queue-time2","startTimeMicroSeconds":1567076410022076,"durationNanoSeconds":415233873,"metadata":{}} -{"traceId":"3c91d8db7b506203","parentSpanId":null,"spanId":"cc95737a6edc78da","operation":"task-queue-time3","startTimeMicroSeconds":1567076410022113,"durationNanoSeconds":415236592,"metadata":{}} -{"traceId":"ee346028ce297878","parentSpanId":"95f4cdd949f01ada","spanId":"7b17127136bb3acf","operation":"nested","startTimeMicroSeconds":1567076410542179,"durationNanoSeconds":94531482,"metadata":{}} -{"traceId":"b4fde51c7bc460c7","parentSpanId":"9b61e00ad0e18969","spanId":"329e74977840d096","operation":"nested","startTimeMicroSeconds":1567076410542184,"durationNanoSeconds":94547930,"metadata":{}} -{"traceId":"ee346028ce297878","parentSpanId":"145dfc9a5cd41d4d","spanId":"95f4cdd949f01ada","operation":"first","startTimeMicroSeconds":1567076410437430,"durationNanoSeconds":210367169,"metadata":{}} -{"traceId":"b4fde51c7bc460c7","parentSpanId":"03010756873e1c16","spanId":"9b61e00ad0e18969","operation":"first","startTimeMicroSeconds":1567076410437463,"durationNanoSeconds":210366339,"metadata":{}} -{"traceId":"ee346028ce297878","parentSpanId":"145dfc9a5cd41d4d","spanId":"e9c289164fbcf6d5","operation":"second","startTimeMicroSeconds":1567076410647902,"durationNanoSeconds":100436401,"metadata":{}} -{"traceId":"b4fde51c7bc460c7","parentSpanId":"03010756873e1c16","spanId":"78c75f4d3301d52f","operation":"second","startTimeMicroSeconds":1567076410647916,"durationNanoSeconds":100423700,"metadata":{}} -{"traceId":"b4fde51c7bc460c7","parentSpanId":"03010756873e1c16","spanId":"ed16a3a693d71691","operation":"third","startTimeMicroSeconds":1567076410748416,"durationNanoSeconds":105060552,"metadata":{}} -{"traceId":"ee346028ce297878","parentSpanId":"145dfc9a5cd41d4d","spanId":"c0415110599c666d","operation":"third","startTimeMicroSeconds":1567076410748416,"durationNanoSeconds":105061139,"metadata":{}} -{"traceId":"ee346028ce297878","parentSpanId":null,"spanId":"145dfc9a5cd41d4d","operation":"root","startTimeMicroSeconds":1567076410437401,"durationNanoSeconds":416156329,"metadata":{}} -{"traceId":"b4fde51c7bc460c7","parentSpanId":null,"spanId":"03010756873e1c16","operation":"root","startTimeMicroSeconds":1567076410437436,"durationNanoSeconds":416123118,"metadata":{}} +{"traceId":"6c07650507d1dc08","parentSpanId":null,"spanId":"c12ba93b80b19725","operation":"task-queue-time1","startTimeMicroSeconds":1567180389235355,"durationNanoSeconds":11956324,"metadata":{}} +{"traceId":"40ea321658713d40","parentSpanId":null,"spanId":"345ff4aaa39923ce","operation":"task-queue-time0","startTimeMicroSeconds":1567180389233283,"durationNanoSeconds":13815322,"metadata":{}} +{"traceId":"6c07650507d1dc08","parentSpanId":"9aaaba8e95703e3b","spanId":"82d2fbbf0ffe1d8d","operation":"nested","startTimeMicroSeconds":1567180389355806,"durationNanoSeconds":92813862,"metadata":{}} +{"traceId":"40ea321658713d40","parentSpanId":"89cea9cc4fa0b10c","spanId":"bad26157fdb995c5","operation":"nested","startTimeMicroSeconds":1567180389357275,"durationNanoSeconds":92511278,"metadata":{}} +{"traceId":"6c07650507d1dc08","parentSpanId":"b195ba88d5824279","spanId":"9aaaba8e95703e3b","operation":"first","startTimeMicroSeconds":1567180389252203,"durationNanoSeconds":206768430,"metadata":{}} +{"traceId":"40ea321658713d40","parentSpanId":"33ab81c11132cc7b","spanId":"89cea9cc4fa0b10c","operation":"first","startTimeMicroSeconds":1567180389252205,"durationNanoSeconds":208875710,"metadata":{}} +{"traceId":"6c07650507d1dc08","parentSpanId":"b195ba88d5824279","spanId":"1e46d0536294cb22","operation":"second","startTimeMicroSeconds":1567180389459086,"durationNanoSeconds":102914472,"metadata":{}} +{"traceId":"40ea321658713d40","parentSpanId":"33ab81c11132cc7b","spanId":"71baa3b92a2bfbd0","operation":"second","startTimeMicroSeconds":1567180389461291,"durationNanoSeconds":103817429,"metadata":{}} +{"traceId":"6c07650507d1dc08","parentSpanId":"b195ba88d5824279","spanId":"d2a62d17e0ee6b9d","operation":"third","startTimeMicroSeconds":1567180389562054,"durationNanoSeconds":100297042,"metadata":{}} +{"traceId":"6c07650507d1dc08","parentSpanId":"1548c30c6729037d","spanId":"b195ba88d5824279","operation":"root","startTimeMicroSeconds":1567180389252176,"durationNanoSeconds":410200444,"metadata":{}} +{"traceId":"6c07650507d1dc08","parentSpanId":"c12ba93b80b19725","spanId":"1548c30c6729037d","operation":"do-work-1","startTimeMicroSeconds":1567180389235844,"durationNanoSeconds":426606576,"metadata":{}} +{"traceId":"728f25e13273afbc","parentSpanId":null,"spanId":"496b37af19273ce8","operation":"task-queue-time2","startTimeMicroSeconds":1567180389235585,"durationNanoSeconds":427118831,"metadata":{}} +{"traceId":"40ea321658713d40","parentSpanId":"33ab81c11132cc7b","spanId":"f4d2eb496e161036","operation":"third","startTimeMicroSeconds":1567180389565173,"durationNanoSeconds":102737254,"metadata":{}} +{"traceId":"40ea321658713d40","parentSpanId":"0a79a630253e60e8","spanId":"33ab81c11132cc7b","operation":"root","startTimeMicroSeconds":1567180389252175,"durationNanoSeconds":415874032,"metadata":{}} +{"traceId":"40ea321658713d40","parentSpanId":"345ff4aaa39923ce","spanId":"0a79a630253e60e8","operation":"do-work-0","startTimeMicroSeconds":1567180389235842,"durationNanoSeconds":432310999,"metadata":{}} +{"traceId":"763ac38b7084b7a2","parentSpanId":null,"spanId":"b731b1e07a753687","operation":"task-queue-time3","startTimeMicroSeconds":1567180389235726,"durationNanoSeconds":432683852,"metadata":{}} +{"traceId":"728f25e13273afbc","parentSpanId":"dddb06e55afd267d","spanId":"8a3781b86bca101e","operation":"nested","startTimeMicroSeconds":1567180389762814,"durationNanoSeconds":91707310,"metadata":{}} +{"traceId":"728f25e13273afbc","parentSpanId":"2425a8e153aba4a5","spanId":"dddb06e55afd267d","operation":"first","startTimeMicroSeconds":1567180389662740,"durationNanoSeconds":202367506,"metadata":{}} +{"traceId":"763ac38b7084b7a2","parentSpanId":"a9cf29d7b3a897d4","spanId":"47d6e78e62c3c6ae","operation":"nested","startTimeMicroSeconds":1567180389770660,"durationNanoSeconds":94458397,"metadata":{}} +{"traceId":"763ac38b7084b7a2","parentSpanId":"d5f32648b32b1fda","spanId":"a9cf29d7b3a897d4","operation":"first","startTimeMicroSeconds":1567180389668476,"durationNanoSeconds":209189854,"metadata":{}} +{"traceId":"728f25e13273afbc","parentSpanId":"2425a8e153aba4a5","spanId":"0621793b86c4414c","operation":"second","startTimeMicroSeconds":1567180389865158,"durationNanoSeconds":102206544,"metadata":{}} +{"traceId":"763ac38b7084b7a2","parentSpanId":"d5f32648b32b1fda","spanId":"ac12732df8cc23a1","operation":"second","startTimeMicroSeconds":1567180389877692,"durationNanoSeconds":100850765,"metadata":{}} +{"traceId":"728f25e13273afbc","parentSpanId":"2425a8e153aba4a5","spanId":"6d9e9f03633a839b","operation":"third","startTimeMicroSeconds":1567180389967424,"durationNanoSeconds":101759781,"metadata":{}} +{"traceId":"728f25e13273afbc","parentSpanId":"6e7fb2e7fac2e8b5","spanId":"2425a8e153aba4a5","operation":"root","startTimeMicroSeconds":1567180389662731,"durationNanoSeconds":406481416,"metadata":{}} +{"traceId":"728f25e13273afbc","parentSpanId":"496b37af19273ce8","spanId":"6e7fb2e7fac2e8b5","operation":"do-work-2","startTimeMicroSeconds":1567180389662701,"durationNanoSeconds":406537305,"metadata":{}} +{"traceId":"763ac38b7084b7a2","parentSpanId":"d5f32648b32b1fda","spanId":"9b32b58ae93d75f0","operation":"third","startTimeMicroSeconds":1567180389978590,"durationNanoSeconds":105021266,"metadata":{}} +{"traceId":"763ac38b7084b7a2","parentSpanId":"022b58a6a4193c5c","spanId":"d5f32648b32b1fda","operation":"root","startTimeMicroSeconds":1567180389668464,"durationNanoSeconds":415157110,"metadata":{}} +{"traceId":"763ac38b7084b7a2","parentSpanId":"b731b1e07a753687","spanId":"022b58a6a4193c5c","operation":"do-work-3","startTimeMicroSeconds":1567180389668381,"durationNanoSeconds":415259337,"metadata":{}} diff --git a/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java b/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java index a4cd034af..a2eb9e76b 100644 --- a/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java +++ b/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java @@ -62,6 +62,7 @@ default CloseableSpan childSpan(String operationName) { } @MustBeClosed + @SuppressWarnings("MustBeClosedChecker") default CloseableSpan completeAndStartChild(String operationName, SpanType type) { CloseableSpan closeableTracerTODO = childSpan(operationName, type); complete(); diff --git a/tracing/src/main/java/com/palantir/tracing/Tracer.java b/tracing/src/main/java/com/palantir/tracing/Tracer.java index 6f2eda084..a55f8a3b6 100644 --- a/tracing/src/main/java/com/palantir/tracing/Tracer.java +++ b/tracing/src/main/java/com/palantir/tracing/Tracer.java @@ -207,7 +207,7 @@ public CloseableSpan childSpan(String operationName, SpanType type) { Trace maybeCurrentTrace = currentTrace.get(); setTrace(Trace.of(true, traceId)); Tracer.fastStartSpan(operationName, openSpan.getSpanId(), type); - return TraceRestoringCloseableTracerTODO.of(maybeCurrentTrace); + return TraceRestoringCloseableSpan.of(maybeCurrentTrace); } @Override @@ -251,7 +251,7 @@ public CloseableSpan childSpan(String operationName, SpanType type) { Trace maybeCurrentTrace = currentTrace.get(); setTrace(Trace.of(false, traceId)); Tracer.fastStartSpan(operationName, type); - return TraceRestoringCloseableTracerTODO.of(maybeCurrentTrace); + return TraceRestoringCloseableSpan.of(maybeCurrentTrace); } @Override @@ -270,7 +270,7 @@ public String toString() { } } - private static final class TraceRestoringCloseableTracerTODO implements CloseableSpan { + private static final class TraceRestoringCloseableSpan implements CloseableSpan { // Complete the current span. private static final CloseableSpan DEFAULT_TOKEN = Tracer::fastCompleteSpan; @@ -278,10 +278,10 @@ private static final class TraceRestoringCloseableTracerTODO implements Closeabl private final Trace original; static CloseableSpan of(@Nullable Trace original) { - return original == null ? DEFAULT_TOKEN : new TraceRestoringCloseableTracerTODO(original); + return original == null ? DEFAULT_TOKEN : new TraceRestoringCloseableSpan(original); } - TraceRestoringCloseableTracerTODO(Trace original) { + TraceRestoringCloseableSpan(Trace original) { this.original = Preconditions.checkNotNull(original, "Expected an original trace instance"); } From 3d4222a3356cd604559e36f122cad41d39c31857 Mon Sep 17 00:00:00 2001 From: forozco Date: Fri, 30 Aug 2019 17:15:33 +0100 Subject: [PATCH 22/24] check --- .../src/test/java/com/palantir/tracing/TracingDemos.java | 2 +- .../com/palantir/tracing/TestTracingExtensionDemo.java | 2 +- .../src/main/java/com/palantir/tracing/DetachedSpan.java | 4 ++-- tracing/src/main/java/com/palantir/tracing/Tracer.java | 8 +++++--- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java index 0d2260232..f16c684a1 100644 --- a/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java +++ b/tracing-demos/src/test/java/com/palantir/tracing/TracingDemos.java @@ -145,7 +145,7 @@ public DetachedSpan span() { consumerExecutorService.submit(() -> { for (int i = 0; i < numElem; i++) { QueuedWork queuedWork = work.take(); - try (CloseableSpan processing = queuedWork.span().completeAndStartChild("consume" + queuedWork.name())) { + try (CloseableSpan span = queuedWork.span().completeAndStartChild("consume" + queuedWork.name())) { Thread.sleep(10); } consumeLatch.countDown(); diff --git a/tracing-test-utils/src/test/java/com/palantir/tracing/TestTracingExtensionDemo.java b/tracing-test-utils/src/test/java/com/palantir/tracing/TestTracingExtensionDemo.java index 7340bf6fa..3385a3bc8 100644 --- a/tracing-test-utils/src/test/java/com/palantir/tracing/TestTracingExtensionDemo.java +++ b/tracing-test-utils/src/test/java/com/palantir/tracing/TestTracingExtensionDemo.java @@ -92,7 +92,7 @@ void handles_async_spans() throws Exception { DetachedSpan detachedSpan = DetachedSpan.start("task-queue-time" + i); executorService.submit(() -> { - try (CloseableSpan closeableSpan = detachedSpan.completeAndStartChild("do-work-" + i)){ + try (CloseableSpan closeableSpan = detachedSpan.completeAndStartChild("do-work-" + i)) { prod_code(); countDownLatch.countDown(); } catch (InterruptedException e) { diff --git a/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java b/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java index a2eb9e76b..ffaff911e 100644 --- a/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java +++ b/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java @@ -64,9 +64,9 @@ default CloseableSpan childSpan(String operationName) { @MustBeClosed @SuppressWarnings("MustBeClosedChecker") default CloseableSpan completeAndStartChild(String operationName, SpanType type) { - CloseableSpan closeableTracerTODO = childSpan(operationName, type); + CloseableSpan child = childSpan(operationName, type); complete(); - return closeableTracerTODO; + return child; } @MustBeClosed diff --git a/tracing/src/main/java/com/palantir/tracing/Tracer.java b/tracing/src/main/java/com/palantir/tracing/Tracer.java index a55f8a3b6..65a9789f3 100644 --- a/tracing/src/main/java/com/palantir/tracing/Tracer.java +++ b/tracing/src/main/java/com/palantir/tracing/Tracer.java @@ -20,6 +20,7 @@ import static com.palantir.logsafe.Preconditions.checkNotNull; import static com.palantir.logsafe.Preconditions.checkState; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Strings; import com.google.errorprone.annotations.CheckReturnValue; import com.google.errorprone.annotations.MustBeClosed; @@ -362,7 +363,7 @@ public static Optional completeSpan(Map metadata) { return maybeSpan; } - static void notifyObservers(Span span) { + private static void notifyObservers(Span span) { compositeObserver.accept(span); } @@ -374,7 +375,7 @@ private static Optional popCurrentSpan(Trace trace) { return span; } - static Span toSpan(OpenSpan openSpan, Map metadata, String traceId) { + private static Span toSpan(OpenSpan openSpan, Map metadata, String traceId) { return Span.builder() .traceId(traceId) .spanId(openSpan.getSpanId()) @@ -507,7 +508,7 @@ private static void setTraceSampledMdcIfObservable(boolean observable) { } } - static Trace getOrCreateCurrentTrace() { + private static Trace getOrCreateCurrentTrace() { Trace trace = currentTrace.get(); if (trace == null) { trace = createTrace(Observability.UNDECIDED, Tracers.randomId()); @@ -516,6 +517,7 @@ static Trace getOrCreateCurrentTrace() { return trace; } + @VisibleForTesting static void clearCurrentTrace() { currentTrace.remove(); MDC.remove(Tracers.TRACE_ID_KEY); From fc93f5c290c2f915e574cf2373405bf31f09966d Mon Sep 17 00:00:00 2001 From: Dan Fox Date: Fri, 30 Aug 2019 17:52:29 +0100 Subject: [PATCH 23/24] javadoc --- .../com/palantir/tracing/CloseableTracer.java | 2 ++ .../java/com/palantir/tracing/DetachedSpan.java | 16 +++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/tracing/src/main/java/com/palantir/tracing/CloseableTracer.java b/tracing/src/main/java/com/palantir/tracing/CloseableTracer.java index c32cd3710..a81174466 100644 --- a/tracing/src/main/java/com/palantir/tracing/CloseableTracer.java +++ b/tracing/src/main/java/com/palantir/tracing/CloseableTracer.java @@ -42,6 +42,8 @@ public static CloseableTracer startSpan(String operation) { /** * Opens a new span for this thread's call trace with the provided {@link SpanType}, * labeled with the provided operation. + * + * If you need to a span that may complete on another thread, use {@link DetachedSpan#start} instead. */ public static CloseableTracer startSpan(String operation, SpanType spanType) { Tracer.fastStartSpan(operation, spanType); diff --git a/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java b/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java index ffaff911e..db41882cf 100644 --- a/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java +++ b/tracing/src/main/java/com/palantir/tracing/DetachedSpan.java @@ -20,16 +20,18 @@ import com.palantir.tracing.api.SpanType; import javax.annotation.CheckReturnValue; -/** - * Span operation which is not bound to thread state, and can measure operations which - * themselves aren't bound to individual threads. - */ +/** Span which is not bound to thread state, and can be completed on any other thread. */ public interface DetachedSpan { /** - * Like {@link Tracer#startSpan(String, SpanType)}, but does not set or modify tracing thread state. - * Creates a detached child span using the callers current span as a parent, if it is present, otherwise - * creates a detached root span with a new traceId. + * Marks the beginning of a span, which you can {@link #complete} on any other thread. Further work on this + * originating thread will not automatically parented to this span (because it does not modify any thread local + * tracing state). If you don't need this cross-thread functionality, use {@link CloseableTracer}. + * + * On the destination thread, you can call {@link #completeAndStartChild} to mark the end of this + * {@link DetachedSpan} and continue tracing regular thread-local work. Alternatively, if you want to keep this + * DetachedSpan open, you can instrument 'sub tasks' using {@link #childSpan} or {@link #childDetachedSpan}, + * but must remember to call {@link #complete} eventually. */ @CheckReturnValue static DetachedSpan start(String operation, SpanType type) { From 572cc58ad4fe6fac8fec0f143de29b964bdb104b Mon Sep 17 00:00:00 2001 From: iamdanfox Date: Fri, 30 Aug 2019 17:56:33 +0100 Subject: [PATCH 24/24] Delete pr-247.v2.yml --- changelog/@unreleased/pr-247.v2.yml | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 changelog/@unreleased/pr-247.v2.yml diff --git a/changelog/@unreleased/pr-247.v2.yml b/changelog/@unreleased/pr-247.v2.yml deleted file mode 100644 index 3689336d3..000000000 --- a/changelog/@unreleased/pr-247.v2.yml +++ /dev/null @@ -1,6 +0,0 @@ -type: improvement -improvement: - description: A new `CrossThreadSpan` class allows measuring operations that begin - on one thread and end on another. - links: - - https://github.com/palantir/tracing-java/pull/247