Skip to content

Commit fe0db2d

Browse files
authored
Clean up some Tracer helper methods (#1494)
1 parent 1993120 commit fe0db2d

File tree

7 files changed

+113
-195
lines changed

7 files changed

+113
-195
lines changed

tracing-api/src/main/java/com/palantir/tracing/api/OpenSpan.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.palantir.tracing.api;
1818

19-
import java.time.Clock;
2019
import java.time.Instant;
2120
import java.util.Optional;
2221
import org.immutables.value.Value;
@@ -28,7 +27,6 @@
2827
@Value.Immutable
2928
@ImmutablesStyle
3029
public abstract class OpenSpan {
31-
private static final Clock CLOCK = Clock.systemUTC();
3230

3331
/** Returns a description of the operation for this event. */
3432
@Value.Parameter
@@ -109,7 +107,7 @@ public static OpenSpan of(String operation, String spanId, SpanType type, Option
109107
}
110108

111109
private static long getNowInMicroSeconds() {
112-
Instant now = CLOCK.instant();
110+
Instant now = Instant.now();
113111
return (1000000 * now.getEpochSecond()) + (now.getNano() / 1000);
114112
}
115113

tracing/src/main/java/com/palantir/tracing/DeferredTracer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public DeferredTracer(@Safe Optional<String> operation) {
9292
public DeferredTracer(@Safe String operation, @Safe Map<String, String> metadata) {
9393
Trace trace = Tracer.getTrace();
9494
if (trace != null) {
95-
OpenSpan span = trace.top();
95+
OpenSpan span = trace.current();
9696
this.traceState = trace.traceState();
9797
this.parentSpanId = span != null ? span.getSpanId() : null;
9898
this.operation = operation;

tracing/src/main/java/com/palantir/tracing/Trace.java

Lines changed: 21 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,8 @@
1616

1717
package com.palantir.tracing;
1818

19-
import static com.palantir.logsafe.Preconditions.checkArgument;
2019
import static com.palantir.logsafe.Preconditions.checkNotNull;
21-
import static com.palantir.logsafe.Preconditions.checkState;
2220

23-
import com.google.common.base.Strings;
24-
import com.google.errorprone.annotations.CheckReturnValue;
2521
import com.palantir.logsafe.SafeArg;
2622
import com.palantir.logsafe.exceptions.SafeIllegalStateException;
2723
import com.palantir.tracing.api.OpenSpan;
@@ -51,49 +47,15 @@ private Trace(TraceState traceState) {
5147
this.traceState = traceState;
5248
}
5349

54-
/**
55-
* Opens a new span for this thread's call trace, labeled with the provided operation and parent span. Only allowed
56-
* when the current trace is empty. If the return value is not used, prefer {@link #fastStartSpan(String, String,
57-
* SpanType)}}.
58-
*/
59-
@CheckReturnValue
60-
final OpenSpan startSpan(String operation, String parentSpanId, SpanType type) {
61-
checkState(isEmpty(), "Cannot start a span with explicit parent if the current thread's trace is non-empty");
62-
checkArgument(!Strings.isNullOrEmpty(parentSpanId), "parentSpanId must be non-empty");
63-
64-
return startSpan(operation, Optional.of(parentSpanId), type);
65-
}
66-
67-
/**
68-
* Opens a new span for this thread's call trace, labeled with the provided operation. If the return value is not
69-
* used, prefer {@link #fastStartSpan(String, SpanType)}}.
70-
*/
71-
@CheckReturnValue
72-
final OpenSpan startSpan(String operation, SpanType type) {
73-
OpenSpan span = top();
50+
abstract void fastStartSpan(String operation, Optional<String> parentSpanId, SpanType type);
7451

75-
return startSpan(operation, span != null ? Optional.of(span.getSpanId()) : Optional.empty(), type);
76-
}
77-
78-
private OpenSpan startSpan(String operation, Optional<String> parentSpanId, SpanType type) {
79-
OpenSpan span = OpenSpan.of(operation, Tracers.randomId(), type, parentSpanId);
80-
push(span);
81-
return span;
82-
}
83-
84-
/** Like {@link #startSpan(String, String, SpanType)}, but does not return an {@link OpenSpan}. */
85-
abstract void fastStartSpan(String operation, String parentSpanId, SpanType type);
86-
87-
/** Like {@link #startSpan(String, SpanType)}, but does not return an {@link OpenSpan}. */
88-
abstract void fastStartSpan(String operation, SpanType type);
52+
@Nullable
53+
abstract OpenSpan fastCompleteSpan();
8954

9055
abstract void push(OpenSpan span);
9156

9257
@Nullable
93-
abstract OpenSpan top();
94-
95-
@Nullable
96-
abstract OpenSpan pop();
58+
abstract OpenSpan current();
9759

9860
abstract boolean isEmpty();
9961

@@ -120,15 +82,15 @@ private Sampled(TraceState traceState) {
12082
}
12183

12284
@Override
123-
@SuppressWarnings("ResultOfMethodCallIgnored") // Sampled traces cannot optimize this path
124-
void fastStartSpan(String operation, String parentSpanId, SpanType type) {
125-
startSpan(operation, parentSpanId, type);
85+
void fastStartSpan(String operation, Optional<String> parentSpanId, SpanType type) {
86+
OpenSpan span = OpenSpan.of(operation, Tracers.randomId(), type, parentSpanId);
87+
push(span);
12688
}
12789

12890
@Override
129-
@SuppressWarnings("ResultOfMethodCallIgnored") // Sampled traces cannot optimize this path
130-
void fastStartSpan(String operation, SpanType type) {
131-
startSpan(operation, type);
91+
@Nullable
92+
OpenSpan fastCompleteSpan() {
93+
return stack.pollFirst();
13294
}
13395

13496
@Override
@@ -138,16 +100,10 @@ protected void push(OpenSpan span) {
138100

139101
@Override
140102
@Nullable
141-
OpenSpan top() {
103+
OpenSpan current() {
142104
return stack.peekFirst();
143105
}
144106

145-
@Override
146-
@Nullable
147-
OpenSpan pop() {
148-
return stack.pollFirst();
149-
}
150-
151107
@Override
152108
boolean isEmpty() {
153109
return stack.isEmpty();
@@ -177,13 +133,18 @@ private Unsampled(TraceState traceState) {
177133
}
178134

179135
@Override
180-
void fastStartSpan(String _operation, String _parentSpanId, SpanType _type) {
136+
void fastStartSpan(String _operation, Optional<String> _parentSpanId, SpanType _type) {
181137
numberOfSpans++;
182138
}
183139

184140
@Override
185-
void fastStartSpan(String _operation, SpanType _type) {
186-
numberOfSpans++;
141+
@Nullable
142+
OpenSpan fastCompleteSpan() {
143+
validateNumberOfSpans();
144+
if (numberOfSpans > 0) {
145+
numberOfSpans--;
146+
}
147+
return null;
187148
}
188149

189150
@Override
@@ -193,17 +154,7 @@ protected void push(OpenSpan _span) {
193154

194155
@Override
195156
@Nullable
196-
OpenSpan top() {
197-
return null;
198-
}
199-
200-
@Override
201-
@Nullable
202-
OpenSpan pop() {
203-
validateNumberOfSpans();
204-
if (numberOfSpans > 0) {
205-
numberOfSpans--;
206-
}
157+
OpenSpan current() {
207158
return null;
208159
}
209160

@@ -213,7 +164,7 @@ boolean isEmpty() {
213164
return numberOfSpans <= 0;
214165
}
215166

216-
/** Internal validation, this should never fail because {@link #pop()} only decrements positive values. */
167+
/** Internal validation, this should never fail because {@link #fastCompleteSpan()} only decrements positive values. */
217168
private void validateNumberOfSpans() {
218169
if (numberOfSpans < 0) {
219170
throw new SafeIllegalStateException(

0 commit comments

Comments
 (0)