Package brave
Class ScopedSpan
java.lang.Object
brave.ScopedSpan
- All Implemented Interfaces:
SpanCustomizer
public abstract class ScopedSpan extends Object implements SpanCustomizer
Used to model the latency of an operation within a method block.
Here's a typical example of synchronous tracing from perspective of the scoped span:
// Note span methods chain. Explicitly start the span when ready.
ScopedSpan span = tracer.startScopedSpan("encode");
try {
return encoder.encode();
} catch (RuntimeException | Error e) {
span.error(e); // Unless you handle exceptions, you might not know the operation failed!
throw e;
} finally {
span.finish(); // finish - start = the duration of the operation in microseconds
}
Usage notes
All methods return ScopedSpan for chaining, but the instance is always the same. Also, this type is intended for in-process synchronous code. Do not leak this onto another thread: it is not thread-safe. For advanced features or remote commands, useSpan
instead.- Since:
- 4.19
-
Method Summary
Modifier and Type Method Description abstract ScopedSpan
annotate(String value)
Associates an event that explains latency with the current system time.abstract TraceContext
context()
Returns the trace context associated with this spanabstract ScopedSpan
error(Throwable throwable)
Records an error that impacted this operation.abstract void
finish()
Closes thescope
associated with this span, then reports the span complete, assigning the most precise duration possible.abstract boolean
isNoop()
When true, no recording will take place, so no data is reported on finish.abstract ScopedSpan
name(String name)
Sets the string name for the logical operation this span represents.abstract ScopedSpan
tag(String key, String value)
Tags give your span context for search, viewing and analysis.
-
Method Details
-
isNoop
public abstract boolean isNoop()When true, no recording will take place, so no data is reported on finish. However, the trace context is in scope untilfinish()
is called.- Since:
- 4.19
-
context
Returns the trace context associated with this span- Since:
- 4.19
-
name
Sets the string name for the logical operation this span represents.- Specified by:
name
in interfaceSpanCustomizer
- Since:
- 5.11
-
tag
Tags give your span context for search, viewing and analysis. For example, a key "your_app.version" would let you lookup spans by version. A tag "sql.query" isn't searchable, but it can help in debugging when viewing a trace.Note:To guard potentially expensive parsing, implement
Tag
instead, which avoids parsing into a no-op span.Ex.
{@code SUMMARY_TAG = new Tag
("summary") { - Specified by:
tag
in interfaceSpanCustomizer
- Parameters:
key
- Name used to lookup spans, such as "your_app.version".value
- String value, cannot benull
.- Since:
- 4.19
- See Also:
Tag.tag(Object, SpanCustomizer)
-
annotate
Associates an event that explains latency with the current system time.- Specified by:
annotate
in interfaceSpanCustomizer
- Parameters:
value
- A short tag indicating the event, like "finagle.retry"- Since:
- 4.19
-
error
Records an error that impacted this operation.Note: Calling this does not finish the span.
- Since:
- 4.19
-
finish
public abstract void finish()Closes thescope
associated with this span, then reports the span complete, assigning the most precise duration possible.- Since:
- 4.19
-