diff --git a/api/src/main/java/io/opentelemetry/api/trace/EndSpanOptions.java b/api/src/main/java/io/opentelemetry/api/trace/EndSpanOptions.java deleted file mode 100644 index c6b030b275..0000000000 --- a/api/src/main/java/io/opentelemetry/api/trace/EndSpanOptions.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.api.trace; - -import com.google.auto.value.AutoValue; -import javax.annotation.concurrent.Immutable; - -/** - * A class that enables overriding the default values used when ending a {@link Span}. Allows - * overriding the endTimestamp. - */ -@Immutable -@AutoValue -public abstract class EndSpanOptions { - private static final EndSpanOptions DEFAULT = builder().build(); - - /** The default {@code EndSpanOptions}. */ - static EndSpanOptions getDefault() { - return DEFAULT; - } - - /** - * Returns a new {@link Builder} with default options. - * - * @return a new {@code Builder} with default options. - */ - public static Builder builder() { - return new AutoValue_EndSpanOptions.Builder().setEndTimestamp(0); - } - - /** - * Returns the end timestamp. - * - *
Important this is NOT equivalent with System.nanoTime(). - * - * @return the end timestamp. - */ - public abstract long getEndTimestamp(); - - /** Builder class for {@link EndSpanOptions}. */ - @AutoValue.Builder - public abstract static class Builder { - /** - * Sets the end timestamp for the {@link Span}. - * - *
Important this is NOT equivalent with System.nanoTime(). - * - * @param endTimestamp the end timestamp in nanos since epoch. - * @return this. - */ - public abstract Builder setEndTimestamp(long endTimestamp); - - /** - * Builds and returns a {@code EndSpanOptions} with the desired settings. - * - * @return a {@code EndSpanOptions} with the desired settings. - */ - public abstract EndSpanOptions build(); - - Builder() {} - } - - EndSpanOptions() {} -} diff --git a/api/src/main/java/io/opentelemetry/api/trace/PropagatedSpan.java b/api/src/main/java/io/opentelemetry/api/trace/PropagatedSpan.java index 26f624e910..a69540dd44 100644 --- a/api/src/main/java/io/opentelemetry/api/trace/PropagatedSpan.java +++ b/api/src/main/java/io/opentelemetry/api/trace/PropagatedSpan.java @@ -114,7 +114,7 @@ final class PropagatedSpan implements Span { public void end() {} @Override - public void end(EndSpanOptions endOptions) {} + public void end(long timestamp) {} @Override public SpanContext getSpanContext() { diff --git a/api/src/main/java/io/opentelemetry/api/trace/Span.java b/api/src/main/java/io/opentelemetry/api/trace/Span.java index d276b2e4c3..1bc5aa1e9c 100644 --- a/api/src/main/java/io/opentelemetry/api/trace/Span.java +++ b/api/src/main/java/io/opentelemetry/api/trace/Span.java @@ -304,7 +304,7 @@ public interface Span extends ImplicitContextKeyed { void end(); /** - * Marks the end of {@code Span} execution with the specified {@link EndSpanOptions}. + * Marks the end of {@code Span} execution with the specified timestamp. * *
Only the timing of the first end call for a given {@code Span} will be recorded, and * implementations are free to ignore all further calls. @@ -312,9 +312,10 @@ public interface Span extends ImplicitContextKeyed { *
Use this method for specifying explicit end options, such as end {@code Timestamp}. When no
* explicit values are required, use {@link #end()}.
*
- * @param endOptions the explicit {@link EndSpanOptions} for this {@code Span}.
+ * @param timestamp the explicit timestamp, as nanos from the epoch, for this {@code Span}. {@code
+ * 0} indicates current time should be used.
*/
- void end(EndSpanOptions endOptions);
+ void end(long timestamp);
/**
* Returns the {@code SpanContext} associated with this {@code Span}.
diff --git a/api/src/test/java/io/opentelemetry/api/trace/PropagatedSpanTest.java b/api/src/test/java/io/opentelemetry/api/trace/PropagatedSpanTest.java
index 97b40dcfe2..c6f26c3e5b 100644
--- a/api/src/test/java/io/opentelemetry/api/trace/PropagatedSpanTest.java
+++ b/api/src/test/java/io/opentelemetry/api/trace/PropagatedSpanTest.java
@@ -49,8 +49,7 @@ class PropagatedSpanTest {
span.recordException(new IllegalStateException());
span.recordException(new IllegalStateException(), Attributes.empty());
span.end();
- span.end(EndSpanOptions.getDefault());
- span.end(null);
+ span.end(0);
}
@Test
diff --git a/sdk-extensions/zpages/src/test/java/io/opentelemetry/sdk/extensions/zpages/TracezZPageHandlerTest.java b/sdk-extensions/zpages/src/test/java/io/opentelemetry/sdk/extensions/zpages/TracezZPageHandlerTest.java
index d48ba4a8f2..04e9a2f120 100644
--- a/sdk-extensions/zpages/src/test/java/io/opentelemetry/sdk/extensions/zpages/TracezZPageHandlerTest.java
+++ b/sdk-extensions/zpages/src/test/java/io/opentelemetry/sdk/extensions/zpages/TracezZPageHandlerTest.java
@@ -9,7 +9,6 @@ import static com.google.common.net.UrlEscapers.urlFormParameterEscaper;
import static org.assertj.core.api.Assertions.assertThat;
import com.google.common.collect.ImmutableMap;
-import io.opentelemetry.api.trace.EndSpanOptions;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.StatusCode;
import io.opentelemetry.api.trace.Tracer;
@@ -61,8 +60,7 @@ class TracezZPageHandlerTest {
Span runningSpan = tracer.spanBuilder(RUNNING_SPAN).startSpan();
Span latencySpan = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions = EndSpanOptions.builder().setEndTimestamp(10002L).build();
- latencySpan.end(endOptions);
+ latencySpan.end(10002);
Span errorSpan = tracer.spanBuilder(ERROR_SPAN).startSpan();
errorSpan.setStatus(StatusCode.ERROR);
@@ -145,40 +143,31 @@ class TracezZPageHandlerTest {
OutputStream output = new ByteArrayOutputStream();
// Boundary 0, >1us
Span latencySpanSubtype0 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions0 = EndSpanOptions.builder().setEndTimestamp(1002L).build();
- latencySpanSubtype0.end(endOptions0);
+ latencySpanSubtype0.end(1002);
// Boundary 1, >10us
Span latencySpanSubtype1 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions1 = EndSpanOptions.builder().setEndTimestamp(10002L).build();
- latencySpanSubtype1.end(endOptions1);
+ latencySpanSubtype1.end(10002);
// Boundary 2, >100us
Span latencySpanSubtype2 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions2 = EndSpanOptions.builder().setEndTimestamp(100002L).build();
- latencySpanSubtype2.end(endOptions2);
+ latencySpanSubtype2.end(100002);
// Boundary 3, >1ms
Span latencySpanSubtype3 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions3 = EndSpanOptions.builder().setEndTimestamp(1000002L).build();
- latencySpanSubtype3.end(endOptions3);
+ latencySpanSubtype3.end(1000002);
// Boundary 4, >10ms
Span latencySpanSubtype4 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions4 = EndSpanOptions.builder().setEndTimestamp(10000002L).build();
- latencySpanSubtype4.end(endOptions4);
+ latencySpanSubtype4.end(10000002);
// Boundary 5, >100ms
Span latencySpanSubtype5 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions5 = EndSpanOptions.builder().setEndTimestamp(100000002L).build();
- latencySpanSubtype5.end(endOptions5);
+ latencySpanSubtype5.end(100000002);
// Boundary 6, >1s
Span latencySpanSubtype6 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions6 = EndSpanOptions.builder().setEndTimestamp(1000000002L).build();
- latencySpanSubtype6.end(endOptions6);
+ latencySpanSubtype6.end(1000000002);
// Boundary 7, >10s
Span latencySpanSubtype7 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions7 = EndSpanOptions.builder().setEndTimestamp(10000000002L).build();
- latencySpanSubtype7.end(endOptions7);
+ latencySpanSubtype7.end(10000000002L);
// Boundary 8, >100s
Span latencySpanSubtype8 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions8 = EndSpanOptions.builder().setEndTimestamp(100000000002L).build();
- latencySpanSubtype8.end(endOptions8);
+ latencySpanSubtype8.end(100000000002L);
TracezZPageHandler tracezZPageHandler = new TracezZPageHandler(dataAggregator);
tracezZPageHandler.emitHtml(emptyQueryMap, output);
@@ -217,17 +206,13 @@ class TracezZPageHandlerTest {
OutputStream output = new ByteArrayOutputStream();
// 4 samples in boundary 5, >100ms
Span latencySpan100ms1 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions1 = EndSpanOptions.builder().setEndTimestamp(112931232L).build();
- latencySpan100ms1.end(endOptions1);
+ latencySpan100ms1.end(112931232L);
Span latencySpan100ms2 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions2 = EndSpanOptions.builder().setEndTimestamp(138694322L).build();
- latencySpan100ms2.end(endOptions2);
+ latencySpan100ms2.end(138694322L);
Span latencySpan100ms3 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions3 = EndSpanOptions.builder().setEndTimestamp(154486482L).build();
- latencySpan100ms3.end(endOptions3);
+ latencySpan100ms3.end(154486482L);
Span latencySpan100ms4 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions4 = EndSpanOptions.builder().setEndTimestamp(194892582L).build();
- latencySpan100ms4.end(endOptions4);
+ latencySpan100ms4.end(194892582L);
TracezZPageHandler tracezZPageHandler = new TracezZPageHandler(dataAggregator);
tracezZPageHandler.emitHtml(emptyQueryMap, output);
@@ -286,11 +271,9 @@ class TracezZPageHandlerTest {
void spanDetails_emitLatencySpanDetailsCorrectly() {
OutputStream output = new ByteArrayOutputStream();
Span latencySpan1 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions1 = EndSpanOptions.builder().setEndTimestamp(10002L).build();
- latencySpan1.end(endOptions1);
+ latencySpan1.end(10002);
Span latencySpan2 = tracer.spanBuilder(LATENCY_SPAN).setStartTimestamp(1L).startSpan();
- EndSpanOptions endOptions2 = EndSpanOptions.builder().setEndTimestamp(10002L).build();
- latencySpan2.end(endOptions2);
+ latencySpan2.end(10002);
Map