aboutsummaryrefslogtreecommitdiff
path: root/impl_core/src/main/java/io/opencensus
diff options
context:
space:
mode:
Diffstat (limited to 'impl_core/src/main/java/io/opencensus')
-rw-r--r--impl_core/src/main/java/io/opencensus/implcore/trace/NoRecordEventsSpanImpl.java85
-rw-r--r--impl_core/src/main/java/io/opencensus/implcore/trace/RecordEventsSpanImpl.java (renamed from impl_core/src/main/java/io/opencensus/implcore/trace/SpanImpl.java)116
-rw-r--r--impl_core/src/main/java/io/opencensus/implcore/trace/SpanBuilderImpl.java46
-rw-r--r--impl_core/src/main/java/io/opencensus/implcore/trace/StartEndHandlerImpl.java14
-rw-r--r--impl_core/src/main/java/io/opencensus/implcore/trace/TraceComponentImplBase.java2
-rw-r--r--impl_core/src/main/java/io/opencensus/implcore/trace/TracerImpl.java4
-rw-r--r--impl_core/src/main/java/io/opencensus/implcore/trace/export/InProcessRunningSpanStoreImpl.java18
-rw-r--r--impl_core/src/main/java/io/opencensus/implcore/trace/export/InProcessSampledSpanStoreImpl.java56
-rw-r--r--impl_core/src/main/java/io/opencensus/implcore/trace/export/RunningSpanStoreImpl.java13
-rw-r--r--impl_core/src/main/java/io/opencensus/implcore/trace/export/SampledSpanStoreImpl.java10
-rw-r--r--impl_core/src/main/java/io/opencensus/implcore/trace/export/SpanExporterImpl.java22
11 files changed, 213 insertions, 173 deletions
diff --git a/impl_core/src/main/java/io/opencensus/implcore/trace/NoRecordEventsSpanImpl.java b/impl_core/src/main/java/io/opencensus/implcore/trace/NoRecordEventsSpanImpl.java
new file mode 100644
index 00000000..8a5f8e05
--- /dev/null
+++ b/impl_core/src/main/java/io/opencensus/implcore/trace/NoRecordEventsSpanImpl.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2018, OpenCensus Authors
+ *
+ * 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 io.opencensus.implcore.trace;
+
+import com.google.common.base.Preconditions;
+import io.opencensus.trace.Annotation;
+import io.opencensus.trace.AttributeValue;
+import io.opencensus.trace.EndSpanOptions;
+import io.opencensus.trace.Link;
+import io.opencensus.trace.Span;
+import io.opencensus.trace.SpanContext;
+import io.opencensus.trace.Status;
+import java.util.EnumSet;
+import java.util.Map;
+
+/** Implementation for the {@link Span} class that does not record trace events. */
+final class NoRecordEventsSpanImpl extends Span {
+
+ private static final EnumSet<Options> NOT_RECORD_EVENTS_SPAN_OPTIONS =
+ EnumSet.noneOf(Span.Options.class);
+
+ static NoRecordEventsSpanImpl create(SpanContext context) {
+ return new NoRecordEventsSpanImpl(context);
+ }
+
+ @Override
+ public void addAnnotation(String description, Map<String, AttributeValue> attributes) {
+ Preconditions.checkNotNull(description, "description");
+ Preconditions.checkNotNull(attributes, "attribute");
+ }
+
+ @Override
+ public void addAnnotation(Annotation annotation) {
+ Preconditions.checkNotNull(annotation, "annotation");
+ }
+
+ @Override
+ public void putAttribute(String key, AttributeValue value) {
+ Preconditions.checkNotNull(key, "key");
+ Preconditions.checkNotNull(value, "value");
+ }
+
+ @Override
+ public void putAttributes(Map<String, AttributeValue> attributes) {
+ Preconditions.checkNotNull(attributes, "attributes");
+ }
+
+ @Override
+ public void addMessageEvent(io.opencensus.trace.MessageEvent messageEvent) {
+ Preconditions.checkNotNull(messageEvent, "messageEvent");
+ }
+
+ @Override
+ public void addLink(Link link) {
+ Preconditions.checkNotNull(link, "link");
+ }
+
+ @Override
+ public void setStatus(Status status) {
+ Preconditions.checkNotNull(status, "status");
+ }
+
+ @Override
+ public void end(EndSpanOptions options) {
+ Preconditions.checkNotNull(options, "options");
+ }
+
+ private NoRecordEventsSpanImpl(SpanContext context) {
+ super(context, NOT_RECORD_EVENTS_SPAN_OPTIONS);
+ }
+}
diff --git a/impl_core/src/main/java/io/opencensus/implcore/trace/SpanImpl.java b/impl_core/src/main/java/io/opencensus/implcore/trace/RecordEventsSpanImpl.java
index 75509a7f..af3545bc 100644
--- a/impl_core/src/main/java/io/opencensus/implcore/trace/SpanImpl.java
+++ b/impl_core/src/main/java/io/opencensus/implcore/trace/RecordEventsSpanImpl.java
@@ -51,11 +51,14 @@ import javax.annotation.concurrent.GuardedBy;
import javax.annotation.concurrent.ThreadSafe;
// TODO(hailongwen): remove the usage of `NetworkEvent` in the future.
-/** Implementation for the {@link Span} class. */
+/** Implementation for the {@link Span} class that records trace events. */
@ThreadSafe
-public final class SpanImpl extends Span implements Element<SpanImpl> {
+public final class RecordEventsSpanImpl extends Span implements Element<RecordEventsSpanImpl> {
private static final Logger logger = Logger.getLogger(Tracer.class.getName());
+ private static final EnumSet<Span.Options> RECORD_EVENTS_SPAN_OPTIONS =
+ EnumSet.of(Span.Options.RECORD_EVENTS);
+
// The parent SpanId of this span. Null if this is a root span.
@Nullable private final SpanId parentSpanId;
// True if the parent is on a different process.
@@ -73,8 +76,7 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
// The time converter used to convert nano time to Timestamp. This is needed because Java has
// millisecond granularity for Timestamp and tracing events are recorded more often.
@Nullable private final TimestampConverter timestampConverter;
- // The start time of the span. Set when the span is created iff the RECORD_EVENTS options is
- // set, otherwise 0.
+ // The start time of the span.
private final long startNanoTime;
// Set of recorded attributes. DO NOT CALL any other method that changes the ordering of events.
@GuardedBy("this")
@@ -87,18 +89,16 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
// List of recorded network events.
@GuardedBy("this")
@Nullable
- @SuppressWarnings("deprecation")
- private TraceEvents<EventWithNanoTime<io.opencensus.trace.NetworkEvent>> networkEvents;
+ private TraceEvents<EventWithNanoTime<io.opencensus.trace.MessageEvent>> messageEvents;
// List of recorded links to parent and child spans.
@GuardedBy("this")
@Nullable
private TraceEvents<Link> links;
- // The status of the span. Set when the span is ended iff the RECORD_EVENTS options is set.
+ // The status of the span.
@GuardedBy("this")
@Nullable
private Status status;
- // The end time of the span. Set when the span is ended iff the RECORD_EVENTS options is set,
- // otherwise 0.
+ // The end time of the span.
@GuardedBy("this")
private long endNanoTime;
// True if the span is ended.
@@ -109,14 +109,13 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
private boolean sampleToLocalSpanStore;
// Pointers for the ConcurrentIntrusiveList$Element. Guarded by the ConcurrentIntrusiveList.
- @Nullable private SpanImpl next = null;
- @Nullable private SpanImpl prev = null;
+ @Nullable private RecordEventsSpanImpl next = null;
+ @Nullable private RecordEventsSpanImpl prev = null;
/**
* Creates and starts a span with the given configuration.
*
* @param context supplies the trace_id and span_id for the newly started span.
- * @param options the options for the new span, importantly Options.RECORD_EVENTS.
* @param name the displayed name for the new span.
* @param parentSpanId the span_id of the parent span, or null if the new span is a root span.
* @param hasRemoteParent {@code true} if the parentContext is remote. {@code null} if this is a
@@ -130,9 +129,8 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
* @return a new and started span.
*/
@VisibleForTesting
- public static SpanImpl startSpan(
+ public static RecordEventsSpanImpl startSpan(
SpanContext context,
- @Nullable EnumSet<Options> options,
String name,
@Nullable Kind kind,
@Nullable SpanId parentSpanId,
@@ -141,10 +139,9 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
StartEndHandler startEndHandler,
@Nullable TimestampConverter timestampConverter,
Clock clock) {
- SpanImpl span =
- new SpanImpl(
+ RecordEventsSpanImpl span =
+ new RecordEventsSpanImpl(
context,
- options,
name,
kind,
parentSpanId,
@@ -155,9 +152,7 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
clock);
// Call onStart here instead of calling in the constructor to make sure the span is completely
// initialized.
- if (span.getOptions().contains(Options.RECORD_EVENTS)) {
- startEndHandler.onStart(span);
- }
+ startEndHandler.onStart(span);
return span;
}
@@ -244,9 +239,6 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
* @throws IllegalStateException if the Span doesn't have RECORD_EVENTS option.
*/
public SpanData toSpanData() {
- checkState(
- getOptions().contains(Options.RECORD_EVENTS),
- "Getting SpanData for a Span without RECORD_EVENTS option.");
synchronized (this) {
SpanData.Attributes attributesSpanData =
attributes == null
@@ -254,8 +246,7 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
: SpanData.Attributes.create(attributes, attributes.getNumberOfDroppedAttributes());
SpanData.TimedEvents<Annotation> annotationsSpanData =
createTimedEvents(getInitializedAnnotations(), timestampConverter);
- @SuppressWarnings("deprecation")
- SpanData.TimedEvents<io.opencensus.trace.NetworkEvent> networkEventsSpanData =
+ SpanData.TimedEvents<io.opencensus.trace.MessageEvent> messageEventsSpanData =
createTimedEvents(getInitializedNetworkEvents(), timestampConverter);
SpanData.Links linksSpanData =
links == null
@@ -271,7 +262,7 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
CheckerFrameworkUtils.castNonNull(timestampConverter).convertNanoTime(startNanoTime),
attributesSpanData,
annotationsSpanData,
- networkEventsSpanData,
+ messageEventsSpanData,
linksSpanData,
null, // Not supported yet.
hasBeenEnded ? getStatusWithDefault() : null,
@@ -285,9 +276,6 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
public void putAttribute(String key, AttributeValue value) {
Preconditions.checkNotNull(key, "key");
Preconditions.checkNotNull(value, "value");
- if (!getOptions().contains(Options.RECORD_EVENTS)) {
- return;
- }
synchronized (this) {
if (hasBeenEnded) {
logger.log(Level.FINE, "Calling putAttributes() on an ended Span.");
@@ -300,9 +288,6 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
@Override
public void putAttributes(Map<String, AttributeValue> attributes) {
Preconditions.checkNotNull(attributes, "attributes");
- if (!getOptions().contains(Options.RECORD_EVENTS)) {
- return;
- }
synchronized (this) {
if (hasBeenEnded) {
logger.log(Level.FINE, "Calling putAttributes() on an ended Span.");
@@ -316,9 +301,6 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
public void addAnnotation(String description, Map<String, AttributeValue> attributes) {
Preconditions.checkNotNull(description, "description");
Preconditions.checkNotNull(attributes, "attribute");
- if (!getOptions().contains(Options.RECORD_EVENTS)) {
- return;
- }
synchronized (this) {
if (hasBeenEnded) {
logger.log(Level.FINE, "Calling addAnnotation() on an ended Span.");
@@ -335,9 +317,6 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
@Override
public void addAnnotation(Annotation annotation) {
Preconditions.checkNotNull(annotation, "annotation");
- if (!getOptions().contains(Options.RECORD_EVENTS)) {
- return;
- }
synchronized (this) {
if (hasBeenEnded) {
logger.log(Level.FINE, "Calling addAnnotation() on an ended Span.");
@@ -349,11 +328,8 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
}
@Override
- @SuppressWarnings("deprecation")
- public void addNetworkEvent(io.opencensus.trace.NetworkEvent networkEvent) {
- if (!getOptions().contains(Options.RECORD_EVENTS)) {
- return;
- }
+ public void addMessageEvent(io.opencensus.trace.MessageEvent messageEvent) {
+ Preconditions.checkNotNull(messageEvent, "messageEvent");
synchronized (this) {
if (hasBeenEnded) {
logger.log(Level.FINE, "Calling addNetworkEvent() on an ended Span.");
@@ -361,17 +337,14 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
}
getInitializedNetworkEvents()
.addEvent(
- new EventWithNanoTime<io.opencensus.trace.NetworkEvent>(
- clock.nowNanos(), checkNotNull(networkEvent, "networkEvent")));
+ new EventWithNanoTime<io.opencensus.trace.MessageEvent>(
+ clock.nowNanos(), checkNotNull(messageEvent, "networkEvent")));
}
}
@Override
public void addLink(Link link) {
Preconditions.checkNotNull(link, "link");
- if (!getOptions().contains(Options.RECORD_EVENTS)) {
- return;
- }
synchronized (this) {
if (hasBeenEnded) {
logger.log(Level.FINE, "Calling addLink() on an ended Span.");
@@ -384,9 +357,6 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
@Override
public void setStatus(Status status) {
Preconditions.checkNotNull(status, "status");
- if (!getOptions().contains(Options.RECORD_EVENTS)) {
- return;
- }
synchronized (this) {
if (hasBeenEnded) {
logger.log(Level.FINE, "Calling setStatus() on an ended Span.");
@@ -399,9 +369,6 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
@Override
public void end(EndSpanOptions options) {
Preconditions.checkNotNull(options, "options");
- if (!getOptions().contains(Options.RECORD_EVENTS)) {
- return;
- }
synchronized (this) {
if (hasBeenEnded) {
logger.log(Level.FINE, "Calling end() on an ended Span.");
@@ -435,15 +402,14 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
}
@GuardedBy("this")
- @SuppressWarnings("deprecation")
- private TraceEvents<EventWithNanoTime<io.opencensus.trace.NetworkEvent>>
+ private TraceEvents<EventWithNanoTime<io.opencensus.trace.MessageEvent>>
getInitializedNetworkEvents() {
- if (networkEvents == null) {
- networkEvents =
- new TraceEvents<EventWithNanoTime<io.opencensus.trace.NetworkEvent>>(
- traceParams.getMaxNumberOfNetworkEvents());
+ if (messageEvents == null) {
+ messageEvents =
+ new TraceEvents<EventWithNanoTime<io.opencensus.trace.MessageEvent>>(
+ traceParams.getMaxNumberOfMessageEvents());
}
- return networkEvents;
+ return messageEvents;
}
@GuardedBy("this")
@@ -474,23 +440,23 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
@Override
@Nullable
- public SpanImpl getNext() {
+ public RecordEventsSpanImpl getNext() {
return next;
}
@Override
- public void setNext(@Nullable SpanImpl element) {
+ public void setNext(@Nullable RecordEventsSpanImpl element) {
next = element;
}
@Override
@Nullable
- public SpanImpl getPrev() {
+ public RecordEventsSpanImpl getPrev() {
return prev;
}
@Override
- public void setPrev(@Nullable SpanImpl element) {
+ public void setPrev(@Nullable RecordEventsSpanImpl element) {
prev = element;
}
@@ -505,9 +471,9 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
* be thread-safe.
*/
public interface StartEndHandler {
- void onStart(SpanImpl span);
+ void onStart(RecordEventsSpanImpl span);
- void onEnd(SpanImpl span);
+ void onEnd(RecordEventsSpanImpl span);
}
// A map implementation with a fixed capacity that drops events when the map gets full. Eviction
@@ -586,9 +552,8 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
}
}
- private SpanImpl(
+ private RecordEventsSpanImpl(
SpanContext context,
- @Nullable EnumSet<Options> options,
String name,
@Nullable Kind kind,
@Nullable SpanId parentSpanId,
@@ -597,7 +562,7 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
StartEndHandler startEndHandler,
@Nullable TimestampConverter timestampConverter,
Clock clock) {
- super(context, options);
+ super(context, RECORD_EVENTS_SPAN_OPTIONS);
this.parentSpanId = parentSpanId;
this.hasRemoteParent = hasRemoteParent;
this.name = name;
@@ -607,13 +572,8 @@ public final class SpanImpl extends Span implements Element<SpanImpl> {
this.clock = clock;
this.hasBeenEnded = false;
this.sampleToLocalSpanStore = false;
- if (options != null && options.contains(Options.RECORD_EVENTS)) {
- this.timestampConverter =
- timestampConverter != null ? timestampConverter : TimestampConverter.now(clock);
- startNanoTime = clock.nowNanos();
- } else {
- this.startNanoTime = 0;
- this.timestampConverter = timestampConverter;
- }
+ this.timestampConverter =
+ timestampConverter != null ? timestampConverter : TimestampConverter.now(clock);
+ startNanoTime = clock.nowNanos();
}
}
diff --git a/impl_core/src/main/java/io/opencensus/implcore/trace/SpanBuilderImpl.java b/impl_core/src/main/java/io/opencensus/implcore/trace/SpanBuilderImpl.java
index 3ea0ce33..5565e9de 100644
--- a/impl_core/src/main/java/io/opencensus/implcore/trace/SpanBuilderImpl.java
+++ b/impl_core/src/main/java/io/opencensus/implcore/trace/SpanBuilderImpl.java
@@ -35,7 +35,6 @@ import io.opencensus.trace.Tracestate;
import io.opencensus.trace.config.TraceConfig;
import io.opencensus.trace.config.TraceParams;
import java.util.Collections;
-import java.util.EnumSet;
import java.util.List;
import java.util.Random;
import javax.annotation.Nullable;
@@ -49,11 +48,6 @@ final class SpanBuilderImpl extends SpanBuilder {
private static final TraceOptions NOT_SAMPLED_TRACE_OPTIONS =
TraceOptions.builder().setIsSampled(false).build();
- private static final EnumSet<Span.Options> NOT_RECORD_EVENTS_SPAN_OPTIONS =
- EnumSet.noneOf(Span.Options.class);
- private static final EnumSet<Span.Options> RECORD_EVENTS_SPAN_OPTIONS =
- EnumSet.of(Span.Options.RECORD_EVENTS);
-
private final Options options;
private final String name;
@Nullable private final Span parent;
@@ -63,7 +57,7 @@ final class SpanBuilderImpl extends SpanBuilder {
@Nullable private Boolean recordEvents;
@Nullable private Kind kind;
- private SpanImpl startSpanInternal(
+ private Span startSpanInternal(
@Nullable SpanContext parent,
@Nullable Boolean hasRemoteParent,
String name,
@@ -102,22 +96,20 @@ final class SpanBuilderImpl extends SpanBuilder {
activeTraceParams)
? SAMPLED_TRACE_OPTIONS
: NOT_SAMPLED_TRACE_OPTIONS;
- EnumSet<Span.Options> spanOptions =
+ Span span =
(traceOptions.isSampled() || Boolean.TRUE.equals(recordEvents))
- ? RECORD_EVENTS_SPAN_OPTIONS
- : NOT_RECORD_EVENTS_SPAN_OPTIONS;
- SpanImpl span =
- SpanImpl.startSpan(
- SpanContext.create(traceId, spanId, traceOptions, tracestate),
- spanOptions,
- name,
- kind,
- parentSpanId,
- hasRemoteParent,
- activeTraceParams,
- options.startEndHandler,
- timestampConverter,
- options.clock);
+ ? RecordEventsSpanImpl.startSpan(
+ SpanContext.create(traceId, spanId, traceOptions, tracestate),
+ name,
+ kind,
+ parentSpanId,
+ hasRemoteParent,
+ activeTraceParams,
+ options.startEndHandler,
+ timestampConverter,
+ options.clock)
+ : NoRecordEventsSpanImpl.create(
+ SpanContext.create(traceId, spanId, traceOptions, tracestate));
linkSpans(span, parentLinks);
return span;
}
@@ -186,7 +178,7 @@ final class SpanBuilderImpl extends SpanBuilder {
}
@Override
- public SpanImpl startSpan() {
+ public Span startSpan() {
SpanContext parentContext = remoteParentSpanContext;
Boolean hasRemoteParent = Boolean.TRUE;
TimestampConverter timestampConverter = null;
@@ -199,8 +191,8 @@ final class SpanBuilderImpl extends SpanBuilder {
parentContext = parent.getContext();
// Pass the timestamp converter from the parent to ensure that the recorded events are in
// the right order. Implementation uses System.nanoTime() which is monotonically increasing.
- if (parent instanceof SpanImpl) {
- timestampConverter = ((SpanImpl) parent).getTimestampConverter();
+ if (parent instanceof RecordEventsSpanImpl) {
+ timestampConverter = ((RecordEventsSpanImpl) parent).getTimestampConverter();
}
} else {
hasRemoteParent = null;
@@ -219,13 +211,13 @@ final class SpanBuilderImpl extends SpanBuilder {
static final class Options {
private final RandomHandler randomHandler;
- private final SpanImpl.StartEndHandler startEndHandler;
+ private final RecordEventsSpanImpl.StartEndHandler startEndHandler;
private final Clock clock;
private final TraceConfig traceConfig;
Options(
RandomHandler randomHandler,
- SpanImpl.StartEndHandler startEndHandler,
+ RecordEventsSpanImpl.StartEndHandler startEndHandler,
Clock clock,
TraceConfig traceConfig) {
this.randomHandler = checkNotNull(randomHandler, "randomHandler");
diff --git a/impl_core/src/main/java/io/opencensus/implcore/trace/StartEndHandlerImpl.java b/impl_core/src/main/java/io/opencensus/implcore/trace/StartEndHandlerImpl.java
index e22a86bd..6adaa200 100644
--- a/impl_core/src/main/java/io/opencensus/implcore/trace/StartEndHandlerImpl.java
+++ b/impl_core/src/main/java/io/opencensus/implcore/trace/StartEndHandlerImpl.java
@@ -17,7 +17,7 @@
package io.opencensus.implcore.trace;
import io.opencensus.implcore.internal.EventQueue;
-import io.opencensus.implcore.trace.SpanImpl.StartEndHandler;
+import io.opencensus.implcore.trace.RecordEventsSpanImpl.StartEndHandler;
import io.opencensus.implcore.trace.export.RunningSpanStoreImpl;
import io.opencensus.implcore.trace.export.SampledSpanStoreImpl;
import io.opencensus.implcore.trace.export.SpanExporterImpl;
@@ -61,14 +61,14 @@ public final class StartEndHandlerImpl implements StartEndHandler {
}
@Override
- public void onStart(SpanImpl span) {
+ public void onStart(RecordEventsSpanImpl span) {
if (span.getOptions().contains(Options.RECORD_EVENTS) && enqueueEventForNonSampledSpans) {
eventQueue.enqueue(new SpanStartEvent(span, runningSpanStore));
}
}
@Override
- public void onEnd(SpanImpl span) {
+ public void onEnd(RecordEventsSpanImpl span) {
if ((span.getOptions().contains(Options.RECORD_EVENTS) && enqueueEventForNonSampledSpans)
|| span.getContext().getTraceOptions().isSampled()) {
eventQueue.enqueue(new SpanEndEvent(span, spanExporter, runningSpanStore, sampledSpanStore));
@@ -77,10 +77,10 @@ public final class StartEndHandlerImpl implements StartEndHandler {
// An EventQueue entry that records the start of the span event.
private static final class SpanStartEvent implements EventQueue.Entry {
- private final SpanImpl span;
+ private final RecordEventsSpanImpl span;
@Nullable private final RunningSpanStoreImpl activeSpansExporter;
- SpanStartEvent(SpanImpl span, @Nullable RunningSpanStoreImpl activeSpansExporter) {
+ SpanStartEvent(RecordEventsSpanImpl span, @Nullable RunningSpanStoreImpl activeSpansExporter) {
this.span = span;
this.activeSpansExporter = activeSpansExporter;
}
@@ -95,13 +95,13 @@ public final class StartEndHandlerImpl implements StartEndHandler {
// An EventQueue entry that records the end of the span event.
private static final class SpanEndEvent implements EventQueue.Entry {
- private final SpanImpl span;
+ private final RecordEventsSpanImpl span;
@Nullable private final RunningSpanStoreImpl runningSpanStore;
private final SpanExporterImpl spanExporter;
@Nullable private final SampledSpanStoreImpl sampledSpanStore;
SpanEndEvent(
- SpanImpl span,
+ RecordEventsSpanImpl span,
SpanExporterImpl spanExporter,
@Nullable RunningSpanStoreImpl runningSpanStore,
@Nullable SampledSpanStoreImpl sampledSpanStore) {
diff --git a/impl_core/src/main/java/io/opencensus/implcore/trace/TraceComponentImplBase.java b/impl_core/src/main/java/io/opencensus/implcore/trace/TraceComponentImplBase.java
index f4c5ef76..c1432432 100644
--- a/impl_core/src/main/java/io/opencensus/implcore/trace/TraceComponentImplBase.java
+++ b/impl_core/src/main/java/io/opencensus/implcore/trace/TraceComponentImplBase.java
@@ -19,7 +19,7 @@ package io.opencensus.implcore.trace;
import io.opencensus.common.Clock;
import io.opencensus.implcore.internal.EventQueue;
import io.opencensus.implcore.internal.SimpleEventQueue;
-import io.opencensus.implcore.trace.SpanImpl.StartEndHandler;
+import io.opencensus.implcore.trace.RecordEventsSpanImpl.StartEndHandler;
import io.opencensus.implcore.trace.config.TraceConfigImpl;
import io.opencensus.implcore.trace.export.ExportComponentImpl;
import io.opencensus.implcore.trace.internal.RandomHandler;
diff --git a/impl_core/src/main/java/io/opencensus/implcore/trace/TracerImpl.java b/impl_core/src/main/java/io/opencensus/implcore/trace/TracerImpl.java
index fcf30ff0..48df8055 100644
--- a/impl_core/src/main/java/io/opencensus/implcore/trace/TracerImpl.java
+++ b/impl_core/src/main/java/io/opencensus/implcore/trace/TracerImpl.java
@@ -29,9 +29,9 @@ import javax.annotation.Nullable;
public final class TracerImpl extends Tracer {
private final SpanBuilderImpl.Options spanBuilderOptions;
- public TracerImpl(
+ TracerImpl(
RandomHandler randomHandler,
- SpanImpl.StartEndHandler startEndHandler,
+ RecordEventsSpanImpl.StartEndHandler startEndHandler,
Clock clock,
TraceConfig traceConfig) {
spanBuilderOptions =
diff --git a/impl_core/src/main/java/io/opencensus/implcore/trace/export/InProcessRunningSpanStoreImpl.java b/impl_core/src/main/java/io/opencensus/implcore/trace/export/InProcessRunningSpanStoreImpl.java
index 3d8fb9ae..f7aeac71 100644
--- a/impl_core/src/main/java/io/opencensus/implcore/trace/export/InProcessRunningSpanStoreImpl.java
+++ b/impl_core/src/main/java/io/opencensus/implcore/trace/export/InProcessRunningSpanStoreImpl.java
@@ -16,7 +16,7 @@
package io.opencensus.implcore.trace.export;
-import io.opencensus.implcore.trace.SpanImpl;
+import io.opencensus.implcore.trace.RecordEventsSpanImpl;
import io.opencensus.implcore.trace.internal.ConcurrentIntrusiveList;
import io.opencensus.trace.export.RunningSpanStore;
import io.opencensus.trace.export.SpanData;
@@ -30,27 +30,27 @@ import javax.annotation.concurrent.ThreadSafe;
/** In-process implementation of the {@link RunningSpanStore}. */
@ThreadSafe
public final class InProcessRunningSpanStoreImpl extends RunningSpanStoreImpl {
- private final ConcurrentIntrusiveList<SpanImpl> runningSpans;
+ private final ConcurrentIntrusiveList<RecordEventsSpanImpl> runningSpans;
public InProcessRunningSpanStoreImpl() {
- runningSpans = new ConcurrentIntrusiveList<SpanImpl>();
+ runningSpans = new ConcurrentIntrusiveList<RecordEventsSpanImpl>();
}
@Override
- public void onStart(SpanImpl span) {
+ public void onStart(RecordEventsSpanImpl span) {
runningSpans.addElement(span);
}
@Override
- public void onEnd(SpanImpl span) {
+ public void onEnd(RecordEventsSpanImpl span) {
runningSpans.removeElement(span);
}
@Override
public Summary getSummary() {
- Collection<SpanImpl> allRunningSpans = runningSpans.getAll();
+ Collection<RecordEventsSpanImpl> allRunningSpans = runningSpans.getAll();
Map<String, Integer> numSpansPerName = new HashMap<String, Integer>();
- for (SpanImpl span : allRunningSpans) {
+ for (RecordEventsSpanImpl span : allRunningSpans) {
Integer prevValue = numSpansPerName.get(span.getName());
numSpansPerName.put(span.getName(), prevValue != null ? prevValue + 1 : 1);
}
@@ -64,11 +64,11 @@ public final class InProcessRunningSpanStoreImpl extends RunningSpanStoreImpl {
@Override
public Collection<SpanData> getRunningSpans(Filter filter) {
- Collection<SpanImpl> allRunningSpans = runningSpans.getAll();
+ Collection<RecordEventsSpanImpl> allRunningSpans = runningSpans.getAll();
int maxSpansToReturn =
filter.getMaxSpansToReturn() == 0 ? allRunningSpans.size() : filter.getMaxSpansToReturn();
List<SpanData> ret = new ArrayList<SpanData>(maxSpansToReturn);
- for (SpanImpl span : allRunningSpans) {
+ for (RecordEventsSpanImpl span : allRunningSpans) {
if (ret.size() == maxSpansToReturn) {
break;
}
diff --git a/impl_core/src/main/java/io/opencensus/implcore/trace/export/InProcessSampledSpanStoreImpl.java b/impl_core/src/main/java/io/opencensus/implcore/trace/export/InProcessSampledSpanStoreImpl.java
index fe0132d8..0d8e493b 100644
--- a/impl_core/src/main/java/io/opencensus/implcore/trace/export/InProcessSampledSpanStoreImpl.java
+++ b/impl_core/src/main/java/io/opencensus/implcore/trace/export/InProcessSampledSpanStoreImpl.java
@@ -18,7 +18,7 @@ package io.opencensus.implcore.trace.export;
import com.google.common.collect.EvictingQueue;
import io.opencensus.implcore.internal.EventQueue;
-import io.opencensus.implcore.trace.SpanImpl;
+import io.opencensus.implcore.trace.RecordEventsSpanImpl;
import io.opencensus.trace.Status;
import io.opencensus.trace.Status.CanonicalCode;
import io.opencensus.trace.export.SampledSpanStore;
@@ -59,8 +59,8 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
private static final class Bucket {
- private final EvictingQueue<SpanImpl> sampledSpansQueue;
- private final EvictingQueue<SpanImpl> notSampledSpansQueue;
+ private final EvictingQueue<RecordEventsSpanImpl> sampledSpansQueue;
+ private final EvictingQueue<RecordEventsSpanImpl> notSampledSpansQueue;
private long lastSampledNanoTime;
private long lastNotSampledNanoTime;
@@ -69,7 +69,7 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
notSampledSpansQueue = EvictingQueue.create(numSamples);
}
- private void considerForSampling(SpanImpl span) {
+ private void considerForSampling(RecordEventsSpanImpl span) {
long spanEndNanoTime = span.getEndNanoTime();
if (span.getContext().getTraceOptions().isSampled()) {
// Need to compare by doing the subtraction all the time because in case of an overflow,
@@ -90,14 +90,16 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
}
}
- private void getSamples(int maxSpansToReturn, List<SpanImpl> output) {
+ private void getSamples(int maxSpansToReturn, List<RecordEventsSpanImpl> output) {
getSamples(maxSpansToReturn, output, sampledSpansQueue);
getSamples(maxSpansToReturn, output, notSampledSpansQueue);
}
private static void getSamples(
- int maxSpansToReturn, List<SpanImpl> output, EvictingQueue<SpanImpl> queue) {
- for (SpanImpl span : queue) {
+ int maxSpansToReturn,
+ List<RecordEventsSpanImpl> output,
+ EvictingQueue<RecordEventsSpanImpl> queue) {
+ for (RecordEventsSpanImpl span : queue) {
if (output.size() >= maxSpansToReturn) {
break;
}
@@ -106,7 +108,10 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
}
private void getSamplesFilteredByLatency(
- long latencyLowerNs, long latencyUpperNs, int maxSpansToReturn, List<SpanImpl> output) {
+ long latencyLowerNs,
+ long latencyUpperNs,
+ int maxSpansToReturn,
+ List<RecordEventsSpanImpl> output) {
getSamplesFilteredByLatency(
latencyLowerNs, latencyUpperNs, maxSpansToReturn, output, sampledSpansQueue);
getSamplesFilteredByLatency(
@@ -117,9 +122,9 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
long latencyLowerNs,
long latencyUpperNs,
int maxSpansToReturn,
- List<SpanImpl> output,
- EvictingQueue<SpanImpl> queue) {
- for (SpanImpl span : queue) {
+ List<RecordEventsSpanImpl> output,
+ EvictingQueue<RecordEventsSpanImpl> queue) {
+ for (RecordEventsSpanImpl span : queue) {
if (output.size() >= maxSpansToReturn) {
break;
}
@@ -173,7 +178,7 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
return errorBuckets[code.value() - 1];
}
- private void considerForSampling(SpanImpl span) {
+ private void considerForSampling(RecordEventsSpanImpl span) {
Status status = span.getStatus();
// Null status means running Span, this should not happen in production, but the library
// should not crash because of this.
@@ -208,8 +213,10 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
return errorBucketSummaries;
}
- private List<SpanImpl> getErrorSamples(@Nullable CanonicalCode code, int maxSpansToReturn) {
- ArrayList<SpanImpl> output = new ArrayList<SpanImpl>(maxSpansToReturn);
+ private List<RecordEventsSpanImpl> getErrorSamples(
+ @Nullable CanonicalCode code, int maxSpansToReturn) {
+ ArrayList<RecordEventsSpanImpl> output =
+ new ArrayList<RecordEventsSpanImpl>(maxSpansToReturn);
if (code != null) {
getErrorBucket(code).getSamples(maxSpansToReturn, output);
} else {
@@ -220,9 +227,10 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
return output;
}
- private List<SpanImpl> getLatencySamples(
+ private List<RecordEventsSpanImpl> getLatencySamples(
long latencyLowerNs, long latencyUpperNs, int maxSpansToReturn) {
- ArrayList<SpanImpl> output = new ArrayList<SpanImpl>(maxSpansToReturn);
+ ArrayList<RecordEventsSpanImpl> output =
+ new ArrayList<RecordEventsSpanImpl>(maxSpansToReturn);
for (int i = 0; i < NUM_LATENCY_BUCKETS; i++) {
LatencyBucketBoundaries boundaries = LatencyBucketBoundaries.values()[i];
if (latencyUpperNs >= boundaries.getLatencyLowerNs()
@@ -257,7 +265,7 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
}
@Override
- public void considerForSampling(SpanImpl span) {
+ public void considerForSampling(RecordEventsSpanImpl span) {
synchronized (samples) {
String spanName = span.getName();
if (span.getSampleToLocalSpanStore() && !samples.containsKey(spanName)) {
@@ -346,8 +354,9 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
filter.getMaxSpansToReturn() == 0
? MAX_PER_SPAN_NAME_SAMPLES
: filter.getMaxSpansToReturn();
- List<SpanImpl> spans = Collections.emptyList();
- // Try to not keep the lock to much, do the SpanImpl -> SpanData conversion outside the lock.
+ List<RecordEventsSpanImpl> spans = Collections.emptyList();
+ // Try to not keep the lock to much, do the RecordEventsSpanImpl -> SpanData conversion outside
+ // the lock.
synchronized (samples) {
PerSpanNameSamples perSpanNameSamples = samples.get(filter.getSpanName());
if (perSpanNameSamples != null) {
@@ -355,7 +364,7 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
}
}
List<SpanData> ret = new ArrayList<SpanData>(spans.size());
- for (SpanImpl span : spans) {
+ for (RecordEventsSpanImpl span : spans) {
ret.add(span.toSpanData());
}
return Collections.unmodifiableList(ret);
@@ -367,8 +376,9 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
filter.getMaxSpansToReturn() == 0
? MAX_PER_SPAN_NAME_SAMPLES
: filter.getMaxSpansToReturn();
- List<SpanImpl> spans = Collections.emptyList();
- // Try to not keep the lock to much, do the SpanImpl -> SpanData conversion outside the lock.
+ List<RecordEventsSpanImpl> spans = Collections.emptyList();
+ // Try to not keep the lock to much, do the RecordEventsSpanImpl -> SpanData conversion outside
+ // the lock.
synchronized (samples) {
PerSpanNameSamples perSpanNameSamples = samples.get(filter.getSpanName());
if (perSpanNameSamples != null) {
@@ -378,7 +388,7 @@ public final class InProcessSampledSpanStoreImpl extends SampledSpanStoreImpl {
}
}
List<SpanData> ret = new ArrayList<SpanData>(spans.size());
- for (SpanImpl span : spans) {
+ for (RecordEventsSpanImpl span : spans) {
ret.add(span.toSpanData());
}
return Collections.unmodifiableList(ret);
diff --git a/impl_core/src/main/java/io/opencensus/implcore/trace/export/RunningSpanStoreImpl.java b/impl_core/src/main/java/io/opencensus/implcore/trace/export/RunningSpanStoreImpl.java
index 53147def..962f5b01 100644
--- a/impl_core/src/main/java/io/opencensus/implcore/trace/export/RunningSpanStoreImpl.java
+++ b/impl_core/src/main/java/io/opencensus/implcore/trace/export/RunningSpanStoreImpl.java
@@ -16,11 +16,8 @@
package io.opencensus.implcore.trace.export;
-import io.opencensus.implcore.trace.SpanImpl;
+import io.opencensus.implcore.trace.RecordEventsSpanImpl;
import io.opencensus.trace.export.RunningSpanStore;
-import io.opencensus.trace.export.RunningSpanStore.Filter;
-import io.opencensus.trace.export.RunningSpanStore.PerSpanNameSummary;
-import io.opencensus.trace.export.RunningSpanStore.Summary;
import io.opencensus.trace.export.SpanData;
import java.util.Collection;
import java.util.Collections;
@@ -41,14 +38,14 @@ public abstract class RunningSpanStoreImpl extends RunningSpanStore {
*
* @param span the {@code Span} that started.
*/
- public abstract void onStart(SpanImpl span);
+ public abstract void onStart(RecordEventsSpanImpl span);
/**
* Removes the {@code Span} from the running spans list when the {@code Span} ends.
*
* @param span the {@code Span} that ended.
*/
- public abstract void onEnd(SpanImpl span);
+ public abstract void onEnd(RecordEventsSpanImpl span);
private static final class NoopRunningSpanStoreImpl extends RunningSpanStoreImpl {
@@ -56,10 +53,10 @@ public abstract class RunningSpanStoreImpl extends RunningSpanStore {
RunningSpanStore.Summary.create(Collections.<String, PerSpanNameSummary>emptyMap());
@Override
- public void onStart(SpanImpl span) {}
+ public void onStart(RecordEventsSpanImpl span) {}
@Override
- public void onEnd(SpanImpl span) {}
+ public void onEnd(RecordEventsSpanImpl span) {}
@Override
public Summary getSummary() {
diff --git a/impl_core/src/main/java/io/opencensus/implcore/trace/export/SampledSpanStoreImpl.java b/impl_core/src/main/java/io/opencensus/implcore/trace/export/SampledSpanStoreImpl.java
index 302d5cd3..e67c2f8e 100644
--- a/impl_core/src/main/java/io/opencensus/implcore/trace/export/SampledSpanStoreImpl.java
+++ b/impl_core/src/main/java/io/opencensus/implcore/trace/export/SampledSpanStoreImpl.java
@@ -16,12 +16,8 @@
package io.opencensus.implcore.trace.export;
-import io.opencensus.implcore.trace.SpanImpl;
+import io.opencensus.implcore.trace.RecordEventsSpanImpl;
import io.opencensus.trace.export.SampledSpanStore;
-import io.opencensus.trace.export.SampledSpanStore.ErrorFilter;
-import io.opencensus.trace.export.SampledSpanStore.LatencyFilter;
-import io.opencensus.trace.export.SampledSpanStore.PerSpanNameSummary;
-import io.opencensus.trace.export.SampledSpanStore.Summary;
import io.opencensus.trace.export.SpanData;
import java.util.Collection;
import java.util.Collections;
@@ -43,7 +39,7 @@ public abstract class SampledSpanStoreImpl extends SampledSpanStore {
*
* @param span the span to be consider for storing into the store buckets.
*/
- public abstract void considerForSampling(SpanImpl span);
+ public abstract void considerForSampling(RecordEventsSpanImpl span);
protected void shutdown() {}
@@ -59,7 +55,7 @@ public abstract class SampledSpanStoreImpl extends SampledSpanStore {
}
@Override
- public void considerForSampling(SpanImpl span) {}
+ public void considerForSampling(RecordEventsSpanImpl span) {}
@Override
public void registerSpanNamesForCollection(Collection<String> spanNames) {}
diff --git a/impl_core/src/main/java/io/opencensus/implcore/trace/export/SpanExporterImpl.java b/impl_core/src/main/java/io/opencensus/implcore/trace/export/SpanExporterImpl.java
index b9b1e98c..51a7b05c 100644
--- a/impl_core/src/main/java/io/opencensus/implcore/trace/export/SpanExporterImpl.java
+++ b/impl_core/src/main/java/io/opencensus/implcore/trace/export/SpanExporterImpl.java
@@ -19,7 +19,7 @@ package io.opencensus.implcore.trace.export;
import com.google.common.annotations.VisibleForTesting;
import io.opencensus.common.Duration;
import io.opencensus.implcore.internal.DaemonThreadFactory;
-import io.opencensus.implcore.trace.SpanImpl;
+import io.opencensus.implcore.trace.RecordEventsSpanImpl;
import io.opencensus.trace.export.ExportComponent;
import io.opencensus.trace.export.SpanData;
import io.opencensus.trace.export.SpanExporter;
@@ -60,7 +60,7 @@ public final class SpanExporterImpl extends SpanExporter {
*
* @param span the {@code Span} to be added.
*/
- public void addSpan(SpanImpl span) {
+ public void addSpan(RecordEventsSpanImpl span) {
worker.addSpan(span);
}
@@ -108,14 +108,14 @@ public final class SpanExporterImpl extends SpanExporter {
private final Object monitor = new Object();
@GuardedBy("monitor")
- private final List<SpanImpl> spans;
+ private final List<RecordEventsSpanImpl> spans;
private final Map<String, Handler> serviceHandlers = new ConcurrentHashMap<String, Handler>();
private final int bufferSize;
private final long scheduleDelayMillis;
// See SpanExporterImpl#addSpan.
- private void addSpan(SpanImpl span) {
+ private void addSpan(RecordEventsSpanImpl span) {
synchronized (monitor) {
this.spans.add(span);
if (spans.size() > bufferSize) {
@@ -152,16 +152,16 @@ public final class SpanExporterImpl extends SpanExporter {
}
private Worker(int bufferSize, Duration scheduleDelay) {
- spans = new ArrayList<SpanImpl>(bufferSize);
+ spans = new ArrayList<RecordEventsSpanImpl>(bufferSize);
this.bufferSize = bufferSize;
this.scheduleDelayMillis = scheduleDelay.toMillis();
}
// Returns an unmodifiable list of all buffered spans data to ensure that any registered
// service handler cannot modify the list.
- private static List<SpanData> fromSpanImplToSpanData(List<SpanImpl> spans) {
+ private static List<SpanData> fromSpanImplToSpanData(List<RecordEventsSpanImpl> spans) {
List<SpanData> spanDatas = new ArrayList<SpanData>(spans.size());
- for (SpanImpl span : spans) {
+ for (RecordEventsSpanImpl span : spans) {
spanDatas.add(span.toSpanData());
}
return Collections.unmodifiableList(spanDatas);
@@ -172,7 +172,7 @@ public final class SpanExporterImpl extends SpanExporter {
while (true) {
// Copy all the batched spans in a separate list to release the monitor lock asap to
// avoid blocking the producer thread.
- List<SpanImpl> spansCopy;
+ List<RecordEventsSpanImpl> spansCopy;
synchronized (monitor) {
if (spans.size() < bufferSize) {
do {
@@ -187,7 +187,7 @@ public final class SpanExporterImpl extends SpanExporter {
}
} while (spans.isEmpty());
}
- spansCopy = new ArrayList<SpanImpl>(spans);
+ spansCopy = new ArrayList<RecordEventsSpanImpl>(spans);
spans.clear();
}
// Execute the batch export outside the synchronized to not block all producers.
@@ -199,9 +199,9 @@ public final class SpanExporterImpl extends SpanExporter {
}
void flush() {
- List<SpanImpl> spansCopy;
+ List<RecordEventsSpanImpl> spansCopy;
synchronized (monitor) {
- spansCopy = new ArrayList<SpanImpl>(spans);
+ spansCopy = new ArrayList<RecordEventsSpanImpl>(spans);
spans.clear();
}