opentelemetry-api 从 0.5.0 到 0.8.0 的迁移问题
Migration issue with opentelemetry-api from 0.5.0 to 0.8.0
我在将 opentelemetry-api 从 0.5.0 升级到 0.8 时遇到这个问题.0.
考虑以下代码片段,
import io.opentelemetry.OpenTelemetry
import io.opentelemetry.context.Scope
import io.opentelemetry.trace._
object Main4 extends App {
val a: Tracer = OpenTelemetry.getTracer(getClass.getSimpleName)
val b: Span = a.spanBuilder("test").startSpan()
val c: Scope = a.withSpan(b)
try {
val d: Span = TracingContextUtils.getCurrentSpan
val e: SpanContext = d.getContext
val f: Span = DefaultSpan.getInvalid
val g: SpanContext = f.getContext
println(d)
println(e)
println(e.isValid)
println(e.getSpanId)
println(e.getTraceId)
println()
println()
println()
println(f)
println(g)
println(g.isValid)
println(g.getSpanId)
println(g.getTraceId)
println()
println()
println(d == f)
} finally {
c.close()
}
}
使用 0.5.0,我得到的输出为:-
DefaultSpan
SpanContext{traceId=TraceId{traceId=f153124023eeab63d027ca493e05cbdf}, spanId=SpanId{spanId=fb8136024af9a4ae}, traceFlags=TraceFlags{sampled=false}, traceState=TraceState{entries=[]}, remote=false}
true
SpanId{spanId=fb8136024af9a4ae}
TraceId{traceId=f153124023eeab63d027ca493e05cbdf}
DefaultSpan
SpanContext{traceId=TraceId{traceId=00000000000000000000000000000000}, spanId=SpanId{spanId=0000000000000000}, traceFlags=TraceFlags{sampled=false}, traceState=TraceState{entries=[]}, remote=false}
false
SpanId{spanId=0000000000000000}
TraceId{traceId=00000000000000000000000000000000}
false
与 0.8.0,我得到的输出为:-
DefaultSpan
SpanContext{traceId=TraceId{traceId=00000000000000000000000000000000}, spanId=SpanId{spanId=0000000000000000}, traceFlags=TraceFlags{sampled=false}, traceState=TraceState{entries=[]}, remote=false}
false
SpanId{spanId=0000000000000000}
TraceId{traceId=00000000000000000000000000000000}
DefaultSpan
SpanContext{traceId=TraceId{traceId=00000000000000000000000000000000}, spanId=SpanId{spanId=0000000000000000}, traceFlags=TraceFlags{sampled=false}, traceState=TraceState{entries=[]}, remote=false}
false
SpanId{spanId=0000000000000000}
TraceId{traceId=00000000000000000000000000000000}
true
我认为 0.8.0 我的代码中缺少一些东西,因此它没有按预期正常工作。
有人可以让我知道我需要对我的代码做哪些更改才能获得正确的 Span 而不是无效的 Span正如我正在使用 0.5.0?
注意:- 我正在使用:- scala -> 2.13.3,jvm -> 14, sbt -> 1.3.13
在 0.8.0 中,API 不再在没有安装 SDK 的情况下生成 span。这样做主要是出于性能原因,因此 API 本身在未安装 SDK 时将以较低的开销运行。
如果您想要有效的 span,只需将 SDK 添加到您的类路径中,您将取回它们。
我在将 opentelemetry-api 从 0.5.0 升级到 0.8 时遇到这个问题.0.
考虑以下代码片段,
import io.opentelemetry.OpenTelemetry
import io.opentelemetry.context.Scope
import io.opentelemetry.trace._
object Main4 extends App {
val a: Tracer = OpenTelemetry.getTracer(getClass.getSimpleName)
val b: Span = a.spanBuilder("test").startSpan()
val c: Scope = a.withSpan(b)
try {
val d: Span = TracingContextUtils.getCurrentSpan
val e: SpanContext = d.getContext
val f: Span = DefaultSpan.getInvalid
val g: SpanContext = f.getContext
println(d)
println(e)
println(e.isValid)
println(e.getSpanId)
println(e.getTraceId)
println()
println()
println()
println(f)
println(g)
println(g.isValid)
println(g.getSpanId)
println(g.getTraceId)
println()
println()
println(d == f)
} finally {
c.close()
}
}
使用 0.5.0,我得到的输出为:-
DefaultSpan
SpanContext{traceId=TraceId{traceId=f153124023eeab63d027ca493e05cbdf}, spanId=SpanId{spanId=fb8136024af9a4ae}, traceFlags=TraceFlags{sampled=false}, traceState=TraceState{entries=[]}, remote=false}
true
SpanId{spanId=fb8136024af9a4ae}
TraceId{traceId=f153124023eeab63d027ca493e05cbdf}
DefaultSpan
SpanContext{traceId=TraceId{traceId=00000000000000000000000000000000}, spanId=SpanId{spanId=0000000000000000}, traceFlags=TraceFlags{sampled=false}, traceState=TraceState{entries=[]}, remote=false}
false
SpanId{spanId=0000000000000000}
TraceId{traceId=00000000000000000000000000000000}
false
与 0.8.0,我得到的输出为:-
DefaultSpan
SpanContext{traceId=TraceId{traceId=00000000000000000000000000000000}, spanId=SpanId{spanId=0000000000000000}, traceFlags=TraceFlags{sampled=false}, traceState=TraceState{entries=[]}, remote=false}
false
SpanId{spanId=0000000000000000}
TraceId{traceId=00000000000000000000000000000000}
DefaultSpan
SpanContext{traceId=TraceId{traceId=00000000000000000000000000000000}, spanId=SpanId{spanId=0000000000000000}, traceFlags=TraceFlags{sampled=false}, traceState=TraceState{entries=[]}, remote=false}
false
SpanId{spanId=0000000000000000}
TraceId{traceId=00000000000000000000000000000000}
true
我认为 0.8.0 我的代码中缺少一些东西,因此它没有按预期正常工作。
有人可以让我知道我需要对我的代码做哪些更改才能获得正确的 Span 而不是无效的 Span正如我正在使用 0.5.0?
注意:- 我正在使用:- scala -> 2.13.3,jvm -> 14, sbt -> 1.3.13
在 0.8.0 中,API 不再在没有安装 SDK 的情况下生成 span。这样做主要是出于性能原因,因此 API 本身在未安装 SDK 时将以较低的开销运行。
如果您想要有效的 span,只需将 SDK 添加到您的类路径中,您将取回它们。