Merge pull request #6049 from containers/dependabot/go_modules/github.com/uber/jaeger-client-go-2.23.1incompatible

build(deps): bump github.com/uber/jaeger-client-go from 2.22.1+incompatible to 2.23.1+incompatible
This commit is contained in:
OpenShift Merge Robot 2020-05-08 21:34:06 +02:00 committed by GitHub
commit 7f8b31f5fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 137 additions and 24 deletions

2
go.mod
View File

@ -52,7 +52,7 @@ require (
github.com/spf13/pflag v1.0.5 github.com/spf13/pflag v1.0.5
github.com/stretchr/testify v1.5.1 github.com/stretchr/testify v1.5.1
github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2 github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2
github.com/uber/jaeger-client-go v2.22.1+incompatible github.com/uber/jaeger-client-go v2.23.1+incompatible
github.com/uber/jaeger-lib v2.2.0+incompatible // indirect github.com/uber/jaeger-lib v2.2.0+incompatible // indirect
github.com/varlink/go v0.0.0-20190502142041-0f1d566d194b github.com/varlink/go v0.0.0-20190502142041-0f1d566d194b
github.com/vishvananda/netlink v1.1.0 github.com/vishvananda/netlink v1.1.0

4
go.sum
View File

@ -454,8 +454,8 @@ github.com/tchap/go-patricia v2.3.0+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ
github.com/theckman/go-flock v0.7.1/go.mod h1:kjuth3y9VJ2aNlkNEO99G/8lp9fMIKaGyBmh84IBheM= github.com/theckman/go-flock v0.7.1/go.mod h1:kjuth3y9VJ2aNlkNEO99G/8lp9fMIKaGyBmh84IBheM=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/u-root/u-root v6.0.0+incompatible/go.mod h1:RYkpo8pTHrNjW08opNd/U6p/RJE7K0D8fXO0d47+3YY= github.com/u-root/u-root v6.0.0+incompatible/go.mod h1:RYkpo8pTHrNjW08opNd/U6p/RJE7K0D8fXO0d47+3YY=
github.com/uber/jaeger-client-go v2.22.1+incompatible h1:NHcubEkVbahf9t3p75TOCR83gdUHXjRJvjoBh1yACsM= github.com/uber/jaeger-client-go v2.23.1+incompatible h1:uArBYHQR0HqLFFAypI7RsWTzPSj/bDpmZZuQjMLSg1A=
github.com/uber/jaeger-client-go v2.22.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-client-go v2.23.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
github.com/uber/jaeger-lib v2.2.0+incompatible h1:MxZXOiR2JuoANZ3J6DE/U0kSFv/eJ/GfSYVCjK7dyaw= github.com/uber/jaeger-lib v2.2.0+incompatible h1:MxZXOiR2JuoANZ3J6DE/U0kSFv/eJ/GfSYVCjK7dyaw=
github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=

View File

@ -1,6 +1,18 @@
Changes by Version Changes by Version
================== ==================
2.23.1 (2020-04-28)
-------------------
- Fix regression by handling nil logger correctly ([#507](https://github.com/jaegertracing/jaeger-client-go/pull/507)) -- Prithvi Raj
2.23.0 (2020-04-22)
-------------------
- Add the ability to log all span interactions at a new debug log level([#502](https://github.com/jaegertracing/jaeger-client-go/pull/502), [#503](https://github.com/jaegertracing/jaeger-client-go/pull/503), [#504](https://github.com/jaegertracing/jaeger-client-go/pull/504)) -- Prithvi Raj
- Chore (docs): fix typos ([#496](https://github.com/jaegertracing/jaeger-client-go/pull/496), [#498](https://github.com/jaegertracing/jaeger-client-go/pull/498)) -- Febrian Setianto and Ivan Babrou
- Unset highest bit of traceID in probabilistic sampler ([#490](https://github.com/jaegertracing/jaeger-client-go/pull/490)) -- Sokolov Yura
2.22.1 (2020-01-16) 2.22.1 (2020-01-16)
------------------- -------------------

View File

@ -45,6 +45,14 @@
revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73" revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"
version = "v1.1.1" version = "v1.1.1"
[[projects]]
digest = "1:7ae311278f7ccaa724de8f2cdec0a507ba3ee6dea8c77237e8157bcf64b0f28b"
name = "github.com/golang/mock"
packages = ["gomock"]
pruneopts = "UT"
revision = "3a35fb6e3e18b9dbfee291262260dee7372d2a92"
version = "v1.4.3"
[[projects]] [[projects]]
digest = "1:573ca21d3669500ff845bdebee890eb7fc7f0f50c59f2132f2a0c6b03d85086a" digest = "1:573ca21d3669500ff845bdebee890eb7fc7f0f50c59f2132f2a0c6b03d85086a"
name = "github.com/golang/protobuf" name = "github.com/golang/protobuf"
@ -182,7 +190,7 @@
revision = "2cfd321de3ee5d5f8a5fda2521d1703478334d98" revision = "2cfd321de3ee5d5f8a5fda2521d1703478334d98"
[[projects]] [[projects]]
digest = "1:6be13632ab4bd5842a097abb3aabac045a8601e19a10da4239e7d8bd83d4b83c" digest = "1:98a70115729234dc73ee7bb83973cb39cb8fedf278d17df77264382bad0183ec"
name = "go.uber.org/zap" name = "go.uber.org/zap"
packages = [ packages = [
".", ".",
@ -191,6 +199,7 @@
"internal/color", "internal/color",
"internal/exit", "internal/exit",
"zapcore", "zapcore",
"zaptest/observer",
] ]
pruneopts = "UT" pruneopts = "UT"
revision = "a6015e13fab9b744d96085308ce4e8f11bad1996" revision = "a6015e13fab9b744d96085308ce4e8f11bad1996"
@ -297,6 +306,7 @@
analyzer-version = 1 analyzer-version = 1
input-imports = [ input-imports = [
"github.com/crossdock/crossdock-go", "github.com/crossdock/crossdock-go",
"github.com/golang/mock/gomock",
"github.com/opentracing/opentracing-go", "github.com/opentracing/opentracing-go",
"github.com/opentracing/opentracing-go/ext", "github.com/opentracing/opentracing-go/ext",
"github.com/opentracing/opentracing-go/harness", "github.com/opentracing/opentracing-go/harness",
@ -312,6 +322,7 @@
"go.uber.org/atomic", "go.uber.org/atomic",
"go.uber.org/zap", "go.uber.org/zap",
"go.uber.org/zap/zapcore", "go.uber.org/zap/zapcore",
"go.uber.org/zap/zaptest/observer",
] ]
solver-name = "gps-cdcl" solver-name = "gps-cdcl"
solver-version = 1 solver-version = 1

View File

@ -87,7 +87,7 @@ defer closer.Close()
This is especially useful for command-line tools that enable tracing, as well as This is especially useful for command-line tools that enable tracing, as well as
for the long-running apps that support graceful shutdown. For example, if your deployment for the long-running apps that support graceful shutdown. For example, if your deployment
system sends SIGTERM instead of killing the process and you trap that signal to do a graceful system sends SIGTERM instead of killing the process and you trap that signal to do a graceful
exit, then having `defer closer.Closer()` ensures that all buffered spans are flushed. exit, then having `defer closer.Close()` ensures that all buffered spans are flushed.
### Metrics & Monitoring ### Metrics & Monitoring
@ -279,20 +279,25 @@ However it is not the default propagation format, see [here](zipkin/README.md#Ne
## SelfRef ## SelfRef
Jaeger Tracer supports an additional [reference](https://github.com/opentracing/specification/blob/1.1/specification.md#references-between-spans) Jaeger Tracer supports an additional [span reference][] type call `Self`, which was proposed
type call `Self`. This allows a caller to provide an already established `SpanContext`. to the OpenTracing Specification (https://github.com/opentracing/specification/issues/81)
This allows loading and continuing spans/traces from offline (ie log-based) storage. The `Self` reference but not yet accepted. This allows the caller to provide an already created `SpanContext`
bypasses trace and span id generation. when starting a new span. The `Self` reference bypasses trace and span id generation,
as well as sampling decisions (i.e. the sampling bit in the `SpanContext.flags` must be
set appropriately by the caller).
The `Self` reference supports the following use cases:
* the ability to provide externally generated trace and span IDs
* appending data to the same span from different processes, such as loading and continuing spans/traces from offline (ie log-based) storage
Usage requires passing in a `SpanContext` and the jaeger `Self` reference type: Usage requires passing in a `SpanContext` and the `jaeger.Self` reference type:
``` ```
span := tracer.StartSpan( span := tracer.StartSpan(
"continued_span", "continued_span",
SelfRef(yourSpanContext), jaeger.SelfRef(yourSpanContext),
) )
... ...
defer span.finish() defer span.Finish()
``` ```
## License ## License
@ -310,3 +315,4 @@ defer span.finish()
[ot-url]: http://opentracing.io [ot-url]: http://opentracing.io
[baggage]: https://github.com/opentracing/specification/blob/master/specification.md#set-a-baggage-item [baggage]: https://github.com/opentracing/specification/blob/master/specification.md#set-a-baggage-item
[timeunits]: https://golang.org/pkg/time/#ParseDuration [timeunits]: https://golang.org/pkg/time/#ParseDuration
[span reference]: https://github.com/opentracing/specification/blob/1.1/specification.md#references-between-spans

View File

@ -22,7 +22,7 @@ import (
const ( const (
// JaegerClientVersion is the version of the client library reported as Span tag. // JaegerClientVersion is the version of the client library reported as Span tag.
JaegerClientVersion = "Go-2.22.1" JaegerClientVersion = "Go-2.23.1"
// JaegerClientVersionTagKey is the name of the tag used to report client version. // JaegerClientVersionTagKey is the name of the tag used to report client version.
JaegerClientVersionTagKey = "jaeger.version" JaegerClientVersionTagKey = "jaeger.version"

View File

@ -93,4 +93,6 @@ imports:
- windows - windows
- name: gopkg.in/yaml.v2 - name: gopkg.in/yaml.v2
version: 51d6538a90f86fe93ac480b35f37b2be17fef232 version: 51d6538a90f86fe93ac480b35f37b2be17fef232
- name: github.com/golang/mock
version: 3a35fb6e3e18b9dbfee291262260dee7372d2a92
testImports: [] testImports: []

View File

@ -25,3 +25,4 @@ testImport:
- assert - assert
- require - require
- suite - suite
- package: github.com/golang/mock

View File

@ -47,13 +47,19 @@ func (l *stdLogger) Infof(msg string, args ...interface{}) {
log.Printf(msg, args...) log.Printf(msg, args...)
} }
// Debugf logs a message at debug priority
func (l *stdLogger) Debugf(msg string, args ...interface{}) {
log.Printf(fmt.Sprintf("DEBUG: %s", msg), args...)
}
// NullLogger is implementation of the Logger interface that is no-op // NullLogger is implementation of the Logger interface that is no-op
var NullLogger = &nullLogger{} var NullLogger = &nullLogger{}
type nullLogger struct{} type nullLogger struct{}
func (l *nullLogger) Error(msg string) {} func (l *nullLogger) Error(msg string) {}
func (l *nullLogger) Infof(msg string, args ...interface{}) {} func (l *nullLogger) Infof(msg string, args ...interface{}) {}
func (l *nullLogger) Debugf(msg string, args ...interface{}) {}
// BytesBufferLogger implements Logger backed by a bytes.Buffer. // BytesBufferLogger implements Logger backed by a bytes.Buffer.
type BytesBufferLogger struct { type BytesBufferLogger struct {
@ -75,6 +81,13 @@ func (l *BytesBufferLogger) Infof(msg string, args ...interface{}) {
l.mux.Unlock() l.mux.Unlock()
} }
// Debugf implements Logger.
func (l *BytesBufferLogger) Debugf(msg string, args ...interface{}) {
l.mux.Lock()
l.buf.WriteString("DEBUG: " + fmt.Sprintf(msg, args...) + "\n")
l.mux.Unlock()
}
// String returns string representation of the underlying buffer. // String returns string representation of the underlying buffer.
func (l *BytesBufferLogger) String() string { func (l *BytesBufferLogger) String() string {
l.mux.Lock() l.mux.Lock()
@ -88,3 +101,41 @@ func (l *BytesBufferLogger) Flush() {
defer l.mux.Unlock() defer l.mux.Unlock()
l.buf.Reset() l.buf.Reset()
} }
// DebugLogger is an interface which adds a debug logging level
type DebugLogger interface {
Logger
// Debugf logs a message at debug priority
Debugf(msg string, args ...interface{})
}
// DebugLogAdapter is a log adapter that converts a Logger into a DebugLogger
// If the provided Logger doesn't satisfy the interface, a logger with debug
// disabled is returned
func DebugLogAdapter(logger Logger) DebugLogger {
if logger == nil {
return nil
}
if debugLogger, ok := logger.(DebugLogger); ok {
return debugLogger
}
logger.Infof("debug logging disabled")
return debugDisabledLogAdapter{logger: logger}
}
type debugDisabledLogAdapter struct {
logger Logger
}
func (d debugDisabledLogAdapter) Error(msg string) {
d.logger.Error(msg)
}
func (d debugDisabledLogAdapter) Infof(msg string, args ...interface{}) {
d.logger.Infof(msg, args...)
}
// Debugf is a nop
func (d debugDisabledLogAdapter) Debugf(msg string, args ...interface{}) {
}

View File

@ -257,6 +257,7 @@ func (r *remoteReporter) Report(span *Span) {
// Close implements Close() method of Reporter by waiting for the queue to be drained. // Close implements Close() method of Reporter by waiting for the queue to be drained.
func (r *remoteReporter) Close() { func (r *remoteReporter) Close() {
r.logger.Debugf("closing reporter")
if swapped := atomic.CompareAndSwapInt64(&r.closed, 0, 1); !swapped { if swapped := atomic.CompareAndSwapInt64(&r.closed, 0, 1); !swapped {
r.logger.Error("Repeated attempt to close the reporter is ignored") r.logger.Error("Repeated attempt to close the reporter is ignored")
return return
@ -307,6 +308,7 @@ func (r *remoteReporter) processQueue() {
r.metrics.ReporterSuccess.Inc(int64(flushed)) r.metrics.ReporterSuccess.Inc(int64(flushed))
// to reduce the number of gauge stats, we only emit queue length on flush // to reduce the number of gauge stats, we only emit queue length on flush
r.metrics.ReporterQueueLength.Update(atomic.LoadInt64(&r.queueLength)) r.metrics.ReporterQueueLength.Update(atomic.LoadInt64(&r.queueLength))
r.logger.Debugf("flushed %d spans", flushed)
} }
span.Release() span.Release()
case reporterQueueItemClose: case reporterQueueItemClose:

View File

@ -16,6 +16,8 @@ package jaeger
import ( import (
"time" "time"
"github.com/uber/jaeger-client-go/log"
) )
// ReporterOption is a function that sets some option on the reporter. // ReporterOption is a function that sets some option on the reporter.
@ -31,7 +33,7 @@ type reporterOptions struct {
// bufferFlushInterval is how often the buffer is force-flushed, even if it's not full // bufferFlushInterval is how often the buffer is force-flushed, even if it's not full
bufferFlushInterval time.Duration bufferFlushInterval time.Duration
// logger is used to log errors of span submissions // logger is used to log errors of span submissions
logger Logger logger log.DebugLogger
// metrics is used to record runtime stats // metrics is used to record runtime stats
metrics *Metrics metrics *Metrics
} }
@ -64,6 +66,6 @@ func (reporterOptions) BufferFlushInterval(bufferFlushInterval time.Duration) Re
// errors of span submissions. // errors of span submissions.
func (reporterOptions) Logger(logger Logger) ReporterOption { func (reporterOptions) Logger(logger Logger) ReporterOption {
return func(r *reporterOptions) { return func(r *reporterOptions) {
r.logger = logger r.logger = log.DebugLogAdapter(logger)
} }
} }

View File

@ -17,6 +17,7 @@ package jaeger
import ( import (
"fmt" "fmt"
"math" "math"
"strings"
"sync" "sync"
"github.com/uber/jaeger-client-go/thrift-gen/sampling" "github.com/uber/jaeger-client-go/thrift-gen/sampling"
@ -141,7 +142,7 @@ func (s *ProbabilisticSampler) SamplingRate() float64 {
// IsSampled implements IsSampled() of Sampler. // IsSampled implements IsSampled() of Sampler.
func (s *ProbabilisticSampler) IsSampled(id TraceID, operation string) (bool, []Tag) { func (s *ProbabilisticSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
return s.samplingBoundary >= id.Low, s.tags return s.samplingBoundary >= id.Low&maxRandomNumber, s.tags
} }
// Close implements Close() of Sampler. // Close implements Close() of Sampler.
@ -319,6 +320,10 @@ func (s *GuaranteedThroughputProbabilisticSampler) update(lowerBound, samplingRa
} }
} }
func (s GuaranteedThroughputProbabilisticSampler) String() string {
return fmt.Sprintf("GuaranteedThroughputProbabilisticSampler(lowerBound=%f, samplingRate=%f)", s.lowerBound, s.samplingRate)
}
// ----------------------- // -----------------------
// PerOperationSampler is a delegating sampler that applies GuaranteedThroughputProbabilisticSampler // PerOperationSampler is a delegating sampler that applies GuaranteedThroughputProbabilisticSampler
@ -456,6 +461,23 @@ func (s *PerOperationSampler) Close() {
s.defaultSampler.Close() s.defaultSampler.Close()
} }
func (s *PerOperationSampler) String() string {
var sb strings.Builder
fmt.Fprintf(&sb, "PerOperationSampler(defaultSampler=%v, ", s.defaultSampler)
fmt.Fprintf(&sb, "lowerBound=%f, ", s.lowerBound)
fmt.Fprintf(&sb, "maxOperations=%d, ", s.maxOperations)
fmt.Fprintf(&sb, "operationNameLateBinding=%t, ", s.operationNameLateBinding)
fmt.Fprintf(&sb, "numOperations=%d,\n", len(s.samplers))
fmt.Fprintf(&sb, "samplers=[")
for operationName, sampler := range s.samplers {
fmt.Fprintf(&sb, "\n(operationName=%s, sampler=%v)", operationName, sampler)
}
fmt.Fprintf(&sb, "])")
return sb.String()
}
// Equal is not used. // Equal is not used.
// TODO (breaking change) remove this in the future // TODO (breaking change) remove this in the future
func (s *PerOperationSampler) Equal(other Sampler) bool { func (s *PerOperationSampler) Equal(other Sampler) bool {

View File

@ -24,6 +24,7 @@ import (
"sync/atomic" "sync/atomic"
"time" "time"
"github.com/uber/jaeger-client-go/log"
"github.com/uber/jaeger-client-go/thrift-gen/sampling" "github.com/uber/jaeger-client-go/thrift-gen/sampling"
) )
@ -199,6 +200,7 @@ func (s *RemotelyControlledSampler) updateSamplerViaUpdaters(strategy interface{
return err return err
} }
if sampler != nil { if sampler != nil {
s.logger.Debugf("sampler updated: %+v", sampler)
s.sampler = sampler s.sampler = sampler
return nil return nil
} }
@ -290,7 +292,7 @@ func (u *AdaptiveSamplerUpdater) Update(sampler SamplerV2, strategy interface{})
type httpSamplingStrategyFetcher struct { type httpSamplingStrategyFetcher struct {
serverURL string serverURL string
logger Logger logger log.DebugLogger
} }
func (f *httpSamplingStrategyFetcher) Fetch(serviceName string) ([]byte, error) { func (f *httpSamplingStrategyFetcher) Fetch(serviceName string) ([]byte, error) {

View File

@ -35,7 +35,7 @@ type SamplerOptionsFactory struct{}
type samplerOptions struct { type samplerOptions struct {
metrics *Metrics metrics *Metrics
sampler SamplerV2 sampler SamplerV2
logger Logger logger log.DebugLogger
samplingServerURL string samplingServerURL string
samplingRefreshInterval time.Duration samplingRefreshInterval time.Duration
samplingFetcher SamplingStrategyFetcher samplingFetcher SamplingStrategyFetcher
@ -79,7 +79,7 @@ func (SamplerOptionsFactory) InitialSampler(sampler Sampler) SamplerOption {
// Logger creates a SamplerOption that sets the logger used by the sampler. // Logger creates a SamplerOption that sets the logger used by the sampler.
func (SamplerOptionsFactory) Logger(logger Logger) SamplerOption { func (SamplerOptionsFactory) Logger(logger Logger) SamplerOption {
return func(o *samplerOptions) { return func(o *samplerOptions) {
o.logger = logger o.logger = log.DebugLogAdapter(logger)
} }
} }

View File

@ -41,7 +41,7 @@ type Tracer struct {
sampler SamplerV2 sampler SamplerV2
reporter Reporter reporter Reporter
metrics Metrics metrics Metrics
logger log.Logger logger log.DebugLogger
timeNow func() time.Time timeNow func() time.Time
randomNumber func() uint64 randomNumber func() uint64
@ -366,6 +366,7 @@ func (t *Tracer) Extract(
// Close releases all resources used by the Tracer and flushes any remaining buffered spans. // Close releases all resources used by the Tracer and flushes any remaining buffered spans.
func (t *Tracer) Close() error { func (t *Tracer) Close() error {
t.logger.Debugf("closing tracer")
t.reporter.Close() t.reporter.Close()
t.sampler.Close() t.sampler.Close()
if mgr, ok := t.baggageRestrictionManager.(io.Closer); ok { if mgr, ok := t.baggageRestrictionManager.(io.Closer); ok {

View File

@ -21,6 +21,7 @@ import (
"github.com/uber/jaeger-client-go/internal/baggage" "github.com/uber/jaeger-client-go/internal/baggage"
"github.com/uber/jaeger-client-go/internal/throttler" "github.com/uber/jaeger-client-go/internal/throttler"
"github.com/uber/jaeger-client-go/log"
) )
// TracerOption is a function that sets some option on the tracer // TracerOption is a function that sets some option on the tracer
@ -42,7 +43,7 @@ func (tracerOptions) Metrics(m *Metrics) TracerOption {
// Logger creates a TracerOption that gives the tracer a Logger. // Logger creates a TracerOption that gives the tracer a Logger.
func (tracerOptions) Logger(logger Logger) TracerOption { func (tracerOptions) Logger(logger Logger) TracerOption {
return func(tracer *Tracer) { return func(tracer *Tracer) {
tracer.logger = logger tracer.logger = log.DebugLogAdapter(logger)
} }
} }

2
vendor/modules.txt vendored
View File

@ -486,7 +486,7 @@ github.com/stretchr/testify/require
github.com/syndtr/gocapability/capability github.com/syndtr/gocapability/capability
# github.com/tchap/go-patricia v2.3.0+incompatible # github.com/tchap/go-patricia v2.3.0+incompatible
github.com/tchap/go-patricia/patricia github.com/tchap/go-patricia/patricia
# github.com/uber/jaeger-client-go v2.22.1+incompatible # github.com/uber/jaeger-client-go v2.23.1+incompatible
github.com/uber/jaeger-client-go github.com/uber/jaeger-client-go
github.com/uber/jaeger-client-go/config github.com/uber/jaeger-client-go/config
github.com/uber/jaeger-client-go/internal/baggage github.com/uber/jaeger-client-go/internal/baggage