summaryrefslogtreecommitdiff
path: root/vendor/github.com
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com')
-rw-r--r--vendor/github.com/containers/buildah/add.go26
-rw-r--r--vendor/github.com/containers/buildah/buildah.go2
-rw-r--r--vendor/github.com/containers/buildah/copier/copier.go65
-rw-r--r--vendor/github.com/containers/buildah/copier/syscall_unix.go8
-rw-r--r--vendor/github.com/containers/buildah/pkg/overlay/overlay.go10
-rw-r--r--vendor/github.com/coreos/go-iptables/iptables/iptables.go112
-rw-r--r--vendor/github.com/nxadm/tail/.gitignore3
-rw-r--r--vendor/github.com/nxadm/tail/.travis.yml16
-rw-r--r--vendor/github.com/nxadm/tail/CHANGES.md12
-rw-r--r--vendor/github.com/nxadm/tail/README.md40
-rw-r--r--vendor/github.com/nxadm/tail/appveyor.yml11
-rw-r--r--vendor/github.com/nxadm/tail/go.mod3
-rw-r--r--vendor/github.com/nxadm/tail/go.sum8
-rw-r--r--vendor/github.com/nxadm/tail/tail.go73
-rw-r--r--vendor/github.com/nxadm/tail/tail_posix.go6
-rw-r--r--vendor/github.com/nxadm/tail/tail_windows.go9
-rw-r--r--vendor/github.com/nxadm/tail/util/util.go1
-rw-r--r--vendor/github.com/nxadm/tail/watch/filechanges.go1
-rw-r--r--vendor/github.com/nxadm/tail/watch/inotify.go1
-rw-r--r--vendor/github.com/nxadm/tail/watch/inotify_tracker.go1
-rw-r--r--vendor/github.com/nxadm/tail/watch/polling.go1
-rw-r--r--vendor/github.com/nxadm/tail/watch/watch.go1
-rw-r--r--vendor/github.com/nxadm/tail/winfile/winfile.go1
-rw-r--r--vendor/github.com/onsi/ginkgo/.travis.yml4
-rw-r--r--vendor/github.com/onsi/ginkgo/CHANGELOG.md5
-rw-r--r--vendor/github.com/onsi/ginkgo/README.md1
-rw-r--r--vendor/github.com/onsi/ginkgo/config/config.go2
-rw-r--r--vendor/github.com/onsi/ginkgo/go.mod7
-rw-r--r--vendor/github.com/onsi/ginkgo/go.sum3
-rw-r--r--vendor/github.com/onsi/ginkgo/reporters/junit_reporter.go9
-rw-r--r--vendor/github.com/onsi/gomega/.travis.yml18
-rw-r--r--vendor/github.com/onsi/gomega/CHANGELOG.md13
-rw-r--r--vendor/github.com/onsi/gomega/Dockerfile1
-rw-r--r--vendor/github.com/onsi/gomega/Makefile37
-rw-r--r--vendor/github.com/onsi/gomega/docker-compose.yaml10
-rw-r--r--vendor/github.com/onsi/gomega/format/format.go41
-rw-r--r--vendor/github.com/onsi/gomega/gexec/build.go150
-rw-r--r--vendor/github.com/onsi/gomega/go.mod4
-rw-r--r--vendor/github.com/onsi/gomega/go.sum18
-rw-r--r--vendor/github.com/onsi/gomega/gomega_dsl.go2
-rw-r--r--vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go22
-rw-r--r--vendor/github.com/onsi/gomega/matchers/with_transform.go19
-rw-r--r--vendor/github.com/opentracing/opentracing-go/.gitignore1
-rw-r--r--vendor/github.com/opentracing/opentracing-go/.travis.yml20
-rw-r--r--vendor/github.com/opentracing/opentracing-go/CHANGELOG.md63
-rw-r--r--vendor/github.com/opentracing/opentracing-go/LICENSE201
-rw-r--r--vendor/github.com/opentracing/opentracing-go/Makefile20
-rw-r--r--vendor/github.com/opentracing/opentracing-go/README.md171
-rw-r--r--vendor/github.com/opentracing/opentracing-go/ext.go24
-rw-r--r--vendor/github.com/opentracing/opentracing-go/ext/field.go17
-rw-r--r--vendor/github.com/opentracing/opentracing-go/ext/tags.go215
-rw-r--r--vendor/github.com/opentracing/opentracing-go/globaltracer.go42
-rw-r--r--vendor/github.com/opentracing/opentracing-go/go.mod5
-rw-r--r--vendor/github.com/opentracing/opentracing-go/go.sum7
-rw-r--r--vendor/github.com/opentracing/opentracing-go/gocontext.go65
-rw-r--r--vendor/github.com/opentracing/opentracing-go/log/field.go282
-rw-r--r--vendor/github.com/opentracing/opentracing-go/log/util.go61
-rw-r--r--vendor/github.com/opentracing/opentracing-go/noop.go64
-rw-r--r--vendor/github.com/opentracing/opentracing-go/propagation.go176
-rw-r--r--vendor/github.com/opentracing/opentracing-go/span.go189
-rw-r--r--vendor/github.com/opentracing/opentracing-go/tracer.go304
-rw-r--r--vendor/github.com/uber/jaeger-client-go/.gitignore15
-rw-r--r--vendor/github.com/uber/jaeger-client-go/.gitmodules3
-rw-r--r--vendor/github.com/uber/jaeger-client-go/.travis.yml56
-rw-r--r--vendor/github.com/uber/jaeger-client-go/CHANGELOG.md351
-rw-r--r--vendor/github.com/uber/jaeger-client-go/CONTRIBUTING.md170
-rw-r--r--vendor/github.com/uber/jaeger-client-go/DCO37
-rw-r--r--vendor/github.com/uber/jaeger-client-go/Gopkg.lock401
-rw-r--r--vendor/github.com/uber/jaeger-client-go/Gopkg.toml31
-rw-r--r--vendor/github.com/uber/jaeger-client-go/Makefile134
-rw-r--r--vendor/github.com/uber/jaeger-client-go/README.md324
-rw-r--r--vendor/github.com/uber/jaeger-client-go/RELEASE.md12
-rw-r--r--vendor/github.com/uber/jaeger-client-go/baggage_setter.go77
-rw-r--r--vendor/github.com/uber/jaeger-client-go/config/config.go434
-rw-r--r--vendor/github.com/uber/jaeger-client-go/config/config_env.go259
-rw-r--r--vendor/github.com/uber/jaeger-client-go/config/options.go165
-rw-r--r--vendor/github.com/uber/jaeger-client-go/constants.go106
-rw-r--r--vendor/github.com/uber/jaeger-client-go/contrib_observer.go56
-rw-r--r--vendor/github.com/uber/jaeger-client-go/doc.go24
-rw-r--r--vendor/github.com/uber/jaeger-client-go/glide.lock98
-rw-r--r--vendor/github.com/uber/jaeger-client-go/glide.yaml28
-rw-r--r--vendor/github.com/uber/jaeger-client-go/header.go65
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/options.go101
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/restriction_manager.go157
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/baggage/restriction_manager.go71
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/reporterstats/stats.go25
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/spanlog/json.go81
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/options.go99
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/throttler.go216
-rw-r--r--vendor/github.com/uber/jaeger-client-go/internal/throttler/throttler.go32
-rw-r--r--vendor/github.com/uber/jaeger-client-go/interop.go55
-rw-r--r--vendor/github.com/uber/jaeger-client-go/jaeger_tag.go84
-rw-r--r--vendor/github.com/uber/jaeger-client-go/jaeger_thrift_span.go181
-rw-r--r--vendor/github.com/uber/jaeger-client-go/logger.go53
-rw-r--r--vendor/github.com/uber/jaeger-client-go/metrics.go119
-rw-r--r--vendor/github.com/uber/jaeger-client-go/observer.go88
-rw-r--r--vendor/github.com/uber/jaeger-client-go/process.go29
-rw-r--r--vendor/github.com/uber/jaeger-client-go/propagation.go313
-rw-r--r--vendor/github.com/uber/jaeger-client-go/reference.go23
-rw-r--r--vendor/github.com/uber/jaeger-client-go/reporter.go322
-rw-r--r--vendor/github.com/uber/jaeger-client-go/reporter_options.go71
-rw-r--r--vendor/github.com/uber/jaeger-client-go/rpcmetrics/README.md5
-rw-r--r--vendor/github.com/uber/jaeger-client-go/rpcmetrics/doc.go16
-rw-r--r--vendor/github.com/uber/jaeger-client-go/rpcmetrics/endpoints.go63
-rw-r--r--vendor/github.com/uber/jaeger-client-go/rpcmetrics/metrics.go124
-rw-r--r--vendor/github.com/uber/jaeger-client-go/rpcmetrics/normalizer.go101
-rw-r--r--vendor/github.com/uber/jaeger-client-go/rpcmetrics/observer.go171
-rw-r--r--vendor/github.com/uber/jaeger-client-go/sampler.go516
-rw-r--r--vendor/github.com/uber/jaeger-client-go/sampler_remote.go337
-rw-r--r--vendor/github.com/uber/jaeger-client-go/sampler_remote_options.go162
-rw-r--r--vendor/github.com/uber/jaeger-client-go/sampler_v2.go93
-rw-r--r--vendor/github.com/uber/jaeger-client-go/span.go487
-rw-r--r--vendor/github.com/uber/jaeger-client-go/span_allocator.go56
-rw-r--r--vendor/github.com/uber/jaeger-client-go/span_context.go387
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/baggagerestrictionmanager.go435
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/constants.go18
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/ttypes.go154
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/constants.go18
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/samplingmanager.go410
-rw-r--r--vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/ttypes.go873
-rw-r--r--vendor/github.com/uber/jaeger-client-go/tracer.go491
-rw-r--r--vendor/github.com/uber/jaeger-client-go/tracer_options.go182
-rw-r--r--vendor/github.com/uber/jaeger-client-go/transport.go38
-rw-r--r--vendor/github.com/uber/jaeger-client-go/transport/doc.go23
-rw-r--r--vendor/github.com/uber/jaeger-client-go/transport/http.go174
-rw-r--r--vendor/github.com/uber/jaeger-client-go/transport_udp.go193
-rw-r--r--vendor/github.com/uber/jaeger-client-go/zipkin.go77
-rw-r--r--vendor/github.com/uber/jaeger-client-go/zipkin_thrift_span.go329
-rw-r--r--vendor/github.com/uber/jaeger-lib/LICENSE201
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/counter.go28
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/factory.go78
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/gauge.go28
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/histogram.go28
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/keys.go35
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/metrics.go137
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/stopwatch.go43
-rw-r--r--vendor/github.com/uber/jaeger-lib/metrics/timer.go33
137 files changed, 544 insertions, 13670 deletions
diff --git a/vendor/github.com/containers/buildah/add.go b/vendor/github.com/containers/buildah/add.go
index 0903fc7db..cd466ccb3 100644
--- a/vendor/github.com/containers/buildah/add.go
+++ b/vendor/github.com/containers/buildah/add.go
@@ -324,13 +324,33 @@ func (b *Builder) Add(destination string, extract bool, options AddAndCopyOption
return errors.Wrapf(err, "error processing excludes list %v", options.Excludes)
}
- // Copy each source in turn.
+ // Make sure that, if it's a symlink, we'll chroot to the target of the link;
+ // knowing that target requires that we resolve it within the chroot.
+ evalOptions := copier.EvalOptions{}
+ evaluated, err := copier.Eval(mountPoint, extractDirectory, evalOptions)
+ if err != nil {
+ return errors.Wrapf(err, "error checking on destination %v", extractDirectory)
+ }
+ extractDirectory = evaluated
+
+ // Set up ID maps.
var srcUIDMap, srcGIDMap []idtools.IDMap
if options.IDMappingOptions != nil {
srcUIDMap, srcGIDMap = convertRuntimeIDMaps(options.IDMappingOptions.UIDMap, options.IDMappingOptions.GIDMap)
}
destUIDMap, destGIDMap := convertRuntimeIDMaps(b.IDMappingOptions.UIDMap, b.IDMappingOptions.GIDMap)
+ // Create the target directory if it doesn't exist yet.
+ mkdirOptions := copier.MkdirOptions{
+ UIDMap: destUIDMap,
+ GIDMap: destGIDMap,
+ ChownNew: chownDirs,
+ }
+ if err := copier.Mkdir(mountPoint, extractDirectory, mkdirOptions); err != nil {
+ return errors.Wrapf(err, "error ensuring target directory exists")
+ }
+
+ // Copy each source in turn.
for _, src := range sources {
var multiErr *multierror.Error
var getErr, closeErr, renameErr, putErr error
@@ -363,7 +383,7 @@ func (b *Builder) Add(destination string, extract bool, options AddAndCopyOption
ChmodFiles: nil,
IgnoreDevices: rsystem.RunningInUserNS(),
}
- putErr = copier.Put(mountPoint, extractDirectory, putOptions, io.TeeReader(pipeReader, hasher))
+ putErr = copier.Put(extractDirectory, extractDirectory, putOptions, io.TeeReader(pipeReader, hasher))
}
hashCloser.Close()
pipeReader.Close()
@@ -498,7 +518,7 @@ func (b *Builder) Add(destination string, extract bool, options AddAndCopyOption
ChmodFiles: nil,
IgnoreDevices: rsystem.RunningInUserNS(),
}
- putErr = copier.Put(mountPoint, extractDirectory, putOptions, io.TeeReader(pipeReader, hasher))
+ putErr = copier.Put(extractDirectory, extractDirectory, putOptions, io.TeeReader(pipeReader, hasher))
}
hashCloser.Close()
pipeReader.Close()
diff --git a/vendor/github.com/containers/buildah/buildah.go b/vendor/github.com/containers/buildah/buildah.go
index dd43ea99a..77d313c58 100644
--- a/vendor/github.com/containers/buildah/buildah.go
+++ b/vendor/github.com/containers/buildah/buildah.go
@@ -28,7 +28,7 @@ const (
Package = "buildah"
// Version for the Package. Bump version in contrib/rpm/buildah.spec
// too.
- Version = "1.19.6"
+ Version = "1.19.7"
// The value we use to identify what type of information, currently a
// serialized Builder structure, we are using as per-container state.
// This should only be changed when we make incompatible changes to
diff --git a/vendor/github.com/containers/buildah/copier/copier.go b/vendor/github.com/containers/buildah/copier/copier.go
index 63cdb1974..b5e107d4b 100644
--- a/vendor/github.com/containers/buildah/copier/copier.go
+++ b/vendor/github.com/containers/buildah/copier/copier.go
@@ -70,6 +70,7 @@ func isArchivePath(path string) bool {
type requestType string
const (
+ requestEval requestType = "EVAL"
requestStat requestType = "STAT"
requestGet requestType = "GET"
requestPut requestType = "PUT"
@@ -95,6 +96,8 @@ type request struct {
func (req *request) Excludes() []string {
switch req.Request {
+ case requestEval:
+ return nil
case requestStat:
return req.StatOptions.Excludes
case requestGet:
@@ -112,6 +115,8 @@ func (req *request) Excludes() []string {
func (req *request) UIDMap() []idtools.IDMap {
switch req.Request {
+ case requestEval:
+ return nil
case requestStat:
return nil
case requestGet:
@@ -129,6 +134,8 @@ func (req *request) UIDMap() []idtools.IDMap {
func (req *request) GIDMap() []idtools.IDMap {
switch req.Request {
+ case requestEval:
+ return nil
case requestStat:
return nil
case requestGet:
@@ -148,6 +155,7 @@ func (req *request) GIDMap() []idtools.IDMap {
type response struct {
Error string `json:",omitempty"`
Stat statResponse
+ Eval evalResponse
Get getResponse
Put putResponse
Mkdir mkdirResponse
@@ -158,6 +166,11 @@ type statResponse struct {
Globs []*StatsForGlob
}
+// evalResponse encodes a response for a single Eval request.
+type evalResponse struct {
+ Evaluated string
+}
+
// StatsForGlob encode results for a single glob pattern passed to Stat().
type StatsForGlob struct {
Error string `json:",omitempty"` // error if the Glob pattern was malformed
@@ -192,6 +205,33 @@ type putResponse struct {
type mkdirResponse struct {
}
+// EvalOptions controls parts of Eval()'s behavior.
+type EvalOptions struct {
+}
+
+// Eval evaluates the directory's path, including any intermediate symbolic
+// links.
+// If root is specified and the current OS supports it, and the calling process
+// has the necessary privileges, evaluation is performed in a chrooted context.
+// If the directory is specified as an absolute path, it should either be the
+// root directory or a subdirectory of the root directory. Otherwise, the
+// directory is treated as a path relative to the root directory.
+func Eval(root string, directory string, options EvalOptions) (string, error) {
+ req := request{
+ Request: requestEval,
+ Root: root,
+ Directory: directory,
+ }
+ resp, err := copier(nil, nil, req)
+ if err != nil {
+ return "", err
+ }
+ if resp.Error != "" {
+ return "", errors.New(resp.Error)
+ }
+ return resp.Eval.Evaluated, nil
+}
+
// StatOptions controls parts of Stat()'s behavior.
type StatOptions struct {
CheckForArchives bool // check for and populate the IsArchive bit in returned values
@@ -243,6 +283,7 @@ type GetOptions struct {
StripXattrs bool // don't record extended attributes of items being copied. no effect on archives being extracted
KeepDirectoryNames bool // don't strip the top directory's basename from the paths of items in subdirectories
Rename map[string]string // rename items with the specified names, or under the specified names
+ NoDerefSymlinks bool // don't follow symlinks when globs match them
}
// Get produces an archive containing items that match the specified glob
@@ -557,6 +598,9 @@ func copierWithSubprocess(bulkReader io.Reader, bulkWriter io.Writer, req reques
return killAndReturn(err, "error encoding request for copier subprocess")
}
if err = decoder.Decode(&resp); err != nil {
+ if errors.Is(err, io.EOF) && errorBuffer.Len() > 0 {
+ return killAndReturn(errors.New(errorBuffer.String()), "error in copier subprocess")
+ }
return killAndReturn(err, "error decoding response from copier subprocess")
}
if err = encoder.Encode(&request{Request: requestQuit}); err != nil {
@@ -667,7 +711,7 @@ func copierMain() {
var err error
chrooted, err = chroot(req.Root)
if err != nil {
- fmt.Fprintf(os.Stderr, "error changing to intended-new-root directory %q: %v", req.Root, err)
+ fmt.Fprintf(os.Stderr, "%v", err)
os.Exit(1)
}
}
@@ -762,6 +806,9 @@ func copierHandler(bulkReader io.Reader, bulkWriter io.Writer, req request) (*re
switch req.Request {
default:
return nil, nil, errors.Errorf("not an implemented request type: %q", req.Request)
+ case requestEval:
+ resp := copierHandlerEval(req)
+ return resp, nil, nil
case requestStat:
resp := copierHandlerStat(req, pm)
return resp, nil, nil
@@ -870,6 +917,17 @@ func resolvePath(root, path string, pm *fileutils.PatternMatcher) (string, error
return workingPath, nil
}
+func copierHandlerEval(req request) *response {
+ errorResponse := func(fmtspec string, args ...interface{}) *response {
+ return &response{Error: fmt.Sprintf(fmtspec, args...), Eval: evalResponse{}}
+ }
+ resolvedTarget, err := resolvePath(req.Root, req.Directory, nil)
+ if err != nil {
+ return errorResponse("copier: eval: error resolving %q: %v", req.Directory, err)
+ }
+ return &response{Eval: evalResponse{Evaluated: filepath.Join(req.rootPrefix, resolvedTarget)}}
+}
+
func copierHandlerStat(req request, pm *fileutils.PatternMatcher) *response {
errorResponse := func(fmtspec string, args ...interface{}) *response {
return &response{Error: fmt.Sprintf(fmtspec, args...), Stat: statResponse{}}
@@ -1024,7 +1082,7 @@ func copierHandlerGet(bulkWriter io.Writer, req request, pm *fileutils.PatternMa
// chase links. if we hit a dead end, we should just fail
followedLinks := 0
const maxFollowedLinks = 16
- for info.Mode()&os.ModeType == os.ModeSymlink && followedLinks < maxFollowedLinks {
+ for !req.GetOptions.NoDerefSymlinks && info.Mode()&os.ModeType == os.ModeSymlink && followedLinks < maxFollowedLinks {
path, err := os.Readlink(item)
if err != nil {
continue
@@ -1139,7 +1197,8 @@ func handleRename(rename map[string]string, name string) string {
return path.Join(mappedPrefix, remainder)
}
if prefix[len(prefix)-1] == '/' {
- if mappedPrefix, ok := rename[prefix[:len(prefix)-1]]; ok {
+ prefix = prefix[:len(prefix)-1]
+ if mappedPrefix, ok := rename[prefix]; ok {
return path.Join(mappedPrefix, remainder)
}
}
diff --git a/vendor/github.com/containers/buildah/copier/syscall_unix.go b/vendor/github.com/containers/buildah/copier/syscall_unix.go
index 2c2806d0a..aa40f327c 100644
--- a/vendor/github.com/containers/buildah/copier/syscall_unix.go
+++ b/vendor/github.com/containers/buildah/copier/syscall_unix.go
@@ -3,10 +3,10 @@
package copier
import (
- "fmt"
"os"
"time"
+ "github.com/pkg/errors"
"golang.org/x/sys/unix"
)
@@ -15,13 +15,13 @@ var canChroot = os.Getuid() == 0
func chroot(root string) (bool, error) {
if canChroot {
if err := os.Chdir(root); err != nil {
- return false, fmt.Errorf("error changing to intended-new-root directory %q: %v", root, err)
+ return false, errors.Wrapf(err, "error changing to intended-new-root directory %q", root)
}
if err := unix.Chroot(root); err != nil {
- return false, fmt.Errorf("error chrooting to directory %q: %v", root, err)
+ return false, errors.Wrapf(err, "error chrooting to directory %q", root)
}
if err := os.Chdir(string(os.PathSeparator)); err != nil {
- return false, fmt.Errorf("error changing to just-became-root directory %q: %v", root, err)
+ return false, errors.Wrapf(err, "error changing to just-became-root directory %q", root)
}
return true, nil
}
diff --git a/vendor/github.com/containers/buildah/pkg/overlay/overlay.go b/vendor/github.com/containers/buildah/pkg/overlay/overlay.go
index a3e5866ee..462561983 100644
--- a/vendor/github.com/containers/buildah/pkg/overlay/overlay.go
+++ b/vendor/github.com/containers/buildah/pkg/overlay/overlay.go
@@ -77,13 +77,11 @@ func mountHelper(contentDir, source, dest string, _, _ int, graphOptions []strin
// Read-write overlay mounts want a lower, upper and a work layer.
workDir := filepath.Join(contentDir, "work")
upperDir := filepath.Join(contentDir, "upper")
- st, err := os.Stat(dest)
- if err == nil {
- if err := os.Chmod(upperDir, st.Mode()); err != nil {
- return mount, err
- }
+ st, err := os.Stat(source)
+ if err != nil {
+ return mount, err
}
- if !os.IsNotExist(err) {
+ if err := os.Chmod(upperDir, st.Mode()); err != nil {
return mount, err
}
overlayOptions = fmt.Sprintf("lowerdir=%s,upperdir=%s,workdir=%s,private", source, upperDir, workDir)
diff --git a/vendor/github.com/coreos/go-iptables/iptables/iptables.go b/vendor/github.com/coreos/go-iptables/iptables/iptables.go
index 1074275b0..8d6f68906 100644
--- a/vendor/github.com/coreos/go-iptables/iptables/iptables.go
+++ b/vendor/github.com/coreos/go-iptables/iptables/iptables.go
@@ -31,7 +31,6 @@ type Error struct {
exec.ExitError
cmd exec.Cmd
msg string
- proto Protocol
exitStatus *int //for overriding
}
@@ -51,9 +50,8 @@ func (e *Error) IsNotExist() bool {
if e.ExitStatus() != 1 {
return false
}
- cmdIptables := getIptablesCommand(e.proto)
- msgNoRuleExist := fmt.Sprintf("%s: Bad rule (does a matching rule exist in that chain?).\n", cmdIptables)
- msgNoChainExist := fmt.Sprintf("%s: No chain/target/match by that name.\n", cmdIptables)
+ msgNoRuleExist := "Bad rule (does a matching rule exist in that chain?).\n"
+ msgNoChainExist := "No chain/target/match by that name.\n"
return strings.Contains(e.msg, msgNoRuleExist) || strings.Contains(e.msg, msgNoChainExist)
}
@@ -75,6 +73,7 @@ type IPTables struct {
v2 int
v3 int
mode string // the underlying iptables operating mode, e.g. nf_tables
+ timeout int // time to wait for the iptables lock, default waits forever
}
// Stat represents a structured statistic entry.
@@ -91,19 +90,42 @@ type Stat struct {
Options string `json:"options"`
}
-// New creates a new IPTables.
-// For backwards compatibility, this always uses IPv4, i.e. "iptables".
-func New() (*IPTables, error) {
- return NewWithProtocol(ProtocolIPv4)
+type option func(*IPTables)
+
+func IPFamily(proto Protocol) option {
+ return func(ipt *IPTables) {
+ ipt.proto = proto
+ }
}
-// New creates a new IPTables for the given proto.
-// The proto will determine which command is used, either "iptables" or "ip6tables".
-func NewWithProtocol(proto Protocol) (*IPTables, error) {
- path, err := exec.LookPath(getIptablesCommand(proto))
+func Timeout(timeout int) option {
+ return func(ipt *IPTables) {
+ ipt.timeout = timeout
+ }
+}
+
+// New creates a new IPTables configured with the options passed as parameter.
+// For backwards compatibility, by default always uses IPv4 and timeout 0.
+// i.e. you can create an IPv6 IPTables using a timeout of 5 seconds passing
+// the IPFamily and Timeout options as follow:
+// ip6t := New(IPFamily(ProtocolIPv6), Timeout(5))
+func New(opts ...option) (*IPTables, error) {
+
+ ipt := &IPTables{
+ proto: ProtocolIPv4,
+ timeout: 0,
+ }
+
+ for _, opt := range opts {
+ opt(ipt)
+ }
+
+ path, err := exec.LookPath(getIptablesCommand(ipt.proto))
if err != nil {
return nil, err
}
+ ipt.path = path
+
vstring, err := getIptablesVersionString(path)
if err != nil {
return nil, fmt.Errorf("could not get iptables version: %v", err)
@@ -112,21 +134,23 @@ func NewWithProtocol(proto Protocol) (*IPTables, error) {
if err != nil {
return nil, fmt.Errorf("failed to extract iptables version from [%s]: %v", vstring, err)
}
+ ipt.v1 = v1
+ ipt.v2 = v2
+ ipt.v3 = v3
+ ipt.mode = mode
checkPresent, waitPresent, randomFullyPresent := getIptablesCommandSupport(v1, v2, v3)
+ ipt.hasCheck = checkPresent
+ ipt.hasWait = waitPresent
+ ipt.hasRandomFully = randomFullyPresent
- ipt := IPTables{
- path: path,
- proto: proto,
- hasCheck: checkPresent,
- hasWait: waitPresent,
- hasRandomFully: randomFullyPresent,
- v1: v1,
- v2: v2,
- v3: v3,
- mode: mode,
- }
- return &ipt, nil
+ return ipt, nil
+}
+
+// New creates a new IPTables for the given proto.
+// The proto will determine which command is used, either "iptables" or "ip6tables".
+func NewWithProtocol(proto Protocol) (*IPTables, error) {
+ return New(IPFamily(proto), Timeout(0))
}
// Proto returns the protocol used by this IPTables.
@@ -185,6 +209,14 @@ func (ipt *IPTables) Delete(table, chain string, rulespec ...string) error {
return ipt.run(cmd...)
}
+func (ipt *IPTables) DeleteIfExists(table, chain string, rulespec ...string) error {
+ exists, err := ipt.Exists(table, chain, rulespec...)
+ if err == nil && exists {
+ err = ipt.Delete(table, chain, rulespec...)
+ }
+ return err
+}
+
// List rules in specified table/chain
func (ipt *IPTables) List(table, chain string) ([]string, error) {
args := []string{"-t", table, "-S", chain}
@@ -222,6 +254,21 @@ func (ipt *IPTables) ListChains(table string) ([]string, error) {
return chains, nil
}
+// '-S' is fine with non existing rule index as long as the chain exists
+// therefore pass index 1 to reduce overhead for large chains
+func (ipt *IPTables) ChainExists(table, chain string) (bool, error) {
+ err := ipt.run("-t", table, "-S", chain, "1")
+ eerr, eok := err.(*Error)
+ switch {
+ case err == nil:
+ return true, nil
+ case eok && eerr.ExitStatus() == 1:
+ return false, nil
+ default:
+ return false, err
+ }
+}
+
// Stats lists rules including the byte and packet counts
func (ipt *IPTables) Stats(table, chain string) ([][]string, error) {
args := []string{"-t", table, "-L", chain, "-n", "-v", "-x"}
@@ -401,6 +448,18 @@ func (ipt *IPTables) DeleteChain(table, chain string) error {
return ipt.run("-t", table, "-X", chain)
}
+func (ipt *IPTables) ClearAndDeleteChain(table, chain string) error {
+ exists, err := ipt.ChainExists(table, chain)
+ if err != nil || !exists {
+ return err
+ }
+ err = ipt.run("-t", table, "-F", chain)
+ if err == nil {
+ err = ipt.run("-t", table, "-X", chain)
+ }
+ return err
+}
+
// ChangePolicy changes policy on chain to target
func (ipt *IPTables) ChangePolicy(table, chain, target string) error {
return ipt.run("-t", table, "-P", chain, target)
@@ -428,6 +487,9 @@ func (ipt *IPTables) runWithOutput(args []string, stdout io.Writer) error {
args = append([]string{ipt.path}, args...)
if ipt.hasWait {
args = append(args, "--wait")
+ if ipt.timeout != 0 {
+ args = append(args, strconv.Itoa(ipt.timeout))
+ }
} else {
fmu, err := newXtablesFileLock()
if err != nil {
@@ -452,7 +514,7 @@ func (ipt *IPTables) runWithOutput(args []string, stdout io.Writer) error {
if err := cmd.Run(); err != nil {
switch e := err.(type) {
case *exec.ExitError:
- return &Error{*e, cmd, stderr.String(), ipt.proto, nil}
+ return &Error{*e, cmd, stderr.String(), nil}
default:
return err
}
diff --git a/vendor/github.com/nxadm/tail/.gitignore b/vendor/github.com/nxadm/tail/.gitignore
index fa81aa93a..35d9351d3 100644
--- a/vendor/github.com/nxadm/tail/.gitignore
+++ b/vendor/github.com/nxadm/tail/.gitignore
@@ -1,2 +1,3 @@
.idea/
-.test/ \ No newline at end of file
+.test/
+examples/_* \ No newline at end of file
diff --git a/vendor/github.com/nxadm/tail/.travis.yml b/vendor/github.com/nxadm/tail/.travis.yml
deleted file mode 100644
index 95dd3bd78..000000000
--- a/vendor/github.com/nxadm/tail/.travis.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-language: go
-
-script:
- - go test -race -v ./...
-
-go:
- - "1.9"
- - "1.10"
- - "1.11"
- - "1.12"
- - "1.13"
- - tip
-
-matrix:
- allow_failures:
- - go: tip
diff --git a/vendor/github.com/nxadm/tail/CHANGES.md b/vendor/github.com/nxadm/tail/CHANGES.md
index ef1b5fbed..224e54b44 100644
--- a/vendor/github.com/nxadm/tail/CHANGES.md
+++ b/vendor/github.com/nxadm/tail/CHANGES.md
@@ -1,4 +1,14 @@
-# Version v1.4.4
+# Version v1.4.7-v1.4.8
+* Documentation updates.
+* Small linter cleanups.
+* Added example in test.
+
+# Version v1.4.6
+
+* Document the usage of Cleanup when re-reading a file (thanks to @lesovsky) for issue #18.
+* Add example directories with example and tests for issues.
+
+# Version v1.4.4-v1.4.5
* Fix of checksum problem because of forced tag. No changes to the code.
diff --git a/vendor/github.com/nxadm/tail/README.md b/vendor/github.com/nxadm/tail/README.md
index dbb6c1727..f47939c74 100644
--- a/vendor/github.com/nxadm/tail/README.md
+++ b/vendor/github.com/nxadm/tail/README.md
@@ -1,36 +1,44 @@
-[![Build Status](https://travis-ci.org/nxadm/tail.svg?branch=master)](https://travis-ci.org/nxadm/tail)
+![ci](https://github.com/nxadm/tail/workflows/ci/badge.svg)[![Go Reference](https://pkg.go.dev/badge/github.com/nxadm/tail.svg)](https://pkg.go.dev/github.com/nxadm/tail)
-This is repo is forked from the dormant upstream repo at
-[hpcloud](https://github.com/hpcloud/tail). This fork adds support for go
-modules, updates the dependencies, adds features and fixes bugs. Go 1.9 is
-the oldest compiler release supported.
+# tail functionality in Go
-# Go package for tail-ing files
+nxadm/tail provides a Go library that emulates the features of the BSD `tail`
+program. The library comes with full support for truncation/move detection as
+it is designed to work with log rotation tools. The library works on all
+operating systems supported by Go, including POSIX systems like Linux and
+*BSD, and MS Windows. Go 1.9 is the oldest compiler release supported.
-A Go package striving to emulate the features of the BSD `tail` program.
+A simple example:
```Go
-t, err := tail.TailFile("/var/log/nginx.log", tail.Config{Follow: true})
+// Create a tail
+t, err := tail.TailFile(
+ "/var/log/nginx.log", tail.Config{Follow: true, ReOpen: true})
if err != nil {
panic(err)
}
+// Print the text of each received line
for line := range t.Lines {
fmt.Println(line.Text)
}
```
-See [API documentation](http://godoc.org/github.com/nxadm/tail).
-
-## Log rotation
-
-Tail comes with full support for truncation/move detection as it is
-designed to work with log rotation tools.
+See [API documentation](https://pkg.go.dev/github.com/nxadm/tail).
## Installing
go get github.com/nxadm/tail/...
-## Windows support
+## History
+
+This project is an active, drop-in replacement for the
+[abandoned](https://en.wikipedia.org/wiki/HPE_Helion) Go tail library at
+[hpcloud](https://github.com/hpcloud/tail). Next to
+[addressing open issues/PRs of the original project](https://github.com/nxadm/tail/issues/6),
+nxadm/tail continues the development by keeping up to date with the Go toolchain
+(e.g. go modules) and dependencies, completing the documentation, adding features
+and fixing bugs.
-This package [needs assistance](https://github.com/nxadm/tail/labels/Windows) for full Windows support.
+## Examples
+Examples, e.g. used to debug an issue, are kept in the [examples directory](/examples). \ No newline at end of file
diff --git a/vendor/github.com/nxadm/tail/appveyor.yml b/vendor/github.com/nxadm/tail/appveyor.yml
deleted file mode 100644
index e149bc62d..000000000
--- a/vendor/github.com/nxadm/tail/appveyor.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-version: 0.{build}
-skip_tags: true
-cache: C:\Users\appveyor\AppData\Local\NuGet\Cache
-build_script:
-- SET GOPATH=c:\workspace
-- go test -v -race ./...
-test: off
-clone_folder: c:\workspace\src\github.com\nxadm\tail
-branches:
- only:
- - master
diff --git a/vendor/github.com/nxadm/tail/go.mod b/vendor/github.com/nxadm/tail/go.mod
index fb10d42af..5de9a6061 100644
--- a/vendor/github.com/nxadm/tail/go.mod
+++ b/vendor/github.com/nxadm/tail/go.mod
@@ -3,7 +3,6 @@ module github.com/nxadm/tail
go 1.13
require (
- github.com/fsnotify/fsnotify v1.4.7
- golang.org/x/sys v0.0.0-20190904154756-749cb33beabd // indirect
+ github.com/fsnotify/fsnotify v1.4.9
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7
)
diff --git a/vendor/github.com/nxadm/tail/go.sum b/vendor/github.com/nxadm/tail/go.sum
index b391f1904..3485daedb 100644
--- a/vendor/github.com/nxadm/tail/go.sum
+++ b/vendor/github.com/nxadm/tail/go.sum
@@ -1,6 +1,6 @@
-github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
-github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-golang.org/x/sys v0.0.0-20190904154756-749cb33beabd h1:DBH9mDw0zluJT/R+nGuV3jWFWLFaHyYZWD4tOT+cjn0=
-golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9 h1:L2auWcuQIvxz9xSEqzESnV/QN/gNRXNApHi3fYwl2w0=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
diff --git a/vendor/github.com/nxadm/tail/tail.go b/vendor/github.com/nxadm/tail/tail.go
index 58d3c4b95..37ea4411e 100644
--- a/vendor/github.com/nxadm/tail/tail.go
+++ b/vendor/github.com/nxadm/tail/tail.go
@@ -1,6 +1,12 @@
+// Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail
// Copyright (c) 2015 HPE Software Inc. All rights reserved.
// Copyright (c) 2013 ActiveState Software Inc. All rights reserved.
+//nxadm/tail provides a Go library that emulates the features of the BSD `tail`
+//program. The library comes with full support for truncation/move detection as
+//it is designed to work with log rotation tools. The library works on all
+//operating systems supported by Go, including POSIX systems like Linux and
+//*BSD, and MS Windows. Go 1.9 is the oldest compiler release supported.
package tail
import (
@@ -22,26 +28,31 @@ import (
)
var (
+ // ErrStop is returned when the tail of a file has been marked to be stopped.
ErrStop = errors.New("tail should now stop")
)
type Line struct {
- Text string
- Num int
- SeekInfo SeekInfo
- Time time.Time
- Err error // Error from tail
+ Text string // The contents of the file
+ Num int // The line number
+ SeekInfo SeekInfo // SeekInfo
+ Time time.Time // Present time
+ Err error // Error from tail
}
-// NewLine returns a Line with present time.
+// Deprecated: this function is no longer used internally and it has little of no
+// use in the API. As such, it will be removed from the API in a future major
+// release.
+//
+// NewLine returns a * pointer to a Line struct.
func NewLine(text string, lineNum int) *Line {
return &Line{text, lineNum, SeekInfo{}, time.Now(), nil}
}
-// SeekInfo represents arguments to `io.Seek`
+// SeekInfo represents arguments to io.Seek. See: https://golang.org/pkg/io/#SectionReader.Seek
type SeekInfo struct {
Offset int64
- Whence int // io.Seek*
+ Whence int
}
type logger interface {
@@ -59,26 +70,28 @@ type logger interface {
// Config is used to specify how a file must be tailed.
type Config struct {
// File-specifc
- Location *SeekInfo // Seek to this location before tailing
- ReOpen bool // Reopen recreated files (tail -F)
- MustExist bool // Fail early if the file does not exist
- Poll bool // Poll for file changes instead of using inotify
- Pipe bool // Is a named pipe (mkfifo)
- RateLimiter *ratelimiter.LeakyBucket
+ Location *SeekInfo // Tail from this location. If nil, start at the beginning of the file
+ ReOpen bool // Reopen recreated files (tail -F)
+ MustExist bool // Fail early if the file does not exist
+ Poll bool // Poll for file changes instead of using the default inotify
+ Pipe bool // The file is a named pipe (mkfifo)
// Generic IO
Follow bool // Continue looking for new lines (tail -f)
MaxLineSize int // If non-zero, split longer lines into multiple lines
- // Logger, when nil, is set to tail.DefaultLogger
- // To disable logging: set field to tail.DiscardingLogger
+ // Optionally, use a ratelimiter (e.g. created by the ratelimiter/NewLeakyBucket function)
+ RateLimiter *ratelimiter.LeakyBucket
+
+ // Optionally use a Logger. When nil, the Logger is set to tail.DefaultLogger.
+ // To disable logging, set it to tail.DiscardingLogger
Logger logger
}
type Tail struct {
- Filename string
- Lines chan *Line
- Config
+ Filename string // The filename
+ Lines chan *Line // A consumable channel of *Line
+ Config // Tail.Configuration
file *os.File
reader *bufio.Reader
@@ -93,16 +106,17 @@ type Tail struct {
}
var (
- // DefaultLogger is used when Config.Logger == nil
+ // DefaultLogger logs to os.Stderr and it is used when Config.Logger == nil
DefaultLogger = log.New(os.Stderr, "", log.LstdFlags)
// DiscardingLogger can be used to disable logging output
DiscardingLogger = log.New(ioutil.Discard, "", 0)
)
-// TailFile begins tailing the file. Output stream is made available
-// via the `Tail.Lines` channel. To handle errors during tailing,
-// invoke the `Wait` or `Err` method after finishing reading from the
-// `Lines` channel.
+// TailFile begins tailing the file. And returns a pointer to a Tail struct
+// and an error. An output stream is made available via the Tail.Lines
+// channel (e.g. to be looped and printed). To handle errors during tailing,
+// after finishing reading from the Lines channel, invoke the `Wait` or `Err`
+// method on the returned *Tail.
func TailFile(filename string, config Config) (*Tail, error) {
if config.ReOpen && !config.Follow {
util.Fatal("cannot set ReOpen without Follow.")
@@ -138,10 +152,9 @@ func TailFile(filename string, config Config) (*Tail, error) {
return t, nil
}
-// Tell returns the file's current position, like stdio's ftell().
-// But this value is not very accurate.
-// One line from the chan(tail.Lines) may have been read,
-// so it may have lost one line.
+// Tell returns the file's current position, like stdio's ftell() and an error.
+// Beware that this value may not be completely accurate because one line from
+// the chan(tail.Lines) may have been read already.
func (tail *Tail) Tell() (offset int64, err error) {
if tail.file == nil {
return
@@ -167,7 +180,8 @@ func (tail *Tail) Stop() error {
return tail.Wait()
}
-// StopAtEOF stops tailing as soon as the end of the file is reached.
+// StopAtEOF stops tailing as soon as the end of the file is reached. The function
+// returns an error,
func (tail *Tail) StopAtEOF() error {
tail.Kill(errStopAtEOF)
return tail.Wait()
@@ -435,6 +449,7 @@ func (tail *Tail) sendLine(line string) bool {
// Cleanup removes inotify watches added by the tail package. This function is
// meant to be invoked from a process's exit handler. Linux kernel may not
// automatically remove inotify watches after the process exits.
+// If you plan to re-read a file, don't call Cleanup in between.
func (tail *Tail) Cleanup() {
watch.Cleanup(tail.Filename)
}
diff --git a/vendor/github.com/nxadm/tail/tail_posix.go b/vendor/github.com/nxadm/tail/tail_posix.go
index 1b94520ec..23e071dea 100644
--- a/vendor/github.com/nxadm/tail/tail_posix.go
+++ b/vendor/github.com/nxadm/tail/tail_posix.go
@@ -1,3 +1,4 @@
+// Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail
// +build !windows
package tail
@@ -6,6 +7,11 @@ import (
"os"
)
+// Deprecated: this function is only useful internally and, as such,
+// it will be removed from the API in a future major release.
+//
+// OpenFile proxies a os.Open call for a file so it can be correctly tailed
+// on POSIX and non-POSIX OSes like MS Windows.
func OpenFile(name string) (file *os.File, err error) {
return os.Open(name)
}
diff --git a/vendor/github.com/nxadm/tail/tail_windows.go b/vendor/github.com/nxadm/tail/tail_windows.go
index 4aaceea28..da0d2f39c 100644
--- a/vendor/github.com/nxadm/tail/tail_windows.go
+++ b/vendor/github.com/nxadm/tail/tail_windows.go
@@ -1,12 +1,19 @@
+// Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail
// +build windows
package tail
import (
- "github.com/nxadm/tail/winfile"
"os"
+
+ "github.com/nxadm/tail/winfile"
)
+// Deprecated: this function is only useful internally and, as such,
+// it will be removed from the API in a future major release.
+//
+// OpenFile proxies a os.Open call for a file so it can be correctly tailed
+// on POSIX and non-POSIX OSes like MS Windows.
func OpenFile(name string) (file *os.File, err error) {
return winfile.OpenFile(name, os.O_RDONLY, 0)
}
diff --git a/vendor/github.com/nxadm/tail/util/util.go b/vendor/github.com/nxadm/tail/util/util.go
index 2ba0ed71c..b64caa212 100644
--- a/vendor/github.com/nxadm/tail/util/util.go
+++ b/vendor/github.com/nxadm/tail/util/util.go
@@ -1,3 +1,4 @@
+// Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail
// Copyright (c) 2015 HPE Software Inc. All rights reserved.
// Copyright (c) 2013 ActiveState Software Inc. All rights reserved.
diff --git a/vendor/github.com/nxadm/tail/watch/filechanges.go b/vendor/github.com/nxadm/tail/watch/filechanges.go
index f80aead9a..5b65f42ae 100644
--- a/vendor/github.com/nxadm/tail/watch/filechanges.go
+++ b/vendor/github.com/nxadm/tail/watch/filechanges.go
@@ -1,3 +1,4 @@
+// Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail
package watch
type FileChanges struct {
diff --git a/vendor/github.com/nxadm/tail/watch/inotify.go b/vendor/github.com/nxadm/tail/watch/inotify.go
index 439921810..cbd11ad8d 100644
--- a/vendor/github.com/nxadm/tail/watch/inotify.go
+++ b/vendor/github.com/nxadm/tail/watch/inotify.go
@@ -1,3 +1,4 @@
+// Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail
// Copyright (c) 2015 HPE Software Inc. All rights reserved.
// Copyright (c) 2013 ActiveState Software Inc. All rights reserved.
diff --git a/vendor/github.com/nxadm/tail/watch/inotify_tracker.go b/vendor/github.com/nxadm/tail/watch/inotify_tracker.go
index a94bcd4cb..cb9572a03 100644
--- a/vendor/github.com/nxadm/tail/watch/inotify_tracker.go
+++ b/vendor/github.com/nxadm/tail/watch/inotify_tracker.go
@@ -1,3 +1,4 @@
+// Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail
// Copyright (c) 2015 HPE Software Inc. All rights reserved.
// Copyright (c) 2013 ActiveState Software Inc. All rights reserved.
diff --git a/vendor/github.com/nxadm/tail/watch/polling.go b/vendor/github.com/nxadm/tail/watch/polling.go
index fb1706908..74e10aa42 100644
--- a/vendor/github.com/nxadm/tail/watch/polling.go
+++ b/vendor/github.com/nxadm/tail/watch/polling.go
@@ -1,3 +1,4 @@
+// Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail
// Copyright (c) 2015 HPE Software Inc. All rights reserved.
// Copyright (c) 2013 ActiveState Software Inc. All rights reserved.
diff --git a/vendor/github.com/nxadm/tail/watch/watch.go b/vendor/github.com/nxadm/tail/watch/watch.go
index 2e1783ef0..2b5112805 100644
--- a/vendor/github.com/nxadm/tail/watch/watch.go
+++ b/vendor/github.com/nxadm/tail/watch/watch.go
@@ -1,3 +1,4 @@
+// Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail
// Copyright (c) 2015 HPE Software Inc. All rights reserved.
// Copyright (c) 2013 ActiveState Software Inc. All rights reserved.
diff --git a/vendor/github.com/nxadm/tail/winfile/winfile.go b/vendor/github.com/nxadm/tail/winfile/winfile.go
index aa7e7bc5d..4562ac7c2 100644
--- a/vendor/github.com/nxadm/tail/winfile/winfile.go
+++ b/vendor/github.com/nxadm/tail/winfile/winfile.go
@@ -1,3 +1,4 @@
+// Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail
// +build windows
package winfile
diff --git a/vendor/github.com/onsi/ginkgo/.travis.yml b/vendor/github.com/onsi/ginkgo/.travis.yml
index 8b2883f97..ea0966d5b 100644
--- a/vendor/github.com/onsi/ginkgo/.travis.yml
+++ b/vendor/github.com/onsi/ginkgo/.travis.yml
@@ -1,8 +1,8 @@
language: go
go:
- - 1.14.x
- - 1.15.x
- tip
+ - 1.16.x
+ - 1.15.x
cache:
directories:
diff --git a/vendor/github.com/onsi/ginkgo/CHANGELOG.md b/vendor/github.com/onsi/ginkgo/CHANGELOG.md
index bf51fe9cd..686189dd6 100644
--- a/vendor/github.com/onsi/ginkgo/CHANGELOG.md
+++ b/vendor/github.com/onsi/ginkgo/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.15.1
+
+### Fixes
+- reporters/junit: Use `system-out` element instead of `passed` (#769) [9eda305]
+
## 1.15.0
### Features
diff --git a/vendor/github.com/onsi/ginkgo/README.md b/vendor/github.com/onsi/ginkgo/README.md
index 64e85eee0..5d56adba0 100644
--- a/vendor/github.com/onsi/ginkgo/README.md
+++ b/vendor/github.com/onsi/ginkgo/README.md
@@ -1,6 +1,7 @@
![Ginkgo: A Go BDD Testing Framework](https://onsi.github.io/ginkgo/images/ginkgo.png)
[![Build Status](https://travis-ci.org/onsi/ginkgo.svg?branch=master)](https://travis-ci.org/onsi/ginkgo)
+[![test](https://github.com/onsi/ginkgo/workflows/test/badge.svg?branch=master)](https://github.com/onsi/ginkgo/actions?query=workflow%3Atest+branch%3Amaster)
Jump to the [docs](https://onsi.github.io/ginkgo/) | [中文文档](https://ke-chain.github.io/ginkgodoc) to learn more. To start rolling your Ginkgo tests *now* [keep reading](#set-me-up)!
diff --git a/vendor/github.com/onsi/ginkgo/config/config.go b/vendor/github.com/onsi/ginkgo/config/config.go
index 8c177811e..8a2479824 100644
--- a/vendor/github.com/onsi/ginkgo/config/config.go
+++ b/vendor/github.com/onsi/ginkgo/config/config.go
@@ -20,7 +20,7 @@ import (
"fmt"
)
-const VERSION = "1.15.0"
+const VERSION = "1.15.1"
type GinkgoConfigType struct {
RandomSeed int64
diff --git a/vendor/github.com/onsi/ginkgo/go.mod b/vendor/github.com/onsi/ginkgo/go.mod
index 655060cf7..738a2f107 100644
--- a/vendor/github.com/onsi/ginkgo/go.mod
+++ b/vendor/github.com/onsi/ginkgo/go.mod
@@ -1,11 +1,10 @@
module github.com/onsi/ginkgo
+go 1.15
+
require (
- github.com/fsnotify/fsnotify v1.4.9 // indirect
- github.com/nxadm/tail v1.4.4
+ github.com/nxadm/tail v1.4.8
github.com/onsi/gomega v1.10.1
golang.org/x/sys v0.0.0-20210112080510-489259a85091
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e
)
-
-go 1.13
diff --git a/vendor/github.com/onsi/ginkgo/go.sum b/vendor/github.com/onsi/ginkgo/go.sum
index 56a493f9d..8fdaac400 100644
--- a/vendor/github.com/onsi/ginkgo/go.sum
+++ b/vendor/github.com/onsi/ginkgo/go.sum
@@ -14,8 +14,9 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
+github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
+github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
diff --git a/vendor/github.com/onsi/ginkgo/reporters/junit_reporter.go b/vendor/github.com/onsi/ginkgo/reporters/junit_reporter.go
index 963caaaff..01ddca6e1 100644
--- a/vendor/github.com/onsi/ginkgo/reporters/junit_reporter.go
+++ b/vendor/github.com/onsi/ginkgo/reporters/junit_reporter.go
@@ -33,17 +33,12 @@ type JUnitTestSuite struct {
type JUnitTestCase struct {
Name string `xml:"name,attr"`
ClassName string `xml:"classname,attr"`
- PassedMessage *JUnitPassedMessage `xml:"passed,omitempty"`
FailureMessage *JUnitFailureMessage `xml:"failure,omitempty"`
Skipped *JUnitSkipped `xml:"skipped,omitempty"`
Time float64 `xml:"time,attr"`
SystemOut string `xml:"system-out,omitempty"`
}
-type JUnitPassedMessage struct {
- Message string `xml:",chardata"`
-}
-
type JUnitFailureMessage struct {
Type string `xml:"type,attr"`
Message string `xml:",chardata"`
@@ -114,9 +109,7 @@ func (reporter *JUnitReporter) SpecDidComplete(specSummary *types.SpecSummary) {
ClassName: reporter.testSuiteName,
}
if reporter.ReporterConfig.ReportPassed && specSummary.State == types.SpecStatePassed {
- testCase.PassedMessage = &JUnitPassedMessage{
- Message: specSummary.CapturedOutput,
- }
+ testCase.SystemOut = specSummary.CapturedOutput
}
if specSummary.State == types.SpecStateFailed || specSummary.State == types.SpecStateTimedOut || specSummary.State == types.SpecStatePanicked {
testCase.FailureMessage = &JUnitFailureMessage{
diff --git a/vendor/github.com/onsi/gomega/.travis.yml b/vendor/github.com/onsi/gomega/.travis.yml
index 348e3014c..6543dc553 100644
--- a/vendor/github.com/onsi/gomega/.travis.yml
+++ b/vendor/github.com/onsi/gomega/.travis.yml
@@ -1,20 +1,18 @@
language: go
arch:
- - amd64
- - ppc64le
+ - amd64
+ - ppc64le
go:
- - 1.14.x
- - 1.15.x
- gotip
+ - 1.16.x
+ - 1.15.x
env:
- GO111MODULE=on
-install:
- - go get -v ./...
- - go build ./...
- - go get github.com/onsi/ginkgo
- - go install github.com/onsi/ginkgo/ginkgo
+install: skip
-script: make test
+script:
+ - go mod tidy && git diff --exit-code go.mod go.sum
+ - make test
diff --git a/vendor/github.com/onsi/gomega/CHANGELOG.md b/vendor/github.com/onsi/gomega/CHANGELOG.md
index 16095fa3c..33bc75509 100644
--- a/vendor/github.com/onsi/gomega/CHANGELOG.md
+++ b/vendor/github.com/onsi/gomega/CHANGELOG.md
@@ -1,3 +1,16 @@
+## 1.11.0
+
+### Features
+- feature: add index to gstruct element func (#419) [334e00d]
+- feat(gexec) Add CompileTest functions. Close #410 (#411) [47c613f]
+
+### Fixes
+- Check more carefully for nils in WithTransform (#423) [3c60a15]
+- fix: typo in Makefile [b82522a]
+- Allow WithTransform function to accept a nil value (#422) [b75d2f2]
+- fix: print value type for interface{} containers (#409) [f08e2dc]
+- fix(BeElementOf): consistently flatten expected values [1fa9468]
+
## 1.10.5
### Fixes
diff --git a/vendor/github.com/onsi/gomega/Dockerfile b/vendor/github.com/onsi/gomega/Dockerfile
new file mode 100644
index 000000000..11c7e63e7
--- /dev/null
+++ b/vendor/github.com/onsi/gomega/Dockerfile
@@ -0,0 +1 @@
+FROM golang:1.15
diff --git a/vendor/github.com/onsi/gomega/Makefile b/vendor/github.com/onsi/gomega/Makefile
index c92cd56e3..1c6d107e1 100644
--- a/vendor/github.com/onsi/gomega/Makefile
+++ b/vendor/github.com/onsi/gomega/Makefile
@@ -1,6 +1,33 @@
-test:
- [ -z "`gofmt -s -w -l -e .`" ]
- go vet
- ginkgo -p -r --randomizeAllSpecs --failOnPending --randomizeSuites --race
+###### Help ###################################################################
-.PHONY: test
+.DEFAULT_GOAL = help
+
+.PHONY: help
+
+help: ## list Makefile targets
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
+
+###### Targets ################################################################
+
+test: version download fmt vet ginkgo ## Runs all build, static analysis, and test steps
+
+download: ## Download dependencies
+ go mod download
+
+vet: ## Run static code analysis
+ go vet ./...
+
+ginkgo: ## Run tests using Ginkgo
+ go run github.com/onsi/ginkgo/ginkgo -p -r --randomizeAllSpecs --failOnPending --randomizeSuites --race
+
+fmt: ## Checks that the code is formatted correcty
+ @@if [ -n "$$(gofmt -s -e -l -d .)" ]; then \
+ echo "gofmt check failed: run 'gofmt -s -e -l -w .'"; \
+ exit 1; \
+ fi
+
+docker_test: ## Run tests in a container via docker-compose
+ docker-compose build test && docker-compose run --rm test make test
+
+version: ## Display the version of Go
+ @@go version
diff --git a/vendor/github.com/onsi/gomega/docker-compose.yaml b/vendor/github.com/onsi/gomega/docker-compose.yaml
new file mode 100644
index 000000000..f37496143
--- /dev/null
+++ b/vendor/github.com/onsi/gomega/docker-compose.yaml
@@ -0,0 +1,10 @@
+version: '3.0'
+
+services:
+ test:
+ build:
+ dockerfile: Dockerfile
+ context: .
+ working_dir: /app
+ volumes:
+ - ${PWD}:/app
diff --git a/vendor/github.com/onsi/gomega/format/format.go b/vendor/github.com/onsi/gomega/format/format.go
index e59d7d75b..4f7462ab1 100644
--- a/vendor/github.com/onsi/gomega/format/format.go
+++ b/vendor/github.com/onsi/gomega/format/format.go
@@ -7,6 +7,7 @@ Gomega's format package pretty-prints objects. It explores input objects recurs
package format
import (
+ "context"
"fmt"
"reflect"
"strconv"
@@ -44,16 +45,7 @@ var TruncateThreshold uint = 50
// after the first diff location in a truncated string assertion error message.
var CharactersAroundMismatchToInclude uint = 5
-// Ctx interface defined here to keep backwards compatibility with go < 1.7
-// It matches the context.Context interface
-type Ctx interface {
- Deadline() (deadline time.Time, ok bool)
- Done() <-chan struct{}
- Err() error
- Value(key interface{}) interface{}
-}
-
-var contextType = reflect.TypeOf((*Ctx)(nil)).Elem()
+var contextType = reflect.TypeOf((*context.Context)(nil)).Elem()
var timeType = reflect.TypeOf(time.Time{})
//The default indentation string emitted by the format package
@@ -181,7 +173,7 @@ Set PrintContextObjects to true to print the content of objects implementing con
func Object(object interface{}, indentation uint) string {
indent := strings.Repeat(Indent, int(indentation))
value := reflect.ValueOf(object)
- return fmt.Sprintf("%s<%s>: %s", indent, formatType(object), formatValue(value, indentation))
+ return fmt.Sprintf("%s<%s>: %s", indent, formatType(value), formatValue(value, indentation))
}
/*
@@ -201,25 +193,20 @@ func IndentString(s string, indentation uint) string {
return result
}
-func formatType(object interface{}) string {
- t := reflect.TypeOf(object)
- if t == nil {
+func formatType(v reflect.Value) string {
+ switch v.Kind() {
+ case reflect.Invalid:
return "nil"
- }
- switch t.Kind() {
case reflect.Chan:
- v := reflect.ValueOf(object)
- return fmt.Sprintf("%T | len:%d, cap:%d", object, v.Len(), v.Cap())
+ return fmt.Sprintf("%s | len:%d, cap:%d", v.Type(), v.Len(), v.Cap())
case reflect.Ptr:
- return fmt.Sprintf("%T | %p", object, object)
+ return fmt.Sprintf("%s | 0x%x", v.Type(), v.Pointer())
case reflect.Slice:
- v := reflect.ValueOf(object)
- return fmt.Sprintf("%T | len:%d, cap:%d", object, v.Len(), v.Cap())
+ return fmt.Sprintf("%s | len:%d, cap:%d", v.Type(), v.Len(), v.Cap())
case reflect.Map:
- v := reflect.ValueOf(object)
- return fmt.Sprintf("%T | len:%d", object, v.Len())
+ return fmt.Sprintf("%s | len:%d", v.Type(), v.Len())
default:
- return fmt.Sprintf("%T", object)
+ return fmt.Sprintf("%s", v.Type())
}
}
@@ -284,7 +271,7 @@ func formatValue(value reflect.Value, indentation uint) string {
}
return formatStruct(value, indentation)
case reflect.Interface:
- return formatValue(value.Elem(), indentation)
+ return formatInterface(value, indentation)
default:
if value.CanInterface() {
return fmt.Sprintf("%#v", value.Interface())
@@ -379,6 +366,10 @@ func formatStruct(v reflect.Value, indentation uint) string {
return fmt.Sprintf("{%s}", strings.Join(result, ", "))
}
+func formatInterface(v reflect.Value, indentation uint) string {
+ return fmt.Sprintf("<%s>%s", formatType(v.Elem()), formatValue(v.Elem(), indentation))
+}
+
func isNilValue(a reflect.Value) bool {
switch a.Kind() {
case reflect.Invalid:
diff --git a/vendor/github.com/onsi/gomega/gexec/build.go b/vendor/github.com/onsi/gomega/gexec/build.go
index 741d845f4..c7aba62b7 100644
--- a/vendor/github.com/onsi/gomega/gexec/build.go
+++ b/vendor/github.com/onsi/gomega/gexec/build.go
@@ -3,6 +3,8 @@
package gexec
import (
+ "crypto/md5"
+ "encoding/hex"
"errors"
"fmt"
"go/build"
@@ -46,6 +48,135 @@ func BuildIn(gopath string, packagePath string, args ...string) (compiledPath st
return doBuild(gopath, packagePath, nil, args...)
}
+func doBuild(gopath, packagePath string, env []string, args ...string) (compiledPath string, err error) {
+ executable, err := newExecutablePath(gopath, packagePath)
+ if err != nil {
+ return "", err
+ }
+
+ cmdArgs := append([]string{"build"}, args...)
+ cmdArgs = append(cmdArgs, "-o", executable, packagePath)
+
+ build := exec.Command("go", cmdArgs...)
+ build.Env = replaceGoPath(os.Environ(), gopath)
+ build.Env = append(build.Env, env...)
+
+ output, err := build.CombinedOutput()
+ if err != nil {
+ return "", fmt.Errorf("Failed to build %s:\n\nError:\n%s\n\nOutput:\n%s", packagePath, err, string(output))
+ }
+
+ return executable, nil
+}
+
+/*
+CompileTest uses go test to compile the test package at packagePath. The resulting binary is saved off in a temporary directory.
+A path pointing to this binary is returned.
+
+CompileTest uses the $GOPATH set in your environment. If $GOPATH is not set and you are using Go 1.8+,
+it will use the default GOPATH instead. It passes the variadic args on to `go test`.
+*/
+func CompileTest(packagePath string, args ...string) (compiledPath string, err error) {
+ return doCompileTest(build.Default.GOPATH, packagePath, nil, args...)
+}
+
+/*
+GetAndCompileTest is identical to CompileTest but `go get` the package before compiling tests.
+*/
+func GetAndCompileTest(packagePath string, args ...string) (compiledPath string, err error) {
+ if err := getForTest(build.Default.GOPATH, packagePath, nil); err != nil {
+ return "", err
+ }
+
+ return doCompileTest(build.Default.GOPATH, packagePath, nil, args...)
+}
+
+/*
+CompileTestWithEnvironment is identical to CompileTest but allows you to specify env vars to be set at build time.
+*/
+func CompileTestWithEnvironment(packagePath string, env []string, args ...string) (compiledPath string, err error) {
+ return doCompileTest(build.Default.GOPATH, packagePath, env, args...)
+}
+
+/*
+GetAndCompileTestWithEnvironment is identical to GetAndCompileTest but allows you to specify env vars to be set at build time.
+*/
+func GetAndCompileTestWithEnvironment(packagePath string, env []string, args ...string) (compiledPath string, err error) {
+ if err := getForTest(build.Default.GOPATH, packagePath, env); err != nil {
+ return "", err
+ }
+
+ return doCompileTest(build.Default.GOPATH, packagePath, env, args...)
+}
+
+/*
+CompileTestIn is identical to CompileTest but allows you to specify a custom $GOPATH (the first argument).
+*/
+func CompileTestIn(gopath string, packagePath string, args ...string) (compiledPath string, err error) {
+ return doCompileTest(gopath, packagePath, nil, args...)
+}
+
+/*
+GetAndCompileTestIn is identical to GetAndCompileTest but allows you to specify a custom $GOPATH (the first argument).
+*/
+func GetAndCompileTestIn(gopath string, packagePath string, args ...string) (compiledPath string, err error) {
+ if err := getForTest(gopath, packagePath, nil); err != nil {
+ return "", err
+ }
+
+ return doCompileTest(gopath, packagePath, nil, args...)
+}
+
+func isLocalPackage(packagePath string) bool {
+ return strings.HasPrefix(packagePath, ".")
+}
+
+func getForTest(gopath, packagePath string, env []string) error {
+ if isLocalPackage(packagePath) {
+ return nil
+ }
+
+ return doGet(gopath, packagePath, env, "-t")
+}
+
+func doGet(gopath, packagePath string, env []string, args ...string) error {
+ args = append(args, packagePath)
+ args = append([]string{"get"}, args...)
+
+ goGet := exec.Command("go", args...)
+ goGet.Dir = gopath
+ goGet.Env = replaceGoPath(os.Environ(), gopath)
+ goGet.Env = append(goGet.Env, env...)
+
+ output, err := goGet.CombinedOutput()
+ if err != nil {
+ return fmt.Errorf("Failed to get %s:\n\nError:\n%s\n\nOutput:\n%s", packagePath, err, string(output))
+ }
+
+ return nil
+}
+
+func doCompileTest(gopath, packagePath string, env []string, args ...string) (compiledPath string, err error) {
+ executable, err := newExecutablePath(gopath, packagePath, ".test")
+ if err != nil {
+ return "", err
+ }
+
+ cmdArgs := append([]string{"test", "-c"}, args...)
+ cmdArgs = append(cmdArgs, "-o", executable, packagePath)
+
+ build := exec.Command("go", cmdArgs...)
+ build.Env = replaceGoPath(os.Environ(), gopath)
+ build.Env = append(build.Env, env...)
+
+ output, err := build.CombinedOutput()
+ if err != nil {
+ return "", fmt.Errorf("Failed to build %s:\n\nError:\n%s\n\nOutput:\n%s", packagePath, err, string(output))
+ }
+
+ return executable, nil
+}
+
func replaceGoPath(environ []string, newGoPath string) []string {
newEnviron := []string{}
for _, v := range environ {
@@ -56,7 +187,7 @@ func replaceGoPath(environ []string, newGoPath string) []string {
return append(newEnviron, "GOPATH="+newGoPath)
}
-func doBuild(gopath, packagePath string, env []string, args ...string) (compiledPath string, err error) {
+func newExecutablePath(gopath, packagePath string, suffixes ...string) (string, error) {
tmpDir, err := temporaryDirectory()
if err != nil {
return "", err
@@ -66,23 +197,14 @@ func doBuild(gopath, packagePath string, env []string, args ...string) (compiled
return "", errors.New("$GOPATH not provided when building " + packagePath)
}
- executable := filepath.Join(tmpDir, path.Base(packagePath))
+ hash := md5.Sum([]byte(packagePath))
+ filename := fmt.Sprintf("%s-%x%s", path.Base(packagePath), hex.EncodeToString(hash[:]), strings.Join(suffixes, ""))
+ executable := filepath.Join(tmpDir, filename)
+
if runtime.GOOS == "windows" {
executable += ".exe"
}
- cmdArgs := append([]string{"build"}, args...)
- cmdArgs = append(cmdArgs, "-o", executable, packagePath)
-
- build := exec.Command("go", cmdArgs...)
- build.Env = replaceGoPath(os.Environ(), gopath)
- build.Env = append(build.Env, env...)
-
- output, err := build.CombinedOutput()
- if err != nil {
- return "", fmt.Errorf("Failed to build %s:\n\nError:\n%s\n\nOutput:\n%s", packagePath, err, string(output))
- }
-
return executable, nil
}
diff --git a/vendor/github.com/onsi/gomega/go.mod b/vendor/github.com/onsi/gomega/go.mod
index 6f853a579..8731e6ac2 100644
--- a/vendor/github.com/onsi/gomega/go.mod
+++ b/vendor/github.com/onsi/gomega/go.mod
@@ -3,8 +3,8 @@ module github.com/onsi/gomega
go 1.14
require (
- github.com/golang/protobuf v1.4.2
+ github.com/golang/protobuf v1.4.3
github.com/onsi/ginkgo v1.12.1
golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb
- gopkg.in/yaml.v2 v2.3.0
+ gopkg.in/yaml.v2 v2.4.0
)
diff --git a/vendor/github.com/onsi/gomega/go.sum b/vendor/github.com/onsi/gomega/go.sum
index 54eeacd2b..df224db95 100644
--- a/vendor/github.com/onsi/gomega/go.sum
+++ b/vendor/github.com/onsi/gomega/go.sum
@@ -1,46 +1,38 @@
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
-github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
-github.com/onsi/ginkgo v1.6.0 h1:Ix8l273rp3QzYgXSR+c8d1fTG7UPgYkOSELPhiY/YGw=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.1 h1:mFwc4LvZ0xpSvDZ3E+k8Yte0hLOMxXUlP+yXtJqkYfQ=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/net v0.0.0-20180906233101-161cd47e91fd h1:nTDtHvHSdCn1m6ITfMRqtOd/9+7a3s8RBNOZ3eYZzJA=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb h1:eBmm0M9fYhWpKZLjQUUKka/LtIxf46G4fxeEz5KJr9U=
golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e h1:o3PsSEY8E4eXWkXrIP9YJALUkVZqzHJT5DOasTyn8Vs=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e h1:N7DeIrjYszNmSW409R3frPPwglRwMkXSBzwVbkOjLLA=
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -56,11 +48,9 @@ google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyz
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
-gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
diff --git a/vendor/github.com/onsi/gomega/gomega_dsl.go b/vendor/github.com/onsi/gomega/gomega_dsl.go
index 1bc5288b8..41bcda74c 100644
--- a/vendor/github.com/onsi/gomega/gomega_dsl.go
+++ b/vendor/github.com/onsi/gomega/gomega_dsl.go
@@ -24,7 +24,7 @@ import (
"github.com/onsi/gomega/types"
)
-const GOMEGA_VERSION = "1.10.5"
+const GOMEGA_VERSION = "1.11.0"
const nilFailHandlerPanic = `You are trying to make an assertion, but Gomega's fail handler is nil.
If you're using Ginkgo then you probably forgot to put your assertion in an It().
diff --git a/vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go b/vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go
index 1f9d7a8e6..9ee75a5d5 100644
--- a/vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go
+++ b/vendor/github.com/onsi/gomega/matchers/be_element_of_matcher.go
@@ -18,23 +18,9 @@ func (matcher *BeElementOfMatcher) Match(actual interface{}) (success bool, err
return false, fmt.Errorf("BeElement matcher expects actual to be typed")
}
- length := len(matcher.Elements)
- valueAt := func(i int) interface{} {
- return matcher.Elements[i]
- }
- // Special handling of a single element of type Array or Slice
- if length == 1 && isArrayOrSlice(valueAt(0)) {
- element := valueAt(0)
- value := reflect.ValueOf(element)
- length = value.Len()
- valueAt = func(i int) interface{} {
- return value.Index(i).Interface()
- }
- }
-
var lastError error
- for i := 0; i < length; i++ {
- matcher := &EqualMatcher{Expected: valueAt(i)}
+ for _, m := range flatten(matcher.Elements) {
+ matcher := &EqualMatcher{Expected: m}
success, err := matcher.Match(actual)
if err != nil {
lastError = err
@@ -49,9 +35,9 @@ func (matcher *BeElementOfMatcher) Match(actual interface{}) (success bool, err
}
func (matcher *BeElementOfMatcher) FailureMessage(actual interface{}) (message string) {
- return format.Message(actual, "to be an element of", matcher.Elements)
+ return format.Message(actual, "to be an element of", presentable(matcher.Elements))
}
func (matcher *BeElementOfMatcher) NegatedFailureMessage(actual interface{}) (message string) {
- return format.Message(actual, "not to be an element of", matcher.Elements)
+ return format.Message(actual, "not to be an element of", presentable(matcher.Elements))
}
diff --git a/vendor/github.com/onsi/gomega/matchers/with_transform.go b/vendor/github.com/onsi/gomega/matchers/with_transform.go
index 8e58d8a0f..f3dec9101 100644
--- a/vendor/github.com/onsi/gomega/matchers/with_transform.go
+++ b/vendor/github.com/onsi/gomega/matchers/with_transform.go
@@ -40,15 +40,24 @@ func NewWithTransformMatcher(transform interface{}, matcher types.GomegaMatcher)
}
func (m *WithTransformMatcher) Match(actual interface{}) (bool, error) {
- // return error if actual's type is incompatible with Transform function's argument type
- actualType := reflect.TypeOf(actual)
- if !actualType.AssignableTo(m.transformArgType) {
- return false, fmt.Errorf("Transform function expects '%s' but we have '%s'", m.transformArgType, actualType)
+ // prepare a parameter to pass to the Transform function
+ var param reflect.Value
+ if actual != nil && reflect.TypeOf(actual).AssignableTo(m.transformArgType) {
+ // The dynamic type of actual is compatible with the transform argument.
+ param = reflect.ValueOf(actual)
+
+ } else if actual == nil && m.transformArgType.Kind() == reflect.Interface {
+ // The dynamic type of actual is unknown, so there's no way to make its
+ // reflect.Value. Create a nil of the transform argument, which is known.
+ param = reflect.Zero(m.transformArgType)
+
+ } else {
+ return false, fmt.Errorf("Transform function expects '%s' but we have '%T'", m.transformArgType, actual)
}
// call the Transform function with `actual`
fn := reflect.ValueOf(m.Transform)
- result := fn.Call([]reflect.Value{reflect.ValueOf(actual)})
+ result := fn.Call([]reflect.Value{param})
m.transformedValue = result[0].Interface() // expect exactly one value
return m.Matcher.Match(m.transformedValue)
diff --git a/vendor/github.com/opentracing/opentracing-go/.gitignore b/vendor/github.com/opentracing/opentracing-go/.gitignore
deleted file mode 100644
index c57100a59..000000000
--- a/vendor/github.com/opentracing/opentracing-go/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-coverage.txt
diff --git a/vendor/github.com/opentracing/opentracing-go/.travis.yml b/vendor/github.com/opentracing/opentracing-go/.travis.yml
deleted file mode 100644
index b950e4296..000000000
--- a/vendor/github.com/opentracing/opentracing-go/.travis.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-language: go
-
-matrix:
- include:
- - go: "1.13.x"
- - go: "1.14.x"
- - go: "tip"
- env:
- - LINT=true
- - COVERAGE=true
-
-install:
- - if [ "$LINT" == true ]; then go get -u golang.org/x/lint/golint/... ; else echo 'skipping lint'; fi
- - go get -u github.com/stretchr/testify/...
-
-script:
- - make test
- - go build ./...
- - if [ "$LINT" == true ]; then make lint ; else echo 'skipping lint'; fi
- - if [ "$COVERAGE" == true ]; then make cover && bash <(curl -s https://codecov.io/bash) ; else echo 'skipping coverage'; fi
diff --git a/vendor/github.com/opentracing/opentracing-go/CHANGELOG.md b/vendor/github.com/opentracing/opentracing-go/CHANGELOG.md
deleted file mode 100644
index d3bfcf623..000000000
--- a/vendor/github.com/opentracing/opentracing-go/CHANGELOG.md
+++ /dev/null
@@ -1,63 +0,0 @@
-Changes by Version
-==================
-
-
-1.2.0 (2020-07-01)
--------------------
-
-* Restore the ability to reset the current span in context to nil (#231) -- Yuri Shkuro
-* Use error.object per OpenTracing Semantic Conventions (#179) -- Rahman Syed
-* Convert nil pointer log field value to string "nil" (#230) -- Cyril Tovena
-* Add Go module support (#215) -- Zaba505
-* Make SetTag helper types in ext public (#229) -- Blake Edwards
-* Add log/fields helpers for keys from specification (#226) -- Dmitry Monakhov
-* Improve noop impementation (#223) -- chanxuehong
-* Add an extension to Tracer interface for custom go context creation (#220) -- Krzesimir Nowak
-* Fix typo in comments (#222) -- meteorlxy
-* Improve documentation for log.Object() to emphasize the requirement to pass immutable arguments (#219) -- 疯狂的小企鹅
-* [mock] Return ErrInvalidSpanContext if span context is not MockSpanContext (#216) -- Milad Irannejad
-
-
-1.1.0 (2019-03-23)
--------------------
-
-Notable changes:
-- The library is now released under Apache 2.0 license
-- Use Set() instead of Add() in HTTPHeadersCarrier is functionally a breaking change (fixes issue [#159](https://github.com/opentracing/opentracing-go/issues/159))
-- 'golang.org/x/net/context' is replaced with 'context' from the standard library
-
-List of all changes:
-
-- Export StartSpanFromContextWithTracer (#214) <Aaron Delaney>
-- Add IsGlobalTracerRegistered() to indicate if a tracer has been registered (#201) <Mike Goldsmith>
-- Use Set() instead of Add() in HTTPHeadersCarrier (#191) <jeremyxu2010>
-- Update license to Apache 2.0 (#181) <Andrea Kao>
-- Replace 'golang.org/x/net/context' with 'context' (#176) <Tony Ghita>
-- Port of Python opentracing/harness/api_check.py to Go (#146) <chris erway>
-- Fix race condition in MockSpan.Context() (#170) <Brad>
-- Add PeerHostIPv4.SetString() (#155) <NeoCN>
-- Add a Noop log field type to log to allow for optional fields (#150) <Matt Ho>
-
-
-1.0.2 (2017-04-26)
--------------------
-
-- Add more semantic tags (#139) <Rustam Zagirov>
-
-
-1.0.1 (2017-02-06)
--------------------
-
-- Correct spelling in comments <Ben Sigelman>
-- Address race in nextMockID() (#123) <bill fumerola>
-- log: avoid panic marshaling nil error (#131) <Anthony Voutas>
-- Deprecate InitGlobalTracer in favor of SetGlobalTracer (#128) <Yuri Shkuro>
-- Drop Go 1.5 that fails in Travis (#129) <Yuri Shkuro>
-- Add convenience methods Key() and Value() to log.Field <Ben Sigelman>
-- Add convenience methods to log.Field (2 years, 6 months ago) <Radu Berinde>
-
-1.0.0 (2016-09-26)
--------------------
-
-- This release implements OpenTracing Specification 1.0 (https://opentracing.io/spec)
-
diff --git a/vendor/github.com/opentracing/opentracing-go/LICENSE b/vendor/github.com/opentracing/opentracing-go/LICENSE
deleted file mode 100644
index f0027349e..000000000
--- a/vendor/github.com/opentracing/opentracing-go/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "{}"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright 2016 The OpenTracing 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.
diff --git a/vendor/github.com/opentracing/opentracing-go/Makefile b/vendor/github.com/opentracing/opentracing-go/Makefile
deleted file mode 100644
index 62abb63f5..000000000
--- a/vendor/github.com/opentracing/opentracing-go/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-.DEFAULT_GOAL := test-and-lint
-
-.PHONY: test-and-lint
-test-and-lint: test lint
-
-.PHONY: test
-test:
- go test -v -cover -race ./...
-
-.PHONY: cover
-cover:
- go test -v -coverprofile=coverage.txt -covermode=atomic -race ./...
-
-.PHONY: lint
-lint:
- go fmt ./...
- golint ./...
- @# Run again with magic to exit non-zero if golint outputs anything.
- @! (golint ./... | read dummy)
- go vet ./...
diff --git a/vendor/github.com/opentracing/opentracing-go/README.md b/vendor/github.com/opentracing/opentracing-go/README.md
deleted file mode 100644
index 6ef1d7c9d..000000000
--- a/vendor/github.com/opentracing/opentracing-go/README.md
+++ /dev/null
@@ -1,171 +0,0 @@
-[![Gitter chat](http://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg)](https://gitter.im/opentracing/public) [![Build Status](https://travis-ci.org/opentracing/opentracing-go.svg?branch=master)](https://travis-ci.org/opentracing/opentracing-go) [![GoDoc](https://godoc.org/github.com/opentracing/opentracing-go?status.svg)](http://godoc.org/github.com/opentracing/opentracing-go)
-[![Sourcegraph Badge](https://sourcegraph.com/github.com/opentracing/opentracing-go/-/badge.svg)](https://sourcegraph.com/github.com/opentracing/opentracing-go?badge)
-
-# OpenTracing API for Go
-
-This package is a Go platform API for OpenTracing.
-
-## Required Reading
-
-In order to understand the Go platform API, one must first be familiar with the
-[OpenTracing project](https://opentracing.io) and
-[terminology](https://opentracing.io/specification/) more specifically.
-
-## API overview for those adding instrumentation
-
-Everyday consumers of this `opentracing` package really only need to worry
-about a couple of key abstractions: the `StartSpan` function, the `Span`
-interface, and binding a `Tracer` at `main()`-time. Here are code snippets
-demonstrating some important use cases.
-
-#### Singleton initialization
-
-The simplest starting point is `./default_tracer.go`. As early as possible, call
-
-```go
- import "github.com/opentracing/opentracing-go"
- import ".../some_tracing_impl"
-
- func main() {
- opentracing.SetGlobalTracer(
- // tracing impl specific:
- some_tracing_impl.New(...),
- )
- ...
- }
-```
-
-#### Non-Singleton initialization
-
-If you prefer direct control to singletons, manage ownership of the
-`opentracing.Tracer` implementation explicitly.
-
-#### Creating a Span given an existing Go `context.Context`
-
-If you use `context.Context` in your application, OpenTracing's Go library will
-happily rely on it for `Span` propagation. To start a new (blocking child)
-`Span`, you can use `StartSpanFromContext`.
-
-```go
- func xyz(ctx context.Context, ...) {
- ...
- span, ctx := opentracing.StartSpanFromContext(ctx, "operation_name")
- defer span.Finish()
- span.LogFields(
- log.String("event", "soft error"),
- log.String("type", "cache timeout"),
- log.Int("waited.millis", 1500))
- ...
- }
-```
-
-#### Starting an empty trace by creating a "root span"
-
-It's always possible to create a "root" `Span` with no parent or other causal
-reference.
-
-```go
- func xyz() {
- ...
- sp := opentracing.StartSpan("operation_name")
- defer sp.Finish()
- ...
- }
-```
-
-#### Creating a (child) Span given an existing (parent) Span
-
-```go
- func xyz(parentSpan opentracing.Span, ...) {
- ...
- sp := opentracing.StartSpan(
- "operation_name",
- opentracing.ChildOf(parentSpan.Context()))
- defer sp.Finish()
- ...
- }
-```
-
-#### Serializing to the wire
-
-```go
- func makeSomeRequest(ctx context.Context) ... {
- if span := opentracing.SpanFromContext(ctx); span != nil {
- httpClient := &http.Client{}
- httpReq, _ := http.NewRequest("GET", "http://myservice/", nil)
-
- // Transmit the span's TraceContext as HTTP headers on our
- // outbound request.
- opentracing.GlobalTracer().Inject(
- span.Context(),
- opentracing.HTTPHeaders,
- opentracing.HTTPHeadersCarrier(httpReq.Header))
-
- resp, err := httpClient.Do(httpReq)
- ...
- }
- ...
- }
-```
-
-#### Deserializing from the wire
-
-```go
- http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
- var serverSpan opentracing.Span
- appSpecificOperationName := ...
- wireContext, err := opentracing.GlobalTracer().Extract(
- opentracing.HTTPHeaders,
- opentracing.HTTPHeadersCarrier(req.Header))
- if err != nil {
- // Optionally record something about err here
- }
-
- // Create the span referring to the RPC client if available.
- // If wireContext == nil, a root span will be created.
- serverSpan = opentracing.StartSpan(
- appSpecificOperationName,
- ext.RPCServerOption(wireContext))
-
- defer serverSpan.Finish()
-
- ctx := opentracing.ContextWithSpan(context.Background(), serverSpan)
- ...
- }
-```
-
-#### Conditionally capture a field using `log.Noop`
-
-In some situations, you may want to dynamically decide whether or not
-to log a field. For example, you may want to capture additional data,
-such as a customer ID, in non-production environments:
-
-```go
- func Customer(order *Order) log.Field {
- if os.Getenv("ENVIRONMENT") == "dev" {
- return log.String("customer", order.Customer.ID)
- }
- return log.Noop()
- }
-```
-
-#### Goroutine-safety
-
-The entire public API is goroutine-safe and does not require external
-synchronization.
-
-## API pointers for those implementing a tracing system
-
-Tracing system implementors may be able to reuse or copy-paste-modify the `basictracer` package, found [here](https://github.com/opentracing/basictracer-go). In particular, see `basictracer.New(...)`.
-
-## API compatibility
-
-For the time being, "mild" backwards-incompatible changes may be made without changing the major version number. As OpenTracing and `opentracing-go` mature, backwards compatibility will become more of a priority.
-
-## Tracer test suite
-
-A test suite is available in the [harness](https://godoc.org/github.com/opentracing/opentracing-go/harness) package that can assist Tracer implementors to assert that their Tracer is working correctly.
-
-## Licensing
-
-[Apache 2.0 License](./LICENSE).
diff --git a/vendor/github.com/opentracing/opentracing-go/ext.go b/vendor/github.com/opentracing/opentracing-go/ext.go
deleted file mode 100644
index e11977ebe..000000000
--- a/vendor/github.com/opentracing/opentracing-go/ext.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package opentracing
-
-import (
- "context"
-)
-
-// TracerContextWithSpanExtension is an extension interface that the
-// implementation of the Tracer interface may want to implement. It
-// allows to have some control over the go context when the
-// ContextWithSpan is invoked.
-//
-// The primary purpose of this extension are adapters from opentracing
-// API to some other tracing API.
-type TracerContextWithSpanExtension interface {
- // ContextWithSpanHook gets called by the ContextWithSpan
- // function, when the Tracer implementation also implements
- // this interface. It allows to put extra information into the
- // context and make it available to the callers of the
- // ContextWithSpan.
- //
- // This hook is invoked before the ContextWithSpan function
- // actually puts the span into the context.
- ContextWithSpanHook(ctx context.Context, span Span) context.Context
-}
diff --git a/vendor/github.com/opentracing/opentracing-go/ext/field.go b/vendor/github.com/opentracing/opentracing-go/ext/field.go
deleted file mode 100644
index 8282bd758..000000000
--- a/vendor/github.com/opentracing/opentracing-go/ext/field.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package ext
-
-import (
- "github.com/opentracing/opentracing-go"
- "github.com/opentracing/opentracing-go/log"
-)
-
-// LogError sets the error=true tag on the Span and logs err as an "error" event.
-func LogError(span opentracing.Span, err error, fields ...log.Field) {
- Error.Set(span, true)
- ef := []log.Field{
- log.Event("error"),
- log.Error(err),
- }
- ef = append(ef, fields...)
- span.LogFields(ef...)
-}
diff --git a/vendor/github.com/opentracing/opentracing-go/ext/tags.go b/vendor/github.com/opentracing/opentracing-go/ext/tags.go
deleted file mode 100644
index a414b5951..000000000
--- a/vendor/github.com/opentracing/opentracing-go/ext/tags.go
+++ /dev/null
@@ -1,215 +0,0 @@
-package ext
-
-import "github.com/opentracing/opentracing-go"
-
-// These constants define common tag names recommended for better portability across
-// tracing systems and languages/platforms.
-//
-// The tag names are defined as typed strings, so that in addition to the usual use
-//
-// span.setTag(TagName, value)
-//
-// they also support value type validation via this additional syntax:
-//
-// TagName.Set(span, value)
-//
-var (
- //////////////////////////////////////////////////////////////////////
- // SpanKind (client/server or producer/consumer)
- //////////////////////////////////////////////////////////////////////
-
- // SpanKind hints at relationship between spans, e.g. client/server
- SpanKind = spanKindTagName("span.kind")
-
- // SpanKindRPCClient marks a span representing the client-side of an RPC
- // or other remote call
- SpanKindRPCClientEnum = SpanKindEnum("client")
- SpanKindRPCClient = opentracing.Tag{Key: string(SpanKind), Value: SpanKindRPCClientEnum}
-
- // SpanKindRPCServer marks a span representing the server-side of an RPC
- // or other remote call
- SpanKindRPCServerEnum = SpanKindEnum("server")
- SpanKindRPCServer = opentracing.Tag{Key: string(SpanKind), Value: SpanKindRPCServerEnum}
-
- // SpanKindProducer marks a span representing the producer-side of a
- // message bus
- SpanKindProducerEnum = SpanKindEnum("producer")
- SpanKindProducer = opentracing.Tag{Key: string(SpanKind), Value: SpanKindProducerEnum}
-
- // SpanKindConsumer marks a span representing the consumer-side of a
- // message bus
- SpanKindConsumerEnum = SpanKindEnum("consumer")
- SpanKindConsumer = opentracing.Tag{Key: string(SpanKind), Value: SpanKindConsumerEnum}
-
- //////////////////////////////////////////////////////////////////////
- // Component name
- //////////////////////////////////////////////////////////////////////
-
- // Component is a low-cardinality identifier of the module, library,
- // or package that is generating a span.
- Component = StringTagName("component")
-
- //////////////////////////////////////////////////////////////////////
- // Sampling hint
- //////////////////////////////////////////////////////////////////////
-
- // SamplingPriority determines the priority of sampling this Span.
- SamplingPriority = Uint16TagName("sampling.priority")
-
- //////////////////////////////////////////////////////////////////////
- // Peer tags. These tags can be emitted by either client-side or
- // server-side to describe the other side/service in a peer-to-peer
- // communications, like an RPC call.
- //////////////////////////////////////////////////////////////////////
-
- // PeerService records the service name of the peer.
- PeerService = StringTagName("peer.service")
-
- // PeerAddress records the address name of the peer. This may be a "ip:port",
- // a bare "hostname", a FQDN or even a database DSN substring
- // like "mysql://username@127.0.0.1:3306/dbname"
- PeerAddress = StringTagName("peer.address")
-
- // PeerHostname records the host name of the peer
- PeerHostname = StringTagName("peer.hostname")
-
- // PeerHostIPv4 records IP v4 host address of the peer
- PeerHostIPv4 = IPv4TagName("peer.ipv4")
-
- // PeerHostIPv6 records IP v6 host address of the peer
- PeerHostIPv6 = StringTagName("peer.ipv6")
-
- // PeerPort records port number of the peer
- PeerPort = Uint16TagName("peer.port")
-
- //////////////////////////////////////////////////////////////////////
- // HTTP Tags
- //////////////////////////////////////////////////////////////////////
-
- // HTTPUrl should be the URL of the request being handled in this segment
- // of the trace, in standard URI format. The protocol is optional.
- HTTPUrl = StringTagName("http.url")
-
- // HTTPMethod is the HTTP method of the request, and is case-insensitive.
- HTTPMethod = StringTagName("http.method")
-
- // HTTPStatusCode is the numeric HTTP status code (200, 404, etc) of the
- // HTTP response.
- HTTPStatusCode = Uint16TagName("http.status_code")
-
- //////////////////////////////////////////////////////////////////////
- // DB Tags
- //////////////////////////////////////////////////////////////////////
-
- // DBInstance is database instance name.
- DBInstance = StringTagName("db.instance")
-
- // DBStatement is a database statement for the given database type.
- // It can be a query or a prepared statement (i.e., before substitution).
- DBStatement = StringTagName("db.statement")
-
- // DBType is a database type. For any SQL database, "sql".
- // For others, the lower-case database category, e.g. "redis"
- DBType = StringTagName("db.type")
-
- // DBUser is a username for accessing database.
- DBUser = StringTagName("db.user")
-
- //////////////////////////////////////////////////////////////////////
- // Message Bus Tag
- //////////////////////////////////////////////////////////////////////
-
- // MessageBusDestination is an address at which messages can be exchanged
- MessageBusDestination = StringTagName("message_bus.destination")
-
- //////////////////////////////////////////////////////////////////////
- // Error Tag
- //////////////////////////////////////////////////////////////////////
-
- // Error indicates that operation represented by the span resulted in an error.
- Error = BoolTagName("error")
-)
-
-// ---
-
-// SpanKindEnum represents common span types
-type SpanKindEnum string
-
-type spanKindTagName string
-
-// Set adds a string tag to the `span`
-func (tag spanKindTagName) Set(span opentracing.Span, value SpanKindEnum) {
- span.SetTag(string(tag), value)
-}
-
-type rpcServerOption struct {
- clientContext opentracing.SpanContext
-}
-
-func (r rpcServerOption) Apply(o *opentracing.StartSpanOptions) {
- if r.clientContext != nil {
- opentracing.ChildOf(r.clientContext).Apply(o)
- }
- SpanKindRPCServer.Apply(o)
-}
-
-// RPCServerOption returns a StartSpanOption appropriate for an RPC server span
-// with `client` representing the metadata for the remote peer Span if available.
-// In case client == nil, due to the client not being instrumented, this RPC
-// server span will be a root span.
-func RPCServerOption(client opentracing.SpanContext) opentracing.StartSpanOption {
- return rpcServerOption{client}
-}
-
-// ---
-
-// StringTagName is a common tag name to be set to a string value
-type StringTagName string
-
-// Set adds a string tag to the `span`
-func (tag StringTagName) Set(span opentracing.Span, value string) {
- span.SetTag(string(tag), value)
-}
-
-// ---
-
-// Uint32TagName is a common tag name to be set to a uint32 value
-type Uint32TagName string
-
-// Set adds a uint32 tag to the `span`
-func (tag Uint32TagName) Set(span opentracing.Span, value uint32) {
- span.SetTag(string(tag), value)
-}
-
-// ---
-
-// Uint16TagName is a common tag name to be set to a uint16 value
-type Uint16TagName string
-
-// Set adds a uint16 tag to the `span`
-func (tag Uint16TagName) Set(span opentracing.Span, value uint16) {
- span.SetTag(string(tag), value)
-}
-
-// ---
-
-// BoolTagName is a common tag name to be set to a bool value
-type BoolTagName string
-
-// Set adds a bool tag to the `span`
-func (tag BoolTagName) Set(span opentracing.Span, value bool) {
- span.SetTag(string(tag), value)
-}
-
-// IPv4TagName is a common tag name to be set to an ipv4 value
-type IPv4TagName string
-
-// Set adds IP v4 host address of the peer as an uint32 value to the `span`, keep this for backward and zipkin compatibility
-func (tag IPv4TagName) Set(span opentracing.Span, value uint32) {
- span.SetTag(string(tag), value)
-}
-
-// SetString records IP v4 host address of the peer as a .-separated tuple to the `span`. E.g., "127.0.0.1"
-func (tag IPv4TagName) SetString(span opentracing.Span, value string) {
- span.SetTag(string(tag), value)
-}
diff --git a/vendor/github.com/opentracing/opentracing-go/globaltracer.go b/vendor/github.com/opentracing/opentracing-go/globaltracer.go
deleted file mode 100644
index 4f7066a92..000000000
--- a/vendor/github.com/opentracing/opentracing-go/globaltracer.go
+++ /dev/null
@@ -1,42 +0,0 @@
-package opentracing
-
-type registeredTracer struct {
- tracer Tracer
- isRegistered bool
-}
-
-var (
- globalTracer = registeredTracer{NoopTracer{}, false}
-)
-
-// SetGlobalTracer sets the [singleton] opentracing.Tracer returned by
-// GlobalTracer(). Those who use GlobalTracer (rather than directly manage an
-// opentracing.Tracer instance) should call SetGlobalTracer as early as
-// possible in main(), prior to calling the `StartSpan` global func below.
-// Prior to calling `SetGlobalTracer`, any Spans started via the `StartSpan`
-// (etc) globals are noops.
-func SetGlobalTracer(tracer Tracer) {
- globalTracer = registeredTracer{tracer, true}
-}
-
-// GlobalTracer returns the global singleton `Tracer` implementation.
-// Before `SetGlobalTracer()` is called, the `GlobalTracer()` is a noop
-// implementation that drops all data handed to it.
-func GlobalTracer() Tracer {
- return globalTracer.tracer
-}
-
-// StartSpan defers to `Tracer.StartSpan`. See `GlobalTracer()`.
-func StartSpan(operationName string, opts ...StartSpanOption) Span {
- return globalTracer.tracer.StartSpan(operationName, opts...)
-}
-
-// InitGlobalTracer is deprecated. Please use SetGlobalTracer.
-func InitGlobalTracer(tracer Tracer) {
- SetGlobalTracer(tracer)
-}
-
-// IsGlobalTracerRegistered returns a `bool` to indicate if a tracer has been globally registered
-func IsGlobalTracerRegistered() bool {
- return globalTracer.isRegistered
-}
diff --git a/vendor/github.com/opentracing/opentracing-go/go.mod b/vendor/github.com/opentracing/opentracing-go/go.mod
deleted file mode 100644
index bf48bb5d7..000000000
--- a/vendor/github.com/opentracing/opentracing-go/go.mod
+++ /dev/null
@@ -1,5 +0,0 @@
-module github.com/opentracing/opentracing-go
-
-go 1.14
-
-require github.com/stretchr/testify v1.3.0
diff --git a/vendor/github.com/opentracing/opentracing-go/go.sum b/vendor/github.com/opentracing/opentracing-go/go.sum
deleted file mode 100644
index 4347755af..000000000
--- a/vendor/github.com/opentracing/opentracing-go/go.sum
+++ /dev/null
@@ -1,7 +0,0 @@
-github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
diff --git a/vendor/github.com/opentracing/opentracing-go/gocontext.go b/vendor/github.com/opentracing/opentracing-go/gocontext.go
deleted file mode 100644
index 1831bc9b2..000000000
--- a/vendor/github.com/opentracing/opentracing-go/gocontext.go
+++ /dev/null
@@ -1,65 +0,0 @@
-package opentracing
-
-import "context"
-
-type contextKey struct{}
-
-var activeSpanKey = contextKey{}
-
-// ContextWithSpan returns a new `context.Context` that holds a reference to
-// the span. If span is nil, a new context without an active span is returned.
-func ContextWithSpan(ctx context.Context, span Span) context.Context {
- if span != nil {
- if tracerWithHook, ok := span.Tracer().(TracerContextWithSpanExtension); ok {
- ctx = tracerWithHook.ContextWithSpanHook(ctx, span)
- }
- }
- return context.WithValue(ctx, activeSpanKey, span)
-}
-
-// SpanFromContext returns the `Span` previously associated with `ctx`, or
-// `nil` if no such `Span` could be found.
-//
-// NOTE: context.Context != SpanContext: the former is Go's intra-process
-// context propagation mechanism, and the latter houses OpenTracing's per-Span
-// identity and baggage information.
-func SpanFromContext(ctx context.Context) Span {
- val := ctx.Value(activeSpanKey)
- if sp, ok := val.(Span); ok {
- return sp
- }
- return nil
-}
-
-// StartSpanFromContext starts and returns a Span with `operationName`, using
-// any Span found within `ctx` as a ChildOfRef. If no such parent could be
-// found, StartSpanFromContext creates a root (parentless) Span.
-//
-// The second return value is a context.Context object built around the
-// returned Span.
-//
-// Example usage:
-//
-// SomeFunction(ctx context.Context, ...) {
-// sp, ctx := opentracing.StartSpanFromContext(ctx, "SomeFunction")
-// defer sp.Finish()
-// ...
-// }
-func StartSpanFromContext(ctx context.Context, operationName string, opts ...StartSpanOption) (Span, context.Context) {
- return StartSpanFromContextWithTracer(ctx, GlobalTracer(), operationName, opts...)
-}
-
-// StartSpanFromContextWithTracer starts and returns a span with `operationName`
-// using a span found within the context as a ChildOfRef. If that doesn't exist
-// it creates a root span. It also returns a context.Context object built
-// around the returned span.
-//
-// It's behavior is identical to StartSpanFromContext except that it takes an explicit
-// tracer as opposed to using the global tracer.
-func StartSpanFromContextWithTracer(ctx context.Context, tracer Tracer, operationName string, opts ...StartSpanOption) (Span, context.Context) {
- if parentSpan := SpanFromContext(ctx); parentSpan != nil {
- opts = append(opts, ChildOf(parentSpan.Context()))
- }
- span := tracer.StartSpan(operationName, opts...)
- return span, ContextWithSpan(ctx, span)
-}
diff --git a/vendor/github.com/opentracing/opentracing-go/log/field.go b/vendor/github.com/opentracing/opentracing-go/log/field.go
deleted file mode 100644
index f222ded79..000000000
--- a/vendor/github.com/opentracing/opentracing-go/log/field.go
+++ /dev/null
@@ -1,282 +0,0 @@
-package log
-
-import (
- "fmt"
- "math"
-)
-
-type fieldType int
-
-const (
- stringType fieldType = iota
- boolType
- intType
- int32Type
- uint32Type
- int64Type
- uint64Type
- float32Type
- float64Type
- errorType
- objectType
- lazyLoggerType
- noopType
-)
-
-// Field instances are constructed via LogBool, LogString, and so on.
-// Tracing implementations may then handle them via the Field.Marshal
-// method.
-//
-// "heavily influenced by" (i.e., partially stolen from)
-// https://github.com/uber-go/zap
-type Field struct {
- key string
- fieldType fieldType
- numericVal int64
- stringVal string
- interfaceVal interface{}
-}
-
-// String adds a string-valued key:value pair to a Span.LogFields() record
-func String(key, val string) Field {
- return Field{
- key: key,
- fieldType: stringType,
- stringVal: val,
- }
-}
-
-// Bool adds a bool-valued key:value pair to a Span.LogFields() record
-func Bool(key string, val bool) Field {
- var numericVal int64
- if val {
- numericVal = 1
- }
- return Field{
- key: key,
- fieldType: boolType,
- numericVal: numericVal,
- }
-}
-
-// Int adds an int-valued key:value pair to a Span.LogFields() record
-func Int(key string, val int) Field {
- return Field{
- key: key,
- fieldType: intType,
- numericVal: int64(val),
- }
-}
-
-// Int32 adds an int32-valued key:value pair to a Span.LogFields() record
-func Int32(key string, val int32) Field {
- return Field{
- key: key,
- fieldType: int32Type,
- numericVal: int64(val),
- }
-}
-
-// Int64 adds an int64-valued key:value pair to a Span.LogFields() record
-func Int64(key string, val int64) Field {
- return Field{
- key: key,
- fieldType: int64Type,
- numericVal: val,
- }
-}
-
-// Uint32 adds a uint32-valued key:value pair to a Span.LogFields() record
-func Uint32(key string, val uint32) Field {
- return Field{
- key: key,
- fieldType: uint32Type,
- numericVal: int64(val),
- }
-}
-
-// Uint64 adds a uint64-valued key:value pair to a Span.LogFields() record
-func Uint64(key string, val uint64) Field {
- return Field{
- key: key,
- fieldType: uint64Type,
- numericVal: int64(val),
- }
-}
-
-// Float32 adds a float32-valued key:value pair to a Span.LogFields() record
-func Float32(key string, val float32) Field {
- return Field{
- key: key,
- fieldType: float32Type,
- numericVal: int64(math.Float32bits(val)),
- }
-}
-
-// Float64 adds a float64-valued key:value pair to a Span.LogFields() record
-func Float64(key string, val float64) Field {
- return Field{
- key: key,
- fieldType: float64Type,
- numericVal: int64(math.Float64bits(val)),
- }
-}
-
-// Error adds an error with the key "error.object" to a Span.LogFields() record
-func Error(err error) Field {
- return Field{
- key: "error.object",
- fieldType: errorType,
- interfaceVal: err,
- }
-}
-
-// Object adds an object-valued key:value pair to a Span.LogFields() record
-// Please pass in an immutable object, otherwise there may be concurrency issues.
-// Such as passing in the map, log.Object may result in "fatal error: concurrent map iteration and map write".
-// Because span is sent asynchronously, it is possible that this map will also be modified.
-func Object(key string, obj interface{}) Field {
- return Field{
- key: key,
- fieldType: objectType,
- interfaceVal: obj,
- }
-}
-
-// Event creates a string-valued Field for span logs with key="event" and value=val.
-func Event(val string) Field {
- return String("event", val)
-}
-
-// Message creates a string-valued Field for span logs with key="message" and value=val.
-func Message(val string) Field {
- return String("message", val)
-}
-
-// LazyLogger allows for user-defined, late-bound logging of arbitrary data
-type LazyLogger func(fv Encoder)
-
-// Lazy adds a LazyLogger to a Span.LogFields() record; the tracing
-// implementation will call the LazyLogger function at an indefinite time in
-// the future (after Lazy() returns).
-func Lazy(ll LazyLogger) Field {
- return Field{
- fieldType: lazyLoggerType,
- interfaceVal: ll,
- }
-}
-
-// Noop creates a no-op log field that should be ignored by the tracer.
-// It can be used to capture optional fields, for example those that should
-// only be logged in non-production environment:
-//
-// func customerField(order *Order) log.Field {
-// if os.Getenv("ENVIRONMENT") == "dev" {
-// return log.String("customer", order.Customer.ID)
-// }
-// return log.Noop()
-// }
-//
-// span.LogFields(log.String("event", "purchase"), customerField(order))
-//
-func Noop() Field {
- return Field{
- fieldType: noopType,
- }
-}
-
-// Encoder allows access to the contents of a Field (via a call to
-// Field.Marshal).
-//
-// Tracer implementations typically provide an implementation of Encoder;
-// OpenTracing callers typically do not need to concern themselves with it.
-type Encoder interface {
- EmitString(key, value string)
- EmitBool(key string, value bool)
- EmitInt(key string, value int)
- EmitInt32(key string, value int32)
- EmitInt64(key string, value int64)
- EmitUint32(key string, value uint32)
- EmitUint64(key string, value uint64)
- EmitFloat32(key string, value float32)
- EmitFloat64(key string, value float64)
- EmitObject(key string, value interface{})
- EmitLazyLogger(value LazyLogger)
-}
-
-// Marshal passes a Field instance through to the appropriate
-// field-type-specific method of an Encoder.
-func (lf Field) Marshal(visitor Encoder) {
- switch lf.fieldType {
- case stringType:
- visitor.EmitString(lf.key, lf.stringVal)
- case boolType:
- visitor.EmitBool(lf.key, lf.numericVal != 0)
- case intType:
- visitor.EmitInt(lf.key, int(lf.numericVal))
- case int32Type:
- visitor.EmitInt32(lf.key, int32(lf.numericVal))
- case int64Type:
- visitor.EmitInt64(lf.key, int64(lf.numericVal))
- case uint32Type:
- visitor.EmitUint32(lf.key, uint32(lf.numericVal))
- case uint64Type:
- visitor.EmitUint64(lf.key, uint64(lf.numericVal))
- case float32Type:
- visitor.EmitFloat32(lf.key, math.Float32frombits(uint32(lf.numericVal)))
- case float64Type:
- visitor.EmitFloat64(lf.key, math.Float64frombits(uint64(lf.numericVal)))
- case errorType:
- if err, ok := lf.interfaceVal.(error); ok {
- visitor.EmitString(lf.key, err.Error())
- } else {
- visitor.EmitString(lf.key, "<nil>")
- }
- case objectType:
- visitor.EmitObject(lf.key, lf.interfaceVal)
- case lazyLoggerType:
- visitor.EmitLazyLogger(lf.interfaceVal.(LazyLogger))
- case noopType:
- // intentionally left blank
- }
-}
-
-// Key returns the field's key.
-func (lf Field) Key() string {
- return lf.key
-}
-
-// Value returns the field's value as interface{}.
-func (lf Field) Value() interface{} {
- switch lf.fieldType {
- case stringType:
- return lf.stringVal
- case boolType:
- return lf.numericVal != 0
- case intType:
- return int(lf.numericVal)
- case int32Type:
- return int32(lf.numericVal)
- case int64Type:
- return int64(lf.numericVal)
- case uint32Type:
- return uint32(lf.numericVal)
- case uint64Type:
- return uint64(lf.numericVal)
- case float32Type:
- return math.Float32frombits(uint32(lf.numericVal))
- case float64Type:
- return math.Float64frombits(uint64(lf.numericVal))
- case errorType, objectType, lazyLoggerType:
- return lf.interfaceVal
- case noopType:
- return nil
- default:
- return nil
- }
-}
-
-// String returns a string representation of the key and value.
-func (lf Field) String() string {
- return fmt.Sprint(lf.key, ":", lf.Value())
-}
diff --git a/vendor/github.com/opentracing/opentracing-go/log/util.go b/vendor/github.com/opentracing/opentracing-go/log/util.go
deleted file mode 100644
index d57e28aa5..000000000
--- a/vendor/github.com/opentracing/opentracing-go/log/util.go
+++ /dev/null
@@ -1,61 +0,0 @@
-package log
-
-import (
- "fmt"
- "reflect"
-)
-
-// InterleavedKVToFields converts keyValues a la Span.LogKV() to a Field slice
-// a la Span.LogFields().
-func InterleavedKVToFields(keyValues ...interface{}) ([]Field, error) {
- if len(keyValues)%2 != 0 {
- return nil, fmt.Errorf("non-even keyValues len: %d", len(keyValues))
- }
- fields := make([]Field, len(keyValues)/2)
- for i := 0; i*2 < len(keyValues); i++ {
- key, ok := keyValues[i*2].(string)
- if !ok {
- return nil, fmt.Errorf(
- "non-string key (pair #%d): %T",
- i, keyValues[i*2])
- }
- switch typedVal := keyValues[i*2+1].(type) {
- case bool:
- fields[i] = Bool(key, typedVal)
- case string:
- fields[i] = String(key, typedVal)
- case int:
- fields[i] = Int(key, typedVal)
- case int8:
- fields[i] = Int32(key, int32(typedVal))
- case int16:
- fields[i] = Int32(key, int32(typedVal))
- case int32:
- fields[i] = Int32(key, typedVal)
- case int64:
- fields[i] = Int64(key, typedVal)
- case uint:
- fields[i] = Uint64(key, uint64(typedVal))
- case uint64:
- fields[i] = Uint64(key, typedVal)
- case uint8:
- fields[i] = Uint32(key, uint32(typedVal))
- case uint16:
- fields[i] = Uint32(key, uint32(typedVal))
- case uint32:
- fields[i] = Uint32(key, typedVal)
- case float32:
- fields[i] = Float32(key, typedVal)
- case float64:
- fields[i] = Float64(key, typedVal)
- default:
- if typedVal == nil || (reflect.ValueOf(typedVal).Kind() == reflect.Ptr && reflect.ValueOf(typedVal).IsNil()) {
- fields[i] = String(key, "nil")
- continue
- }
- // When in doubt, coerce to a string
- fields[i] = String(key, fmt.Sprint(typedVal))
- }
- }
- return fields, nil
-}
diff --git a/vendor/github.com/opentracing/opentracing-go/noop.go b/vendor/github.com/opentracing/opentracing-go/noop.go
deleted file mode 100644
index f9b680a21..000000000
--- a/vendor/github.com/opentracing/opentracing-go/noop.go
+++ /dev/null
@@ -1,64 +0,0 @@
-package opentracing
-
-import "github.com/opentracing/opentracing-go/log"
-
-// A NoopTracer is a trivial, minimum overhead implementation of Tracer
-// for which all operations are no-ops.
-//
-// The primary use of this implementation is in libraries, such as RPC
-// frameworks, that make tracing an optional feature controlled by the
-// end user. A no-op implementation allows said libraries to use it
-// as the default Tracer and to write instrumentation that does
-// not need to keep checking if the tracer instance is nil.
-//
-// For the same reason, the NoopTracer is the default "global" tracer
-// (see GlobalTracer and SetGlobalTracer functions).
-//
-// WARNING: NoopTracer does not support baggage propagation.
-type NoopTracer struct{}
-
-type noopSpan struct{}
-type noopSpanContext struct{}
-
-var (
- defaultNoopSpanContext SpanContext = noopSpanContext{}
- defaultNoopSpan Span = noopSpan{}
- defaultNoopTracer Tracer = NoopTracer{}
-)
-
-const (
- emptyString = ""
-)
-
-// noopSpanContext:
-func (n noopSpanContext) ForeachBaggageItem(handler func(k, v string) bool) {}
-
-// noopSpan:
-func (n noopSpan) Context() SpanContext { return defaultNoopSpanContext }
-func (n noopSpan) SetBaggageItem(key, val string) Span { return n }
-func (n noopSpan) BaggageItem(key string) string { return emptyString }
-func (n noopSpan) SetTag(key string, value interface{}) Span { return n }
-func (n noopSpan) LogFields(fields ...log.Field) {}
-func (n noopSpan) LogKV(keyVals ...interface{}) {}
-func (n noopSpan) Finish() {}
-func (n noopSpan) FinishWithOptions(opts FinishOptions) {}
-func (n noopSpan) SetOperationName(operationName string) Span { return n }
-func (n noopSpan) Tracer() Tracer { return defaultNoopTracer }
-func (n noopSpan) LogEvent(event string) {}
-func (n noopSpan) LogEventWithPayload(event string, payload interface{}) {}
-func (n noopSpan) Log(data LogData) {}
-
-// StartSpan belongs to the Tracer interface.
-func (n NoopTracer) StartSpan(operationName string, opts ...StartSpanOption) Span {
- return defaultNoopSpan
-}
-
-// Inject belongs to the Tracer interface.
-func (n NoopTracer) Inject(sp SpanContext, format interface{}, carrier interface{}) error {
- return nil
-}
-
-// Extract belongs to the Tracer interface.
-func (n NoopTracer) Extract(format interface{}, carrier interface{}) (SpanContext, error) {
- return nil, ErrSpanContextNotFound
-}
diff --git a/vendor/github.com/opentracing/opentracing-go/propagation.go b/vendor/github.com/opentracing/opentracing-go/propagation.go
deleted file mode 100644
index b0c275eb0..000000000
--- a/vendor/github.com/opentracing/opentracing-go/propagation.go
+++ /dev/null
@@ -1,176 +0,0 @@
-package opentracing
-
-import (
- "errors"
- "net/http"
-)
-
-///////////////////////////////////////////////////////////////////////////////
-// CORE PROPAGATION INTERFACES:
-///////////////////////////////////////////////////////////////////////////////
-
-var (
- // ErrUnsupportedFormat occurs when the `format` passed to Tracer.Inject() or
- // Tracer.Extract() is not recognized by the Tracer implementation.
- ErrUnsupportedFormat = errors.New("opentracing: Unknown or unsupported Inject/Extract format")
-
- // ErrSpanContextNotFound occurs when the `carrier` passed to
- // Tracer.Extract() is valid and uncorrupted but has insufficient
- // information to extract a SpanContext.
- ErrSpanContextNotFound = errors.New("opentracing: SpanContext not found in Extract carrier")
-
- // ErrInvalidSpanContext errors occur when Tracer.Inject() is asked to
- // operate on a SpanContext which it is not prepared to handle (for
- // example, since it was created by a different tracer implementation).
- ErrInvalidSpanContext = errors.New("opentracing: SpanContext type incompatible with tracer")
-
- // ErrInvalidCarrier errors occur when Tracer.Inject() or Tracer.Extract()
- // implementations expect a different type of `carrier` than they are
- // given.
- ErrInvalidCarrier = errors.New("opentracing: Invalid Inject/Extract carrier")
-
- // ErrSpanContextCorrupted occurs when the `carrier` passed to
- // Tracer.Extract() is of the expected type but is corrupted.
- ErrSpanContextCorrupted = errors.New("opentracing: SpanContext data corrupted in Extract carrier")
-)
-
-///////////////////////////////////////////////////////////////////////////////
-// BUILTIN PROPAGATION FORMATS:
-///////////////////////////////////////////////////////////////////////////////
-
-// BuiltinFormat is used to demarcate the values within package `opentracing`
-// that are intended for use with the Tracer.Inject() and Tracer.Extract()
-// methods.
-type BuiltinFormat byte
-
-const (
- // Binary represents SpanContexts as opaque binary data.
- //
- // For Tracer.Inject(): the carrier must be an `io.Writer`.
- //
- // For Tracer.Extract(): the carrier must be an `io.Reader`.
- Binary BuiltinFormat = iota
-
- // TextMap represents SpanContexts as key:value string pairs.
- //
- // Unlike HTTPHeaders, the TextMap format does not restrict the key or
- // value character sets in any way.
- //
- // For Tracer.Inject(): the carrier must be a `TextMapWriter`.
- //
- // For Tracer.Extract(): the carrier must be a `TextMapReader`.
- TextMap
-
- // HTTPHeaders represents SpanContexts as HTTP header string pairs.
- //
- // Unlike TextMap, the HTTPHeaders format requires that the keys and values
- // be valid as HTTP headers as-is (i.e., character casing may be unstable
- // and special characters are disallowed in keys, values should be
- // URL-escaped, etc).
- //
- // For Tracer.Inject(): the carrier must be a `TextMapWriter`.
- //
- // For Tracer.Extract(): the carrier must be a `TextMapReader`.
- //
- // See HTTPHeadersCarrier for an implementation of both TextMapWriter
- // and TextMapReader that defers to an http.Header instance for storage.
- // For example, Inject():
- //
- // carrier := opentracing.HTTPHeadersCarrier(httpReq.Header)
- // err := span.Tracer().Inject(
- // span.Context(), opentracing.HTTPHeaders, carrier)
- //
- // Or Extract():
- //
- // carrier := opentracing.HTTPHeadersCarrier(httpReq.Header)
- // clientContext, err := tracer.Extract(
- // opentracing.HTTPHeaders, carrier)
- //
- HTTPHeaders
-)
-
-// TextMapWriter is the Inject() carrier for the TextMap builtin format. With
-// it, the caller can encode a SpanContext for propagation as entries in a map
-// of unicode strings.
-type TextMapWriter interface {
- // Set a key:value pair to the carrier. Multiple calls to Set() for the
- // same key leads to undefined behavior.
- //
- // NOTE: The backing store for the TextMapWriter may contain data unrelated
- // to SpanContext. As such, Inject() and Extract() implementations that
- // call the TextMapWriter and TextMapReader interfaces must agree on a
- // prefix or other convention to distinguish their own key:value pairs.
- Set(key, val string)
-}
-
-// TextMapReader is the Extract() carrier for the TextMap builtin format. With it,
-// the caller can decode a propagated SpanContext as entries in a map of
-// unicode strings.
-type TextMapReader interface {
- // ForeachKey returns TextMap contents via repeated calls to the `handler`
- // function. If any call to `handler` returns a non-nil error, ForeachKey
- // terminates and returns that error.
- //
- // NOTE: The backing store for the TextMapReader may contain data unrelated
- // to SpanContext. As such, Inject() and Extract() implementations that
- // call the TextMapWriter and TextMapReader interfaces must agree on a
- // prefix or other convention to distinguish their own key:value pairs.
- //
- // The "foreach" callback pattern reduces unnecessary copying in some cases
- // and also allows implementations to hold locks while the map is read.
- ForeachKey(handler func(key, val string) error) error
-}
-
-// TextMapCarrier allows the use of regular map[string]string
-// as both TextMapWriter and TextMapReader.
-type TextMapCarrier map[string]string
-
-// ForeachKey conforms to the TextMapReader interface.
-func (c TextMapCarrier) ForeachKey(handler func(key, val string) error) error {
- for k, v := range c {
- if err := handler(k, v); err != nil {
- return err
- }
- }
- return nil
-}
-
-// Set implements Set() of opentracing.TextMapWriter
-func (c TextMapCarrier) Set(key, val string) {
- c[key] = val
-}
-
-// HTTPHeadersCarrier satisfies both TextMapWriter and TextMapReader.
-//
-// Example usage for server side:
-//
-// carrier := opentracing.HTTPHeadersCarrier(httpReq.Header)
-// clientContext, err := tracer.Extract(opentracing.HTTPHeaders, carrier)
-//
-// Example usage for client side:
-//
-// carrier := opentracing.HTTPHeadersCarrier(httpReq.Header)
-// err := tracer.Inject(
-// span.Context(),
-// opentracing.HTTPHeaders,
-// carrier)
-//
-type HTTPHeadersCarrier http.Header
-
-// Set conforms to the TextMapWriter interface.
-func (c HTTPHeadersCarrier) Set(key, val string) {
- h := http.Header(c)
- h.Set(key, val)
-}
-
-// ForeachKey conforms to the TextMapReader interface.
-func (c HTTPHeadersCarrier) ForeachKey(handler func(key, val string) error) error {
- for k, vals := range c {
- for _, v := range vals {
- if err := handler(k, v); err != nil {
- return err
- }
- }
- }
- return nil
-}
diff --git a/vendor/github.com/opentracing/opentracing-go/span.go b/vendor/github.com/opentracing/opentracing-go/span.go
deleted file mode 100644
index 0d3fb5341..000000000
--- a/vendor/github.com/opentracing/opentracing-go/span.go
+++ /dev/null
@@ -1,189 +0,0 @@
-package opentracing
-
-import (
- "time"
-
- "github.com/opentracing/opentracing-go/log"
-)
-
-// SpanContext represents Span state that must propagate to descendant Spans and across process
-// boundaries (e.g., a <trace_id, span_id, sampled> tuple).
-type SpanContext interface {
- // ForeachBaggageItem grants access to all baggage items stored in the
- // SpanContext.
- // The handler function will be called for each baggage key/value pair.
- // The ordering of items is not guaranteed.
- //
- // The bool return value indicates if the handler wants to continue iterating
- // through the rest of the baggage items; for example if the handler is trying to
- // find some baggage item by pattern matching the name, it can return false
- // as soon as the item is found to stop further iterations.
- ForeachBaggageItem(handler func(k, v string) bool)
-}
-
-// Span represents an active, un-finished span in the OpenTracing system.
-//
-// Spans are created by the Tracer interface.
-type Span interface {
- // Sets the end timestamp and finalizes Span state.
- //
- // With the exception of calls to Context() (which are always allowed),
- // Finish() must be the last call made to any span instance, and to do
- // otherwise leads to undefined behavior.
- Finish()
- // FinishWithOptions is like Finish() but with explicit control over
- // timestamps and log data.
- FinishWithOptions(opts FinishOptions)
-
- // Context() yields the SpanContext for this Span. Note that the return
- // value of Context() is still valid after a call to Span.Finish(), as is
- // a call to Span.Context() after a call to Span.Finish().
- Context() SpanContext
-
- // Sets or changes the operation name.
- //
- // Returns a reference to this Span for chaining.
- SetOperationName(operationName string) Span
-
- // Adds a tag to the span.
- //
- // If there is a pre-existing tag set for `key`, it is overwritten.
- //
- // Tag values can be numeric types, strings, or bools. The behavior of
- // other tag value types is undefined at the OpenTracing level. If a
- // tracing system does not know how to handle a particular value type, it
- // may ignore the tag, but shall not panic.
- //
- // Returns a reference to this Span for chaining.
- SetTag(key string, value interface{}) Span
-
- // LogFields is an efficient and type-checked way to record key:value
- // logging data about a Span, though the programming interface is a little
- // more verbose than LogKV(). Here's an example:
- //
- // span.LogFields(
- // log.String("event", "soft error"),
- // log.String("type", "cache timeout"),
- // log.Int("waited.millis", 1500))
- //
- // Also see Span.FinishWithOptions() and FinishOptions.BulkLogData.
- LogFields(fields ...log.Field)
-
- // LogKV is a concise, readable way to record key:value logging data about
- // a Span, though unfortunately this also makes it less efficient and less
- // type-safe than LogFields(). Here's an example:
- //
- // span.LogKV(
- // "event", "soft error",
- // "type", "cache timeout",
- // "waited.millis", 1500)
- //
- // For LogKV (as opposed to LogFields()), the parameters must appear as
- // key-value pairs, like
- //
- // span.LogKV(key1, val1, key2, val2, key3, val3, ...)
- //
- // The keys must all be strings. The values may be strings, numeric types,
- // bools, Go error instances, or arbitrary structs.
- //
- // (Note to implementors: consider the log.InterleavedKVToFields() helper)
- LogKV(alternatingKeyValues ...interface{})
-
- // SetBaggageItem sets a key:value pair on this Span and its SpanContext
- // that also propagates to descendants of this Span.
- //
- // SetBaggageItem() enables powerful functionality given a full-stack
- // opentracing integration (e.g., arbitrary application data from a mobile
- // app can make it, transparently, all the way into the depths of a storage
- // system), and with it some powerful costs: use this feature with care.
- //
- // IMPORTANT NOTE #1: SetBaggageItem() will only propagate baggage items to
- // *future* causal descendants of the associated Span.
- //
- // IMPORTANT NOTE #2: Use this thoughtfully and with care. Every key and
- // value is copied into every local *and remote* child of the associated
- // Span, and that can add up to a lot of network and cpu overhead.
- //
- // Returns a reference to this Span for chaining.
- SetBaggageItem(restrictedKey, value string) Span
-
- // Gets the value for a baggage item given its key. Returns the empty string
- // if the value isn't found in this Span.
- BaggageItem(restrictedKey string) string
-
- // Provides access to the Tracer that created this Span.
- Tracer() Tracer
-
- // Deprecated: use LogFields or LogKV
- LogEvent(event string)
- // Deprecated: use LogFields or LogKV
- LogEventWithPayload(event string, payload interface{})
- // Deprecated: use LogFields or LogKV
- Log(data LogData)
-}
-
-// LogRecord is data associated with a single Span log. Every LogRecord
-// instance must specify at least one Field.
-type LogRecord struct {
- Timestamp time.Time
- Fields []log.Field
-}
-
-// FinishOptions allows Span.FinishWithOptions callers to override the finish
-// timestamp and provide log data via a bulk interface.
-type FinishOptions struct {
- // FinishTime overrides the Span's finish time, or implicitly becomes
- // time.Now() if FinishTime.IsZero().
- //
- // FinishTime must resolve to a timestamp that's >= the Span's StartTime
- // (per StartSpanOptions).
- FinishTime time.Time
-
- // LogRecords allows the caller to specify the contents of many LogFields()
- // calls with a single slice. May be nil.
- //
- // None of the LogRecord.Timestamp values may be .IsZero() (i.e., they must
- // be set explicitly). Also, they must be >= the Span's start timestamp and
- // <= the FinishTime (or time.Now() if FinishTime.IsZero()). Otherwise the
- // behavior of FinishWithOptions() is undefined.
- //
- // If specified, the caller hands off ownership of LogRecords at
- // FinishWithOptions() invocation time.
- //
- // If specified, the (deprecated) BulkLogData must be nil or empty.
- LogRecords []LogRecord
-
- // BulkLogData is DEPRECATED.
- BulkLogData []LogData
-}
-
-// LogData is DEPRECATED
-type LogData struct {
- Timestamp time.Time
- Event string
- Payload interface{}
-}
-
-// ToLogRecord converts a deprecated LogData to a non-deprecated LogRecord
-func (ld *LogData) ToLogRecord() LogRecord {
- var literalTimestamp time.Time
- if ld.Timestamp.IsZero() {
- literalTimestamp = time.Now()
- } else {
- literalTimestamp = ld.Timestamp
- }
- rval := LogRecord{
- Timestamp: literalTimestamp,
- }
- if ld.Payload == nil {
- rval.Fields = []log.Field{
- log.String("event", ld.Event),
- }
- } else {
- rval.Fields = []log.Field{
- log.String("event", ld.Event),
- log.Object("payload", ld.Payload),
- }
- }
- return rval
-}
diff --git a/vendor/github.com/opentracing/opentracing-go/tracer.go b/vendor/github.com/opentracing/opentracing-go/tracer.go
deleted file mode 100644
index 715f0cedf..000000000
--- a/vendor/github.com/opentracing/opentracing-go/tracer.go
+++ /dev/null
@@ -1,304 +0,0 @@
-package opentracing
-
-import "time"
-
-// Tracer is a simple, thin interface for Span creation and SpanContext
-// propagation.
-type Tracer interface {
-
- // Create, start, and return a new Span with the given `operationName` and
- // incorporate the given StartSpanOption `opts`. (Note that `opts` borrows
- // from the "functional options" pattern, per
- // http://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis)
- //
- // A Span with no SpanReference options (e.g., opentracing.ChildOf() or
- // opentracing.FollowsFrom()) becomes the root of its own trace.
- //
- // Examples:
- //
- // var tracer opentracing.Tracer = ...
- //
- // // The root-span case:
- // sp := tracer.StartSpan("GetFeed")
- //
- // // The vanilla child span case:
- // sp := tracer.StartSpan(
- // "GetFeed",
- // opentracing.ChildOf(parentSpan.Context()))
- //
- // // All the bells and whistles:
- // sp := tracer.StartSpan(
- // "GetFeed",
- // opentracing.ChildOf(parentSpan.Context()),
- // opentracing.Tag{"user_agent", loggedReq.UserAgent},
- // opentracing.StartTime(loggedReq.Timestamp),
- // )
- //
- StartSpan(operationName string, opts ...StartSpanOption) Span
-
- // Inject() takes the `sm` SpanContext instance and injects it for
- // propagation within `carrier`. The actual type of `carrier` depends on
- // the value of `format`.
- //
- // OpenTracing defines a common set of `format` values (see BuiltinFormat),
- // and each has an expected carrier type.
- //
- // Other packages may declare their own `format` values, much like the keys
- // used by `context.Context` (see https://godoc.org/context#WithValue).
- //
- // Example usage (sans error handling):
- //
- // carrier := opentracing.HTTPHeadersCarrier(httpReq.Header)
- // err := tracer.Inject(
- // span.Context(),
- // opentracing.HTTPHeaders,
- // carrier)
- //
- // NOTE: All opentracing.Tracer implementations MUST support all
- // BuiltinFormats.
- //
- // Implementations may return opentracing.ErrUnsupportedFormat if `format`
- // is not supported by (or not known by) the implementation.
- //
- // Implementations may return opentracing.ErrInvalidCarrier or any other
- // implementation-specific error if the format is supported but injection
- // fails anyway.
- //
- // See Tracer.Extract().
- Inject(sm SpanContext, format interface{}, carrier interface{}) error
-
- // Extract() returns a SpanContext instance given `format` and `carrier`.
- //
- // OpenTracing defines a common set of `format` values (see BuiltinFormat),
- // and each has an expected carrier type.
- //
- // Other packages may declare their own `format` values, much like the keys
- // used by `context.Context` (see
- // https://godoc.org/golang.org/x/net/context#WithValue).
- //
- // Example usage (with StartSpan):
- //
- //
- // carrier := opentracing.HTTPHeadersCarrier(httpReq.Header)
- // clientContext, err := tracer.Extract(opentracing.HTTPHeaders, carrier)
- //
- // // ... assuming the ultimate goal here is to resume the trace with a
- // // server-side Span:
- // var serverSpan opentracing.Span
- // if err == nil {
- // span = tracer.StartSpan(
- // rpcMethodName, ext.RPCServerOption(clientContext))
- // } else {
- // span = tracer.StartSpan(rpcMethodName)
- // }
- //
- //
- // NOTE: All opentracing.Tracer implementations MUST support all
- // BuiltinFormats.
- //
- // Return values:
- // - A successful Extract returns a SpanContext instance and a nil error
- // - If there was simply no SpanContext to extract in `carrier`, Extract()
- // returns (nil, opentracing.ErrSpanContextNotFound)
- // - If `format` is unsupported or unrecognized, Extract() returns (nil,
- // opentracing.ErrUnsupportedFormat)
- // - If there are more fundamental problems with the `carrier` object,
- // Extract() may return opentracing.ErrInvalidCarrier,
- // opentracing.ErrSpanContextCorrupted, or implementation-specific
- // errors.
- //
- // See Tracer.Inject().
- Extract(format interface{}, carrier interface{}) (SpanContext, error)
-}
-
-// StartSpanOptions allows Tracer.StartSpan() callers and implementors a
-// mechanism to override the start timestamp, specify Span References, and make
-// a single Tag or multiple Tags available at Span start time.
-//
-// StartSpan() callers should look at the StartSpanOption interface and
-// implementations available in this package.
-//
-// Tracer implementations can convert a slice of `StartSpanOption` instances
-// into a `StartSpanOptions` struct like so:
-//
-// func StartSpan(opName string, opts ...opentracing.StartSpanOption) {
-// sso := opentracing.StartSpanOptions{}
-// for _, o := range opts {
-// o.Apply(&sso)
-// }
-// ...
-// }
-//
-type StartSpanOptions struct {
- // Zero or more causal references to other Spans (via their SpanContext).
- // If empty, start a "root" Span (i.e., start a new trace).
- References []SpanReference
-
- // StartTime overrides the Span's start time, or implicitly becomes
- // time.Now() if StartTime.IsZero().
- StartTime time.Time
-
- // Tags may have zero or more entries; the restrictions on map values are
- // identical to those for Span.SetTag(). May be nil.
- //
- // If specified, the caller hands off ownership of Tags at
- // StartSpan() invocation time.
- Tags map[string]interface{}
-}
-
-// StartSpanOption instances (zero or more) may be passed to Tracer.StartSpan.
-//
-// StartSpanOption borrows from the "functional options" pattern, per
-// http://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis
-type StartSpanOption interface {
- Apply(*StartSpanOptions)
-}
-
-// SpanReferenceType is an enum type describing different categories of
-// relationships between two Spans. If Span-2 refers to Span-1, the
-// SpanReferenceType describes Span-1 from Span-2's perspective. For example,
-// ChildOfRef means that Span-1 created Span-2.
-//
-// NOTE: Span-1 and Span-2 do *not* necessarily depend on each other for
-// completion; e.g., Span-2 may be part of a background job enqueued by Span-1,
-// or Span-2 may be sitting in a distributed queue behind Span-1.
-type SpanReferenceType int
-
-const (
- // ChildOfRef refers to a parent Span that caused *and* somehow depends
- // upon the new child Span. Often (but not always), the parent Span cannot
- // finish until the child Span does.
- //
- // An timing diagram for a ChildOfRef that's blocked on the new Span:
- //
- // [-Parent Span---------]
- // [-Child Span----]
- //
- // See http://opentracing.io/spec/
- //
- // See opentracing.ChildOf()
- ChildOfRef SpanReferenceType = iota
-
- // FollowsFromRef refers to a parent Span that does not depend in any way
- // on the result of the new child Span. For instance, one might use
- // FollowsFromRefs to describe pipeline stages separated by queues,
- // or a fire-and-forget cache insert at the tail end of a web request.
- //
- // A FollowsFromRef Span is part of the same logical trace as the new Span:
- // i.e., the new Span is somehow caused by the work of its FollowsFromRef.
- //
- // All of the following could be valid timing diagrams for children that
- // "FollowFrom" a parent.
- //
- // [-Parent Span-] [-Child Span-]
- //
- //
- // [-Parent Span--]
- // [-Child Span-]
- //
- //
- // [-Parent Span-]
- // [-Child Span-]
- //
- // See http://opentracing.io/spec/
- //
- // See opentracing.FollowsFrom()
- FollowsFromRef
-)
-
-// SpanReference is a StartSpanOption that pairs a SpanReferenceType and a
-// referenced SpanContext. See the SpanReferenceType documentation for
-// supported relationships. If SpanReference is created with
-// ReferencedContext==nil, it has no effect. Thus it allows for a more concise
-// syntax for starting spans:
-//
-// sc, _ := tracer.Extract(someFormat, someCarrier)
-// span := tracer.StartSpan("operation", opentracing.ChildOf(sc))
-//
-// The `ChildOf(sc)` option above will not panic if sc == nil, it will just
-// not add the parent span reference to the options.
-type SpanReference struct {
- Type SpanReferenceType
- ReferencedContext SpanContext
-}
-
-// Apply satisfies the StartSpanOption interface.
-func (r SpanReference) Apply(o *StartSpanOptions) {
- if r.ReferencedContext != nil {
- o.References = append(o.References, r)
- }
-}
-
-// ChildOf returns a StartSpanOption pointing to a dependent parent span.
-// If sc == nil, the option has no effect.
-//
-// See ChildOfRef, SpanReference
-func ChildOf(sc SpanContext) SpanReference {
- return SpanReference{
- Type: ChildOfRef,
- ReferencedContext: sc,
- }
-}
-
-// FollowsFrom returns a StartSpanOption pointing to a parent Span that caused
-// the child Span but does not directly depend on its result in any way.
-// If sc == nil, the option has no effect.
-//
-// See FollowsFromRef, SpanReference
-func FollowsFrom(sc SpanContext) SpanReference {
- return SpanReference{
- Type: FollowsFromRef,
- ReferencedContext: sc,
- }
-}
-
-// StartTime is a StartSpanOption that sets an explicit start timestamp for the
-// new Span.
-type StartTime time.Time
-
-// Apply satisfies the StartSpanOption interface.
-func (t StartTime) Apply(o *StartSpanOptions) {
- o.StartTime = time.Time(t)
-}
-
-// Tags are a generic map from an arbitrary string key to an opaque value type.
-// The underlying tracing system is responsible for interpreting and
-// serializing the values.
-type Tags map[string]interface{}
-
-// Apply satisfies the StartSpanOption interface.
-func (t Tags) Apply(o *StartSpanOptions) {
- if o.Tags == nil {
- o.Tags = make(map[string]interface{})
- }
- for k, v := range t {
- o.Tags[k] = v
- }
-}
-
-// Tag may be passed as a StartSpanOption to add a tag to new spans,
-// or its Set method may be used to apply the tag to an existing Span,
-// for example:
-//
-// tracer.StartSpan("opName", Tag{"Key", value})
-//
-// or
-//
-// Tag{"key", value}.Set(span)
-type Tag struct {
- Key string
- Value interface{}
-}
-
-// Apply satisfies the StartSpanOption interface.
-func (t Tag) Apply(o *StartSpanOptions) {
- if o.Tags == nil {
- o.Tags = make(map[string]interface{})
- }
- o.Tags[t.Key] = t.Value
-}
-
-// Set applies the tag to an existing Span.
-func (t Tag) Set(s Span) {
- s.SetTag(t.Key, t.Value)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/.gitignore b/vendor/github.com/uber/jaeger-client-go/.gitignore
deleted file mode 100644
index 273490790..000000000
--- a/vendor/github.com/uber/jaeger-client-go/.gitignore
+++ /dev/null
@@ -1,15 +0,0 @@
-*.out
-*.test
-*.xml
-*.swp
-.idea/
-.tmp/
-*.iml
-*.cov
-*.html
-*.log
-gen/thrift/js
-gen/thrift/py
-vendor/
-crossdock-main
-crossdock/jaeger-docker-compose.yml
diff --git a/vendor/github.com/uber/jaeger-client-go/.gitmodules b/vendor/github.com/uber/jaeger-client-go/.gitmodules
deleted file mode 100644
index 295ebcf62..000000000
--- a/vendor/github.com/uber/jaeger-client-go/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "idl"]
- path = idl
- url = https://github.com/uber/jaeger-idl.git
diff --git a/vendor/github.com/uber/jaeger-client-go/.travis.yml b/vendor/github.com/uber/jaeger-client-go/.travis.yml
deleted file mode 100644
index f9c9a7776..000000000
--- a/vendor/github.com/uber/jaeger-client-go/.travis.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-sudo: required
-
-language: go
-go_import_path: github.com/uber/jaeger-client-go
-
-dist: trusty
-
-matrix:
- include:
- - go: 1.14.x
- env:
- - TESTS=true
- - USE_DEP=true
- - COVERAGE=true
- - go: 1.14.x
- env:
- - USE_DEP=true
- - CROSSDOCK=true
- - go: 1.14.x
- env:
- - TESTS=true
- - USE_DEP=false
- - USE_GLIDE=true
- # test with previous version of Go
- - go: 1.13.x
- env:
- - TESTS=true
- - USE_DEP=true
- - CI_SKIP_LINT=true
-
-services:
- - docker
-
-env:
- global:
- - DOCKER_COMPOSE_VERSION=1.8.0
- - COMMIT=${TRAVIS_COMMIT::8}
- # DOCKER_PASS
- - secure: "CnjVyxNvMC/dhr/eR7C+FiWucZ4/O5LfAuz9YU0qlnV6XLR7XXRtzZlfFKIImJT6xHp+OptTqAIXqUbvwK2OXDP1ZsLiWRm+2elb9/isGusWXjs3g817lX8njSUcIFILbfi+vAE7UD2BKjHxpmvWmCZidisU1rcaZ9OQNPqMnNIDxVx0FOTwYx+2hfkdjnN5dikzafBDQ6ZZV/mGbcaTG45GGFU6DHyVLzf9qCPXyXnz2+VDhcoPQsYkzE56XHCmHxvEfXxgfqYefJNUlFPhniAQySVsCNVDJ8QcCV6uHaXoIzxJKx9FdUnWKI1/AtpQsTZPgEm4Ujnt+kGJsXopXy2Xx4MZxmcTCBwAMjZxPMF7KoojbtDeOZgEMtf1tGPN6DTNc3NpVmr0BKZ44lhqk+vnd8HAiC1tHDEoSb1Esl7dMUUf1qZAh3MtT+NYi3mTwyx/ilXUS7KPyy7x0ezB3kGuMoLhvR2hrprqRr5NOV2hrd1au+IXmb+4IanFOsBlceBfs8P0JFMO/aw15r+HimSZpQsJx//IT0LReCZYXLe0/WVsF/8+HDwHKlO99gGpk4iXlNKKvdPWabihMp3I3peMrvL+jnlwh47RqHs/0Q71xsKjVWTn+Svq3FpVP0Pgyxhg+oG4WEByBiLnBQcZwSBhWexkJrNI73GzaZiIldk="
- # DOCKER_USER
- - secure: "bpBSmypHzI4PnteM4cwLiMC2163Sj/4mEl+1dj+6NWl2tr1hREeVXKhsWBpah25n6BDyr2A4yhBZcWLaNKrsCKT3U37csAQTOFVeQ9x5xhPq+ohANd/OsspFsxNZaKwx161LizH/uTDotMxxevZacsyYWGNv/cRFkwcQ8upLkReRR6puJ+jNQC0BFpKWBJY/zpm5J7xFb7FO20LvQVyRgsgzqWmg9oRNVw9uwOfSY3btacftYctDLUbAr8YRNHd2C6dZnMAi8KdDTLXKTqjKmp6WidOmi92Ml7tOjB+bV6TOaVAhrcI5Rdje4rRWG4MucAjPMP0ZBW36KTfcGqFUcDhX7UqISe2WxoI+8ZD6fJ+nNtD3bk4YAUJB4BSs2sQdiYyjpHyGJR6RW50+3uRz2YbXpzVr9wqv2lZSl/xy3wC5Hag55uqzVlSiDw2pK8lctT3dnQveE7PqAI577PjF2NrHlgrBbykOwwUCNbRTmykzqoDnkxclmiZ+rflEeWsSYglePK/d6Gj9+N7wJZM5heprdJJMFTrzMWZ21Ll9ZGY9updCBKmJA8pBYiLHbu0lWOp+9QUGC+621Zq0d1PHhN6L4eXk/f3RNoZTr//cX6WdNmmO7tBbaGpmp/UYiYTY1WO9vP7tCDsT75k285HCfnIrlGRdbCZZbfuYNGPKIQ0="
-
-install:
- - make install-ci USE_DEP=$USE_DEP
- - if [ "$CROSSDOCK" == true ]; then bash ./travis/install-crossdock-deps.sh ; fi
-
-script:
- - if [ "$TESTS" == true ]; then make test-ci ; else echo 'skipping tests'; fi
- - if [ "$CROSSDOCK" == true ]; then bash ./travis/build-crossdock.sh ; else echo 'skipping crossdock'; fi
-
-after_success:
- - if [ "$COVERAGE" == true ]; then mv cover.out coverage.txt ; else echo 'skipping coverage'; fi
- - if [ "$COVERAGE" == true ]; then bash <(curl -s https://codecov.io/bash) ; else echo 'skipping coverage'; fi
-
-after_failure:
- - if [ "$CROSSDOCK" == true ]; then timeout 5 docker-compose -f crossdock/docker-compose.yml logs; fi
diff --git a/vendor/github.com/uber/jaeger-client-go/CHANGELOG.md b/vendor/github.com/uber/jaeger-client-go/CHANGELOG.md
deleted file mode 100644
index cab87e9d6..000000000
--- a/vendor/github.com/uber/jaeger-client-go/CHANGELOG.md
+++ /dev/null
@@ -1,351 +0,0 @@
-Changes by Version
-==================
-
-2.25.0 (2020-07-13)
--------------------
-## Breaking changes
-- [feat] Periodically re-resolve UDP server address, with opt-out (#520) -- Trevor Foster
-
- The re-resolving of UDP address is now enabled by default, to make the client more robust in Kubernetes deployments.
- The old resolve-once behavior can be restored by setting DisableAttemptReconnecting=true in the Configuration struct,
- or via JAEGER_REPORTER_ATTEMPT_RECONNECTING_DISABLED=true environment variable.
-
-## Bug fixes
-- Do not add invalid context to references (#521) -- Yuri Shkuro
-
-
-2.24.0 (2020-06-14)
--------------------
-- Mention FromEnv() in the README, docs, and examples (#518) -- Martin Lercher
-- Serialize access to RemotelyControlledSampler.sampler (#515) -- Dima
-- Override reporter config only when agent host/port is set in env (#513) -- ilylia
-- Converge on JAEGER_SAMPLING_ENDPOINT env variable (#511) -- Eundoo Song
-
-
-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)
--------------------
-
-- Increase UDP batch overhead to account for data loss metrics ([#488](https://github.com/jaegertracing/jaeger-client-go/pull/488)) -- Yuri Shkuro
-
-
-2.22.0 (2020-01-15)
--------------------
-
-- Report data loss stats to Jaeger backend ([#482](https://github.com/jaegertracing/jaeger-client-go/pull/482)) -- Yuri Shkuro
-- Add limit on log records per span ([#483](https://github.com/jaegertracing/jaeger-client-go/pull/483)) -- Sokolov Yura
-
-
-2.21.1 (2019-12-20)
--------------------
-
-- Update version correctly.
-
-
-2.21.0 (2019-12-20)
--------------------
-
-- Clarify reporting error logs ([#469](https://github.com/jaegertracing/jaeger-client-go/pull/469)) -- Yuri Shkuro
-- Do not strip leading zeros from trace IDs ([#472](https://github.com/jaegertracing/jaeger-client-go/pull/472)) -- Yuri Shkuro
-- Chore (docs): fixed a couple of typos ([#475](https://github.com/jaegertracing/jaeger-client-go/pull/475)) -- Marc Bramaud
-- Support custom HTTP headers when reporting spans over HTTP ([#479](https://github.com/jaegertracing/jaeger-client-go/pull/479)) -- Albert Teoh
-
-
-2.20.1 (2019-11-08)
--------------------
-
-Minor patch via https://github.com/jaegertracing/jaeger-client-go/pull/468
-
-- Make `AdaptiveSamplerUpdater` usable with default values; Resolves #467
-- Create `OperationNameLateBinding` sampler option and config option
-- Make `SamplerOptions` var of public type, so that its functions are discoverable via godoc
-
-
-2.20.0 (2019-11-06)
--------------------
-
-## New Features
-
-- Allow all in-process spans of a trace to share sampling state (#443) -- Prithvi Raj
-
- Sampling state is shared between all spans of the trace that are still in memory.
- This allows implementation of delayed sampling decisions (see below).
-
-- Support delayed sampling decisions (#449) -- Yuri Shkuro
-
- This is a large structural change to how the samplers work.
- It allows some samplers to be executed multiple times on different
- span events (like setting a tag) and make a positive sampling decision
- later in the span life cycle, or even based on children spans.
- See [README](./README.md#delayed-sampling) for more details.
-
- There is a related minor change in behavior of the adaptive (per-operation) sampler,
- which will no longer re-sample the trace when `span.SetOperation()` is called, i.e. the
- operation used to make the sampling decision is always the one provided at span creation.
-
-- Add experimental tag matching sampler (#452) -- Yuri Shkuro
-
- A sampler that can sample a trace based on a certain tag added to the root
- span or one of its local (in-process) children. The sampler can be used with
- another experimental `PrioritySampler` that allows multiple samplers to try
- to make a sampling decision, in a certain priority order.
-
-- [log/zap] Report whether a trace was sampled (#445) -- Abhinav Gupta
-- Allow config.FromEnv() to enrich an existing config object (#436) -- Vineeth Reddy
-
-## Minor patches
-
-- Expose Sampler on Tracer and accept sampler options via Configuration (#460) -- Yuri Shkuro
-- Fix github.com/uber-go/atomic import (#464) -- Yuri Shkuro
-- Add nodejs to crossdock tests (#441) -- Bhavin Gandhi
-- Bump Go compiler version to 1.13 (#453) -- Yuri Shkuro
-
-2.19.0 (2019-09-23)
--------------------
-
-- Upgrade jaeger-lib to 2.2 and unpin Prom client (#434) -- Yuri Shkuro
-
-
-2.18.1 (2019-09-16)
--------------------
-
-- Remove go.mod / go.sum that interfere with `go get` (#432)
-
-
-2.18.0 (2019-09-09)
--------------------
-
-- Add option "noDebugFlagOnForcedSampling" for tracer initialization [resolves #422] (#423) <Jun Guo>
-
-
-2.17.0 (2019-08-30)
--------------------
-
-- Add a flag for firehose mode (#419) <Prithvi Raj>
-- Default sampling server URL to agent (#414) <Bryan Boreham>
-- Update default sampling rate when sampling strategy is refreshed (#413) <Bryan Boreham>
-- Support "Self" Span Reference (#411) <dm03514>
-- Don't complain about blank service name if tracing is Disabled (#410) Yuri <Shkuro>
-- Use IP address from tag if exist (#402) <NikoKVCS>
-- Expose span data to custom reporters [fixes #394] (#399) <Curtis Allen>
-- Fix the span allocation in the pool (#381) <Dmitry Ponomarev>
-
-
-2.16.0 (2019-03-24)
--------------------
-
-- Add baggage to B3 codec (#319) <Pavol Loffay>
-- Add support for 128bit trace ids to zipkin thrift spans. (#378) <Douglas Reid>
-- Update zipkin propagation logic to support 128bit traceIDs (#373) <Douglas Reid>
-- Accept "true" for the x-b3-sampled header (#356) <Adrian Bogatu>
-
-- Allow setting of PoolSpans from Config object (#322) <Matthew Pound>
-- Make propagators public to allow wrapping (#379) <Ivan Babrou>
-- Change default metric namespace to use relevant separator for the metric backend (#364) <Gary Brown>
-- Change metrics prefix to jaeger_tracer and add descriptions (#346) <Gary Brown>
-- Bump OpenTracing to ^1.1.x (#383) <Yuri Shkuro>
-- Upgrade jaeger-lib to v2.0.0 (#359) <Gary Brown>
-- Avoid defer when generating random number (#358) <Gary Brown>
-- Use a pool of rand.Source to reduce lock contention when creating span ids (#357) <Gary Brown>
-- Make JAEGER_ENDPOINT take priority over JAEGER_AGENT_XXX (#342) <Eundoo Song>
-
-
-2.15.0 (2018-10-10)
--------------------
-
-- Fix FollowsFrom spans ignoring baggage/debug header from dummy parent context (#313) <Zvi Cahana>
-- Make maximum annotation length configurable in tracer options (#318) <Eric Chang>
-- Support more environment variables in configuration (#323) <Daneyon Hansen>
-- Print error on Sampler Query failure (#328) <Goutham Veeramachaneni>
-- Add an HTTPOption to support custom http.RoundTripper (#333) <Michael Puncel>
-- Return an error when an HTTP error code is seen in zipkin HTTP transport (#331) <Michael Puncel>
-
-
-2.14.0 (2018-04-30)
--------------------
-
-- Support throttling for debug traces (#274) <Isaac Hier>
-- Remove dependency on Apache Thrift (#303) <Yuri Shkuro>
-- Remove dependency on tchannel (#295) (#294) <Yuri Shkuro>
-- Test with Go 1.9 (#298) <Yuri Shkuro>
-
-
-2.13.0 (2018-04-15)
--------------------
-
-- Use value receiver for config.NewTracer() (#283) <Yuri Shkuro>
-- Lock span during jaeger thrift conversion (#273) <Won Jun Jang>
-- Fix the RemotelyControlledSampler so that it terminates go-routine on Close() (#260) <Scott Kidder> <Yuri Shkuro>
-- Added support for client configuration via env vars (#275) <Juraci Paixão Kröhling>
-- Allow overriding sampler in the Config (#270) <Mike Kabischev>
-
-
-2.12.0 (2018-03-14)
--------------------
-
-- Use lock when retrieving span.Context() (#268)
-- Add Configuration support for custom Injector and Extractor (#263) <Martin Liu>
-
-
-2.11.2 (2018-01-12)
--------------------
-
-- Add Gopkg.toml to allow using the lib with `dep`
-
-
-2.11.1 (2018-01-03)
--------------------
-
-- Do not enqueue spans after Reporter is closed (#235, #245)
-- Change default flush interval to 1sec (#243)
-
-
-2.11.0 (2017-11-27)
--------------------
-
-- Normalize metric names and tags to be compatible with Prometheus (#222)
-
-
-2.10.0 (2017-11-14)
--------------------
-
-- Support custom tracing headers (#176)
-- Add BaggageRestrictionManager (#178) and RemoteBaggageRestrictionManager (#182)
-- Do not coerce baggage keys to lower case (#196)
-- Log span name when span cannot be reported (#198)
-- Add option to enable gen128Bit for tracer (#193) and allow custom generator for high bits of trace ID (#219)
-
-
-2.9.0 (2017-07-29)
-------------------
-
-- Pin thrift <= 0.10 (#179)
-- Introduce a parallel interface ContribObserver (#159)
-
-
-2.8.0 (2017-07-05)
-------------------
-
-- Drop `jaeger.` prefix from `jaeger.hostname` process-level tag
-- Add options to set tracer tags
-
-
-2.7.0 (2017-06-21)
-------------------
-
-- Fix rate limiter balance [#135](https://github.com/uber/jaeger-client-go/pull/135) [#140](https://github.com/uber/jaeger-client-go/pull/140)
-- Default client to send Jaeger.thrift [#147](https://github.com/uber/jaeger-client-go/pull/147)
-- Save baggage in span [#153](https://github.com/uber/jaeger-client-go/pull/153)
-- Move reporter.queueLength to the top of the struct to guarantee 64bit alignment [#158](https://github.com/uber/jaeger-client-go/pull/158)
-- Support HTTP transport with jaeger.thrift [#161](https://github.com/uber/jaeger-client-go/pull/161)
-
-
-2.6.0 (2017-03-28)
-------------------
-
-- Add config option to initialize RPC Metrics feature
-
-
-2.5.0 (2017-03-23)
-------------------
-
-- Split request latency metric by success/failure [#123](https://github.com/uber/jaeger-client-go/pull/123)
-- Add mutex to adaptive sampler and fix race condition [#124](https://github.com/uber/jaeger-client-go/pull/124)
-- Fix rate limiter panic [#125](https://github.com/uber/jaeger-client-go/pull/125)
-
-
-2.4.0 (2017-03-21)
-------------------
-
-- Remove `_ms` suffix from request latency metric name [#121](https://github.com/uber/jaeger-client-go/pull/121)
-- Rename all metrics to "request" and "http_request" and use tags for other dimensions [#121](https://github.com/uber/jaeger-client-go/pull/121)
-
-
-2.3.0 (2017-03-20)
-------------------
-
-- Make Span type public to allow access to non-std methods for testing [#117](https://github.com/uber/jaeger-client-go/pull/117)
-- Add a structured way to extract traces for logging with zap [#118](https://github.com/uber/jaeger-client-go/pull/118)
-
-
-2.2.1 (2017-03-14)
-------------------
-
-- Fix panic caused by updating the remote sampler from adaptive sampler to any other sampler type (https://github.com/uber/jaeger-client-go/pull/111)
-
-
-2.2.0 (2017-03-10)
-------------------
-
-- Introduce Observer and SpanObserver (https://github.com/uber/jaeger-client-go/pull/94)
-- Add RPC metrics emitter as Observer/SpanObserver (https://github.com/uber/jaeger-client-go/pull/103)
-
-
-2.1.2 (2017-02-27)
--------------------
-
-- Fix leaky bucket bug (https://github.com/uber/jaeger-client-go/pull/99)
-- Fix zap logger Infof (https://github.com/uber/jaeger-client-go/pull/100)
-- Add tracer initialization godoc examples
-
-
-2.1.1 (2017-02-21)
--------------------
-
-- Fix inefficient usage of zap.Logger
-
-
-2.1.0 (2017-02-17)
--------------------
-
-- Add adapter for zap.Logger (https://github.com/uber-go/zap)
-- Move logging API to ./log/ package
-
-
-2.0.0 (2017-02-08)
--------------------
-
-- Support Adaptive Sampling
-- Support 128bit Trace IDs
-- Change trace/span IDs from uint64 to strong types TraceID and SpanID
-- Add Zipkin HTTP B3 Propagation format support #72
-- Rip out existing metrics and use github.com/uber/jaeger-lib/metrics
-- Change API for tracer, reporter, sampler initialization
-
-
-1.6.0 (2016-10-14)
--------------------
-
-- Add Zipkin HTTP transport
-- Support external baggage via jaeger-baggage header
-- Unpin Thrift version, keep to master
-
-
-1.5.1 (2016-09-27)
--------------------
-
-- Relax dependency on opentracing to ^1
-
-
-1.5.0 (2016-09-27)
--------------------
-
-- Upgrade to opentracing-go 1.0
-- Support KV logging for Spans
-
-
-1.4.0 (2016-09-14)
--------------------
-
-- Support debug traces via HTTP header "jaeger-debug-id"
diff --git a/vendor/github.com/uber/jaeger-client-go/CONTRIBUTING.md b/vendor/github.com/uber/jaeger-client-go/CONTRIBUTING.md
deleted file mode 100644
index 41e2154cf..000000000
--- a/vendor/github.com/uber/jaeger-client-go/CONTRIBUTING.md
+++ /dev/null
@@ -1,170 +0,0 @@
-# How to Contribute to Jaeger
-
-We'd love your help!
-
-Jaeger is [Apache 2.0 licensed](LICENSE) and accepts contributions via GitHub
-pull requests. This document outlines some of the conventions on development
-workflow, commit message formatting, contact points and other resources to make
-it easier to get your contribution accepted.
-
-We gratefully welcome improvements to documentation as well as to code.
-
-# Certificate of Origin
-
-By contributing to this project you agree to the [Developer Certificate of
-Origin](https://developercertificate.org/) (DCO). This document was created
-by the Linux Kernel community and is a simple statement that you, as a
-contributor, have the legal right to make the contribution. See the [DCO](DCO)
-file for details.
-
-## Getting Started
-
-This library uses [dep](https://golang.github.io/dep/) to manage dependencies.
-
-To get started, make sure you clone the Git repository into the correct location
-`github.com/uber/jaeger-client-go` relative to `$GOPATH`:
-
-```
-mkdir -p $GOPATH/src/github.com/uber
-cd $GOPATH/src/github.com/uber
-git clone git@github.com:jaegertracing/jaeger-client-go.git jaeger-client-go
-cd jaeger-client-go
-git submodule update --init --recursive
-```
-
-Then install dependencies and run the tests:
-
-```
-make install
-make test
-```
-
-## Imports grouping
-
-This projects follows the following pattern for grouping imports in Go files:
- * imports from standard library
- * imports from other projects
- * imports from `jaeger-client-go` project
-
-For example:
-
-```go
-import (
- "fmt"
-
- "github.com/uber/jaeger-lib/metrics"
- "go.uber.org/zap"
-
- "github.com/uber/jaeger-client-go/config"
-)
-```
-
-## Making A Change
-
-*Before making any significant changes, please [open an
-issue](https://github.com/jaegertracing/jaeger-client-go/issues).* Discussing your proposed
-changes ahead of time will make the contribution process smooth for everyone.
-
-Once we've discussed your changes and you've got your code ready, make sure
-that tests are passing (`make test` or `make cover`) and open your PR. Your
-pull request is most likely to be accepted if it:
-
-* Includes tests for new functionality.
-* Follows the guidelines in [Effective
- Go](https://golang.org/doc/effective_go.html) and the [Go team's common code
- review comments](https://github.com/golang/go/wiki/CodeReviewComments).
-* Has a [good commit message](https://chris.beams.io/posts/git-commit/):
- * Separate subject from body with a blank line
- * Limit the subject line to 50 characters
- * Capitalize the subject line
- * Do not end the subject line with a period
- * Use the imperative mood in the subject line
- * Wrap the body at 72 characters
- * Use the body to explain _what_ and _why_ instead of _how_
-* Each commit must be signed by the author ([see below](#sign-your-work)).
-
-## License
-
-By contributing your code, you agree to license your contribution under the terms
-of the [Apache License](LICENSE).
-
-If you are adding a new file it should have a header like below. The easiest
-way to add such header is to run `make fmt`.
-
-```
-// Copyright (c) 2017 The Jaeger 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.
-```
-
-## Sign your work
-
-The sign-off is a simple line at the end of the explanation for the
-patch, which certifies that you wrote it or otherwise have the right to
-pass it on as an open-source patch. The rules are pretty simple: if you
-can certify the below (from
-[developercertificate.org](http://developercertificate.org/)):
-
-```
-Developer Certificate of Origin
-Version 1.1
-
-Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
-660 York Street, Suite 102,
-San Francisco, CA 94110 USA
-
-Everyone is permitted to copy and distribute verbatim copies of this
-license document, but changing it is not allowed.
-
-
-Developer's Certificate of Origin 1.1
-
-By making a contribution to this project, I certify that:
-
-(a) The contribution was created in whole or in part by me and I
- have the right to submit it under the open source license
- indicated in the file; or
-
-(b) The contribution is based upon previous work that, to the best
- of my knowledge, is covered under an appropriate open source
- license and I have the right under that license to submit that
- work with modifications, whether created in whole or in part
- by me, under the same open source license (unless I am
- permitted to submit under a different license), as indicated
- in the file; or
-
-(c) The contribution was provided directly to me by some other
- person who certified (a), (b) or (c) and I have not modified
- it.
-
-(d) I understand and agree that this project and the contribution
- are public and that a record of the contribution (including all
- personal information I submit with it, including my sign-off) is
- maintained indefinitely and may be redistributed consistent with
- this project or the open source license(s) involved.
-```
-
-then you just add a line to every git commit message:
-
- Signed-off-by: Joe Smith <joe@gmail.com>
-
-using your real name (sorry, no pseudonyms or anonymous contributions.)
-
-You can add the sign off when creating the git commit via `git commit -s`.
-
-If you want this to be automatic you can set up some aliases:
-
-```
-git config --add alias.amend "commit -s --amend"
-git config --add alias.c "commit -s"
-```
diff --git a/vendor/github.com/uber/jaeger-client-go/DCO b/vendor/github.com/uber/jaeger-client-go/DCO
deleted file mode 100644
index 068953d4b..000000000
--- a/vendor/github.com/uber/jaeger-client-go/DCO
+++ /dev/null
@@ -1,37 +0,0 @@
-Developer Certificate of Origin
-Version 1.1
-
-Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
-660 York Street, Suite 102,
-San Francisco, CA 94110 USA
-
-Everyone is permitted to copy and distribute verbatim copies of this
-license document, but changing it is not allowed.
-
-
-Developer's Certificate of Origin 1.1
-
-By making a contribution to this project, I certify that:
-
-(a) The contribution was created in whole or in part by me and I
- have the right to submit it under the open source license
- indicated in the file; or
-
-(b) The contribution is based upon previous work that, to the best
- of my knowledge, is covered under an appropriate open source
- license and I have the right under that license to submit that
- work with modifications, whether created in whole or in part
- by me, under the same open source license (unless I am
- permitted to submit under a different license), as indicated
- in the file; or
-
-(c) The contribution was provided directly to me by some other
- person who certified (a), (b) or (c) and I have not modified
- it.
-
-(d) I understand and agree that this project and the contribution
- are public and that a record of the contribution (including all
- personal information I submit with it, including my sign-off) is
- maintained indefinitely and may be redistributed consistent with
- this project or the open source license(s) involved.
-
diff --git a/vendor/github.com/uber/jaeger-client-go/Gopkg.lock b/vendor/github.com/uber/jaeger-client-go/Gopkg.lock
deleted file mode 100644
index 387958b12..000000000
--- a/vendor/github.com/uber/jaeger-client-go/Gopkg.lock
+++ /dev/null
@@ -1,401 +0,0 @@
-# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
-
-
-[[projects]]
- digest = "1:9f3b30d9f8e0d7040f729b82dcbc8f0dead820a133b3147ce355fc451f32d761"
- name = "github.com/BurntSushi/toml"
- packages = ["."]
- pruneopts = "UT"
- revision = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005"
- version = "v0.3.1"
-
-[[projects]]
- digest = "1:d6afaeed1502aa28e80a4ed0981d570ad91b2579193404256ce672ed0a609e0d"
- name = "github.com/beorn7/perks"
- packages = ["quantile"]
- pruneopts = "UT"
- revision = "37c8de3658fcb183f997c4e13e8337516ab753e6"
- version = "v1.0.1"
-
-[[projects]]
- branch = "master"
- digest = "1:4c4c33075b704791d6a7f09dfb55c66769e8a1dc6adf87026292d274fe8ad113"
- name = "github.com/codahale/hdrhistogram"
- packages = ["."]
- pruneopts = "UT"
- revision = "3a0bb77429bd3a61596f5e8a3172445844342120"
-
-[[projects]]
- branch = "master"
- digest = "1:a382acd6150713655ded76ab5fbcbc7924a7808dab4312dda5d1f23dd8ce5277"
- name = "github.com/crossdock/crossdock-go"
- packages = [
- ".",
- "assert",
- "require",
- ]
- pruneopts = "UT"
- revision = "049aabb0122b03bc9bd30cab8f3f91fb60166361"
-
-[[projects]]
- digest = "1:ffe9824d294da03b391f44e1ae8281281b4afc1bdaa9588c9097785e3af10cec"
- name = "github.com/davecgh/go-spew"
- packages = ["spew"]
- pruneopts = "UT"
- revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"
- version = "v1.1.1"
-
-[[projects]]
- digest = "1:7ae311278f7ccaa724de8f2cdec0a507ba3ee6dea8c77237e8157bcf64b0f28b"
- name = "github.com/golang/mock"
- packages = ["gomock"]
- pruneopts = "UT"
- revision = "3a35fb6e3e18b9dbfee291262260dee7372d2a92"
- version = "v1.4.3"
-
-[[projects]]
- digest = "1:573ca21d3669500ff845bdebee890eb7fc7f0f50c59f2132f2a0c6b03d85086a"
- name = "github.com/golang/protobuf"
- packages = ["proto"]
- pruneopts = "UT"
- revision = "6c65a5562fc06764971b7c5d05c76c75e84bdbf7"
- version = "v1.3.2"
-
-[[projects]]
- digest = "1:ff5ebae34cfbf047d505ee150de27e60570e8c394b3b8fdbb720ff6ac71985fc"
- name = "github.com/matttproud/golang_protobuf_extensions"
- packages = ["pbutil"]
- pruneopts = "UT"
- revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c"
- version = "v1.0.1"
-
-[[projects]]
- digest = "1:727b8f567a30d0739d6c26b9472b3422b351c93cf62095164c845a54b16fc18e"
- name = "github.com/opentracing/opentracing-go"
- packages = [
- ".",
- "ext",
- "harness",
- "log",
- ]
- pruneopts = "UT"
- revision = "659c90643e714681897ec2521c60567dd21da733"
- version = "v1.1.0"
-
-[[projects]]
- digest = "1:cf31692c14422fa27c83a05292eb5cbe0fb2775972e8f1f8446a71549bd8980b"
- name = "github.com/pkg/errors"
- packages = ["."]
- pruneopts = "UT"
- revision = "ba968bfe8b2f7e042a574c888954fccecfa385b4"
- version = "v0.8.1"
-
-[[projects]]
- digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe"
- name = "github.com/pmezard/go-difflib"
- packages = ["difflib"]
- pruneopts = "UT"
- revision = "792786c7400a136282c1664665ae0a8db921c6c2"
- version = "v1.0.0"
-
-[[projects]]
- digest = "1:7097829edd12fd7211fca0d29496b44f94ef9e6d72f88fb64f3d7b06315818ad"
- name = "github.com/prometheus/client_golang"
- packages = [
- "prometheus",
- "prometheus/internal",
- ]
- pruneopts = "UT"
- revision = "170205fb58decfd011f1550d4cfb737230d7ae4f"
- version = "v1.1.0"
-
-[[projects]]
- branch = "master"
- digest = "1:2d5cd61daa5565187e1d96bae64dbbc6080dacf741448e9629c64fd93203b0d4"
- name = "github.com/prometheus/client_model"
- packages = ["go"]
- pruneopts = "UT"
- revision = "14fe0d1b01d4d5fc031dd4bec1823bd3ebbe8016"
-
-[[projects]]
- digest = "1:f119e3205d3a1f0f19dbd7038eb37528e2c6f0933269dc344e305951fb87d632"
- name = "github.com/prometheus/common"
- packages = [
- "expfmt",
- "internal/bitbucket.org/ww/goautoneg",
- "model",
- ]
- pruneopts = "UT"
- revision = "287d3e634a1e550c9e463dd7e5a75a422c614505"
- version = "v0.7.0"
-
-[[projects]]
- digest = "1:a210815b437763623ecca8eb91e6a0bf4f2d6773c5a6c9aec0e28f19e5fd6deb"
- name = "github.com/prometheus/procfs"
- packages = [
- ".",
- "internal/fs",
- "internal/util",
- ]
- pruneopts = "UT"
- revision = "499c85531f756d1129edd26485a5f73871eeb308"
- version = "v0.0.5"
-
-[[projects]]
- digest = "1:ac83cf90d08b63ad5f7e020ef480d319ae890c208f8524622a2f3136e2686b02"
- name = "github.com/stretchr/objx"
- packages = ["."]
- pruneopts = "UT"
- revision = "477a77ecc69700c7cdeb1fa9e129548e1c1c393c"
- version = "v0.1.1"
-
-[[projects]]
- digest = "1:d88ba57c4e8f5db6ce9ab6605a89f4542ee751b576884ba5271c2ba3d4b6f2d2"
- name = "github.com/stretchr/testify"
- packages = [
- "assert",
- "mock",
- "require",
- "suite",
- ]
- pruneopts = "UT"
- revision = "221dbe5ed46703ee255b1da0dec05086f5035f62"
- version = "v1.4.0"
-
-[[projects]]
- digest = "1:5b98956718573850caf7e0fd00b571a6657c4ef1f345ddf0c96b43ce355fe862"
- name = "github.com/uber/jaeger-client-go"
- packages = [
- ".",
- "config",
- "crossdock/client",
- "crossdock/common",
- "crossdock/endtoend",
- "crossdock/log",
- "crossdock/server",
- "crossdock/thrift/tracetest",
- "internal/baggage",
- "internal/baggage/remote",
- "internal/reporterstats",
- "internal/spanlog",
- "internal/throttler",
- "internal/throttler/remote",
- "log",
- "log/zap/mock_opentracing",
- "rpcmetrics",
- "testutils",
- "thrift",
- "thrift-gen/agent",
- "thrift-gen/baggage",
- "thrift-gen/jaeger",
- "thrift-gen/sampling",
- "thrift-gen/zipkincore",
- "transport",
- "transport/zipkin",
- "utils",
- ]
- pruneopts = "UT"
- revision = "66c008c3d6ad856cac92a0af53186efbffa8e6a5"
- version = "v2.24.0"
-
-[[projects]]
- digest = "1:0ec60ffd594af00ba1660bc746aa0e443d27dd4003dee55f9d08a0b4ff5431a3"
- name = "github.com/uber/jaeger-lib"
- packages = [
- "metrics",
- "metrics/metricstest",
- "metrics/prometheus",
- ]
- pruneopts = "UT"
- revision = "a87ae9d84fb038a8d79266298970720be7c80fcd"
- version = "v2.2.0"
-
-[[projects]]
- digest = "1:0bdcb0c740d79d400bd3f7946ac22a715c94db62b20bfd2e01cd50693aba0600"
- name = "go.uber.org/atomic"
- packages = ["."]
- pruneopts = "UT"
- revision = "9dc4df04d0d1c39369750a9f6c32c39560672089"
- version = "v1.5.0"
-
-[[projects]]
- digest = "1:002ebc50f3ef475ac325e1904be931d9dcba6dc6d73b5682afce0c63436e3902"
- name = "go.uber.org/multierr"
- packages = ["."]
- pruneopts = "UT"
- revision = "c3fc3d02ec864719d8e25be2d7dde1e35a36aa27"
- version = "v1.3.0"
-
-[[projects]]
- branch = "master"
- digest = "1:3032e90a153750ea149f68bf081f97ca738f041fba45c41c80737f572ffdf2f4"
- name = "go.uber.org/tools"
- packages = ["update-license"]
- pruneopts = "UT"
- revision = "2cfd321de3ee5d5f8a5fda2521d1703478334d98"
-
-[[projects]]
- digest = "1:98a70115729234dc73ee7bb83973cb39cb8fedf278d17df77264382bad0183ec"
- name = "go.uber.org/zap"
- packages = [
- ".",
- "buffer",
- "internal/bufferpool",
- "internal/color",
- "internal/exit",
- "zapcore",
- "zaptest/observer",
- ]
- pruneopts = "UT"
- revision = "a6015e13fab9b744d96085308ce4e8f11bad1996"
- version = "v1.12.0"
-
-[[projects]]
- branch = "master"
- digest = "1:21d7bad9b7da270fd2d50aba8971a041bd691165c95096a2a4c68db823cbc86a"
- name = "golang.org/x/lint"
- packages = [
- ".",
- "golint",
- ]
- pruneopts = "UT"
- revision = "16217165b5de779cb6a5e4fc81fa9c1166fda457"
-
-[[projects]]
- branch = "master"
- digest = "1:f8b491a7c25030a895a0e579742d07136e6958e77ef2d46e769db8eec4e58fcd"
- name = "golang.org/x/net"
- packages = [
- "context",
- "context/ctxhttp",
- ]
- pruneopts = "UT"
- revision = "0deb6923b6d97481cb43bc1043fe5b72a0143032"
-
-[[projects]]
- branch = "master"
- digest = "1:5dfb17d45415b7b8927382f53955a66f55f9d9d11557aa82f7f481d642ab247a"
- name = "golang.org/x/sys"
- packages = ["windows"]
- pruneopts = "UT"
- revision = "f43be2a4598cf3a47be9f94f0c28197ed9eae611"
-
-[[projects]]
- branch = "master"
- digest = "1:bae8b3bf837d9d7f601776f37f44e031d46943677beff8fb2eb9c7317d44de2f"
- name = "golang.org/x/tools"
- packages = [
- "go/analysis",
- "go/analysis/passes/inspect",
- "go/ast/astutil",
- "go/ast/inspector",
- "go/buildutil",
- "go/gcexportdata",
- "go/internal/gcimporter",
- "go/internal/packagesdriver",
- "go/packages",
- "go/types/objectpath",
- "go/types/typeutil",
- "internal/fastwalk",
- "internal/gopathwalk",
- "internal/semver",
- "internal/span",
- ]
- pruneopts = "UT"
- revision = "8dbcdeb83d3faec5315146800b375c4962a42fc6"
-
-[[projects]]
- digest = "1:59f10c1537d2199d9115d946927fe31165959a95190849c82ff11e05803528b0"
- name = "gopkg.in/yaml.v2"
- packages = ["."]
- pruneopts = "UT"
- revision = "f221b8435cfb71e54062f6c6e99e9ade30b124d5"
- version = "v2.2.4"
-
-[[projects]]
- digest = "1:131158a88aad1f94854d0aa21a64af2802d0a470fb0f01cb33c04fafd2047111"
- name = "honnef.co/go/tools"
- packages = [
- "arg",
- "cmd/staticcheck",
- "config",
- "deprecated",
- "facts",
- "functions",
- "go/types/typeutil",
- "internal/cache",
- "internal/passes/buildssa",
- "internal/renameio",
- "internal/sharedcheck",
- "lint",
- "lint/lintdsl",
- "lint/lintutil",
- "lint/lintutil/format",
- "loader",
- "printf",
- "simple",
- "ssa",
- "ssautil",
- "staticcheck",
- "staticcheck/vrp",
- "stylecheck",
- "unused",
- "version",
- ]
- pruneopts = "UT"
- revision = "afd67930eec2a9ed3e9b19f684d17a062285f16a"
- version = "2019.2.3"
-
-[solve-meta]
- analyzer-name = "dep"
- analyzer-version = 1
- input-imports = [
- "github.com/crossdock/crossdock-go",
- "github.com/golang/mock/gomock",
- "github.com/opentracing/opentracing-go",
- "github.com/opentracing/opentracing-go/ext",
- "github.com/opentracing/opentracing-go/harness",
- "github.com/opentracing/opentracing-go/log",
- "github.com/pkg/errors",
- "github.com/prometheus/client_golang/prometheus",
- "github.com/stretchr/testify/assert",
- "github.com/stretchr/testify/mock",
- "github.com/stretchr/testify/require",
- "github.com/stretchr/testify/suite",
- "github.com/uber/jaeger-client-go",
- "github.com/uber/jaeger-client-go/config",
- "github.com/uber/jaeger-client-go/crossdock/client",
- "github.com/uber/jaeger-client-go/crossdock/common",
- "github.com/uber/jaeger-client-go/crossdock/endtoend",
- "github.com/uber/jaeger-client-go/crossdock/log",
- "github.com/uber/jaeger-client-go/crossdock/server",
- "github.com/uber/jaeger-client-go/crossdock/thrift/tracetest",
- "github.com/uber/jaeger-client-go/internal/baggage",
- "github.com/uber/jaeger-client-go/internal/baggage/remote",
- "github.com/uber/jaeger-client-go/internal/reporterstats",
- "github.com/uber/jaeger-client-go/internal/spanlog",
- "github.com/uber/jaeger-client-go/internal/throttler",
- "github.com/uber/jaeger-client-go/internal/throttler/remote",
- "github.com/uber/jaeger-client-go/log",
- "github.com/uber/jaeger-client-go/log/zap/mock_opentracing",
- "github.com/uber/jaeger-client-go/rpcmetrics",
- "github.com/uber/jaeger-client-go/testutils",
- "github.com/uber/jaeger-client-go/thrift",
- "github.com/uber/jaeger-client-go/thrift-gen/agent",
- "github.com/uber/jaeger-client-go/thrift-gen/baggage",
- "github.com/uber/jaeger-client-go/thrift-gen/jaeger",
- "github.com/uber/jaeger-client-go/thrift-gen/sampling",
- "github.com/uber/jaeger-client-go/thrift-gen/zipkincore",
- "github.com/uber/jaeger-client-go/transport",
- "github.com/uber/jaeger-client-go/transport/zipkin",
- "github.com/uber/jaeger-client-go/utils",
- "github.com/uber/jaeger-lib/metrics",
- "github.com/uber/jaeger-lib/metrics/metricstest",
- "github.com/uber/jaeger-lib/metrics/prometheus",
- "go.uber.org/atomic",
- "go.uber.org/zap",
- "go.uber.org/zap/zapcore",
- "go.uber.org/zap/zaptest/observer",
- ]
- solver-name = "gps-cdcl"
- solver-version = 1
diff --git a/vendor/github.com/uber/jaeger-client-go/Gopkg.toml b/vendor/github.com/uber/jaeger-client-go/Gopkg.toml
deleted file mode 100644
index 1fed7f814..000000000
--- a/vendor/github.com/uber/jaeger-client-go/Gopkg.toml
+++ /dev/null
@@ -1,31 +0,0 @@
-[[constraint]]
- name = "github.com/crossdock/crossdock-go"
- branch = "master"
-
-[[constraint]]
- name = "github.com/opentracing/opentracing-go"
- version = "^1.1"
-
-[[constraint]]
- name = "github.com/prometheus/client_golang"
- version = "^1"
-
-[[constraint]]
- name = "github.com/stretchr/testify"
- version = "^1.1.3"
-
-[[constraint]]
- name = "go.uber.org/atomic"
- version = "^1"
-
-[[constraint]]
- name = "github.com/uber/jaeger-lib"
- version = "^2.2"
-
-[[constraint]]
- name = "go.uber.org/zap"
- version = "^1"
-
-[prune]
- go-tests = true
- unused-packages = true
diff --git a/vendor/github.com/uber/jaeger-client-go/Makefile b/vendor/github.com/uber/jaeger-client-go/Makefile
deleted file mode 100644
index d5e962ccf..000000000
--- a/vendor/github.com/uber/jaeger-client-go/Makefile
+++ /dev/null
@@ -1,134 +0,0 @@
-PROJECT_ROOT=github.com/uber/jaeger-client-go
-PACKAGES := . $(shell go list ./... | awk -F/ 'NR>1 {print "./"$$4"/..."}' | grep -v -e ./thrift-gen/... -e ./thrift/... | sort -u)
-# all .go files that don't exist in hidden directories
-ALL_SRC := $(shell find . -name "*.go" | grep -v -e vendor -e thrift-gen -e ./thrift/ \
- -e ".*/\..*" \
- -e ".*/_.*" \
- -e ".*/mocks.*")
-
-USE_DEP := true
-
--include crossdock/rules.mk
-
-RACE=-race
-GOTEST=go test -v $(RACE)
-GOLINT=golint
-GOVET=go vet
-GOFMT=gofmt
-FMT_LOG=fmt.log
-LINT_LOG=lint.log
-
-THRIFT_VER=0.9.3
-THRIFT_IMG=thrift:$(THRIFT_VER)
-THRIFT=docker run -v "${PWD}:/data" $(THRIFT_IMG) thrift
-THRIFT_GO_ARGS=thrift_import="github.com/apache/thrift/lib/go/thrift"
-THRIFT_GEN_DIR=thrift-gen
-
-PASS=$(shell printf "\033[32mPASS\033[0m")
-FAIL=$(shell printf "\033[31mFAIL\033[0m")
-COLORIZE=sed ''/PASS/s//$(PASS)/'' | sed ''/FAIL/s//$(FAIL)/''
-
-.DEFAULT_GOAL := test-and-lint
-
-.PHONY: test-and-lint
-test-and-lint: test fmt lint
-
-.PHONY: test
-test:
-ifeq ($(USE_DEP),true)
- dep check
-endif
- bash -c "set -e; set -o pipefail; $(GOTEST) $(PACKAGES) | $(COLORIZE)"
-
-.PHONY: fmt
-fmt:
- $(GOFMT) -e -s -l -w $(ALL_SRC)
- ./scripts/updateLicenses.sh
-
-.PHONY: lint
-lint:
- $(GOVET) $(PACKAGES)
- @cat /dev/null > $(LINT_LOG)
- @$(foreach pkg, $(PACKAGES), $(GOLINT) $(pkg) | grep -v crossdock/thrift >> $(LINT_LOG) || true;)
- @[ ! -s "$(LINT_LOG)" ] || (echo "Lint Failures" | cat - $(LINT_LOG) && false)
- @$(GOFMT) -e -s -l $(ALL_SRC) > $(FMT_LOG)
- ./scripts/updateLicenses.sh >> $(FMT_LOG)
- @[ ! -s "$(FMT_LOG)" ] || (echo "go fmt or license check failures, run 'make fmt'" | cat - $(FMT_LOG) && false)
-
-
-.PHONY: install
-install:
- @echo install: USE_DEP=$(USE_DEP) USE_GLIDE=$(USE_GLIDE)
-ifeq ($(USE_DEP),true)
- dep version || make install-dep
- dep ensure
-endif
-ifeq ($(USE_GLIDE),true)
- glide --version || go get github.com/Masterminds/glide
- glide install
-endif
-
-
-.PHONY: cover
-cover:
- $(GOTEST) -cover -coverprofile cover.out $(PACKAGES)
-
-.PHONY: cover-html
-cover-html: cover
- go tool cover -html=cover.out -o cover.html
-
-# This is not part of the regular test target because we don't want to slow it
-# down.
-.PHONY: test-examples
-test-examples:
- make -C examples
-
-.PHONY: thrift
-thrift: idl-submodule thrift-compile
-
-# TODO at the moment we're not generating tchan_*.go files
-.PHONY: thrift-compile
-thrift-compile: thrift-image
- $(THRIFT) -o /data --gen go:$(THRIFT_GO_ARGS) --out /data/$(THRIFT_GEN_DIR) /data/idl/thrift/agent.thrift
- $(THRIFT) -o /data --gen go:$(THRIFT_GO_ARGS) --out /data/$(THRIFT_GEN_DIR) /data/idl/thrift/sampling.thrift
- $(THRIFT) -o /data --gen go:$(THRIFT_GO_ARGS) --out /data/$(THRIFT_GEN_DIR) /data/idl/thrift/jaeger.thrift
- $(THRIFT) -o /data --gen go:$(THRIFT_GO_ARGS) --out /data/$(THRIFT_GEN_DIR) /data/idl/thrift/zipkincore.thrift
- $(THRIFT) -o /data --gen go:$(THRIFT_GO_ARGS) --out /data/$(THRIFT_GEN_DIR) /data/idl/thrift/baggage.thrift
- $(THRIFT) -o /data --gen go:$(THRIFT_GO_ARGS) --out /data/crossdock/thrift/ /data/idl/thrift/crossdock/tracetest.thrift
- sed -i '' 's|"zipkincore"|"$(PROJECT_ROOT)/thrift-gen/zipkincore"|g' $(THRIFT_GEN_DIR)/agent/*.go
- sed -i '' 's|"jaeger"|"$(PROJECT_ROOT)/thrift-gen/jaeger"|g' $(THRIFT_GEN_DIR)/agent/*.go
- sed -i '' 's|"github.com/apache/thrift/lib/go/thrift"|"github.com/uber/jaeger-client-go/thrift"|g' \
- $(THRIFT_GEN_DIR)/*/*.go crossdock/thrift/tracetest/*.go
- rm -rf thrift-gen/*/*-remote
- rm -rf crossdock/thrift/*/*-remote
- rm -rf thrift-gen/jaeger/collector.go
-
-.PHONY: idl-submodule
-idl-submodule:
- git submodule init
- git submodule update
-
-.PHONY: thrift-image
-thrift-image:
- $(THRIFT) -version
-
-.PHONY: install-dep
-install-dep:
- - curl -L -s https://github.com/golang/dep/releases/download/v0.5.0/dep-linux-amd64 -o $$GOPATH/bin/dep
- - chmod +x $$GOPATH/bin/dep
-
-.PHONY: install-ci
-install-ci: install
- go get github.com/wadey/gocovmerge
- go get github.com/mattn/goveralls
- go get golang.org/x/tools/cmd/cover
- go get golang.org/x/lint/golint
-
-.PHONY: test-ci
-test-ci: cover
-ifeq ($(CI_SKIP_LINT),true)
- echo 'skipping lint'
-else
- make lint
-endif
-
diff --git a/vendor/github.com/uber/jaeger-client-go/README.md b/vendor/github.com/uber/jaeger-client-go/README.md
deleted file mode 100644
index 687f5780c..000000000
--- a/vendor/github.com/uber/jaeger-client-go/README.md
+++ /dev/null
@@ -1,324 +0,0 @@
-[![GoDoc][doc-img]][doc] [![Build Status][ci-img]][ci] [![Coverage Status][cov-img]][cov] [![OpenTracing 1.0 Enabled][ot-img]][ot-url]
-
-# Jaeger Bindings for Go OpenTracing API
-
-Instrumentation library that implements an
-[OpenTracing Go](https://github.com/opentracing/opentracing-go) Tracer for Jaeger (https://jaegertracing.io).
-
-**IMPORTANT**: The library's import path is based on its original location under `github.com/uber`. Do not try to import it as `github.com/jaegertracing`, it will not compile. We might revisit this in the next major release.
- * :white_check_mark: `import "github.com/uber/jaeger-client-go"`
- * :x: `import "github.com/jaegertracing/jaeger-client-go"`
-
-## How to Contribute
-
-Please see [CONTRIBUTING.md](CONTRIBUTING.md).
-
-## Installation
-
-We recommended using a dependency manager like [dep](https://golang.github.io/dep/)
-and [semantic versioning](http://semver.org/) when including this library into an application.
-For example, Jaeger backend imports this library like this:
-
-```toml
-[[constraint]]
- name = "github.com/uber/jaeger-client-go"
- version = "2.17"
-```
-
-If you instead want to use the latest version in `master`, you can pull it via `go get`.
-Note that during `go get` you may see build errors due to incompatible dependencies, which is why
-we recommend using semantic versions for dependencies. The error may be fixed by running
-`make install` (it will install `dep` if you don't have it):
-
-```shell
-go get -u github.com/uber/jaeger-client-go/
-cd $GOPATH/src/github.com/uber/jaeger-client-go/
-git submodule update --init --recursive
-make install
-```
-
-## Initialization
-
-See tracer initialization examples in [godoc](https://godoc.org/github.com/uber/jaeger-client-go/config#pkg-examples)
-and [config/example_test.go](./config/example_test.go).
-
-### Environment variables
-
-The tracer can be initialized with values coming from environment variables, if it is
-[built from a config](https://pkg.go.dev/github.com/uber/jaeger-client-go/config?tab=doc#Configuration.NewTracer)
-that was created via [FromEnv()](https://pkg.go.dev/github.com/uber/jaeger-client-go/config?tab=doc#FromEnv).
-None of the env vars are required and all of them can be overridden via direct setting
-of the property on the configuration object.
-
-Property| Description
---- | ---
-JAEGER_SERVICE_NAME | The service name.
-JAEGER_AGENT_HOST | The hostname for communicating with agent via UDP (default `localhost`).
-JAEGER_AGENT_PORT | The port for communicating with agent via UDP (default `6831`).
-JAEGER_ENDPOINT | The HTTP endpoint for sending spans directly to a collector, i.e. http://jaeger-collector:14268/api/traces. If specified, the agent host/port are ignored.
-JAEGER_USER | Username to send as part of "Basic" authentication to the collector endpoint.
-JAEGER_PASSWORD | Password to send as part of "Basic" authentication to the collector endpoint.
-JAEGER_REPORTER_LOG_SPANS | Whether the reporter should also log the spans" `true` or `false` (default `false`).
-JAEGER_REPORTER_MAX_QUEUE_SIZE | The reporter's maximum queue size (default `100`).
-JAEGER_REPORTER_FLUSH_INTERVAL | The reporter's flush interval, with units, e.g. `500ms` or `2s` ([valid units][timeunits]; default `1s`).
-JAEGER_REPORTER_ATTEMPT_RECONNECTING_DISABLED | When true, disables udp connection helper that periodically re-resolves the agent's hostname and reconnects if there was a change (default `false`).
-JAEGER_REPORTER_ATTEMPT_RECONNECT_INTERVAL | Controls how often the agent client re-resolves the provided hostname in order to detect address changes ([valid units][timeunits]; default `30s`).
-JAEGER_SAMPLER_TYPE | The sampler type: `remote`, `const`, `probabilistic`, `ratelimiting` (default `remote`). See also https://www.jaegertracing.io/docs/latest/sampling/.
-JAEGER_SAMPLER_PARAM | The sampler parameter (number).
-JAEGER_SAMPLER_MANAGER_HOST_PORT | (deprecated) The HTTP endpoint when using the `remote` sampler.
-JAEGER_SAMPLING_ENDPOINT | The URL for the sampling configuration server when using sampler type `remote` (default `http://127.0.0.1:5778/sampling`).
-JAEGER_SAMPLER_MAX_OPERATIONS | The maximum number of operations that the sampler will keep track of (default `2000`).
-JAEGER_SAMPLER_REFRESH_INTERVAL | How often the `remote` sampler should poll the configuration server for the appropriate sampling strategy, e.g. "1m" or "30s" ([valid units][timeunits]; default `1m`).
-JAEGER_TAGS | A comma separated list of `name=value` tracer-level tags, which get added to all reported spans. The value can also refer to an environment variable using the format `${envVarName:defaultValue}`.
-JAEGER_DISABLED | Whether the tracer is disabled or not. If `true`, the `opentracing.NoopTracer` is used (default `false`).
-JAEGER_RPC_METRICS | Whether to store RPC metrics, `true` or `false` (default `false`).
-
-By default, the client sends traces via UDP to the agent at `localhost:6831`. Use `JAEGER_AGENT_HOST` and
-`JAEGER_AGENT_PORT` to send UDP traces to a different `host:port`. If `JAEGER_ENDPOINT` is set, the client sends traces
-to the endpoint via `HTTP`, making the `JAEGER_AGENT_HOST` and `JAEGER_AGENT_PORT` unused. If `JAEGER_ENDPOINT` is
-secured, HTTP basic authentication can be performed by setting the `JAEGER_USER` and `JAEGER_PASSWORD` environment
-variables.
-
-### Closing the tracer via `io.Closer`
-
-The constructor function for Jaeger Tracer returns the tracer itself and an `io.Closer` instance.
-It is recommended to structure your `main()` so that it calls the `Close()` function on the closer
-before exiting, e.g.
-
-```go
-tracer, closer, err := cfg.NewTracer(...)
-defer closer.Close()
-```
-
-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
-system sends SIGTERM instead of killing the process and you trap that signal to do a graceful
-exit, then having `defer closer.Close()` ensures that all buffered spans are flushed.
-
-### Metrics & Monitoring
-
-The tracer emits a number of different metrics, defined in
-[metrics.go](metrics.go). The monitoring backend is expected to support
-tag-based metric names, e.g. instead of `statsd`-style string names
-like `counters.my-service.jaeger.spans.started.sampled`, the metrics
-are defined by a short name and a collection of key/value tags, for
-example: `name:jaeger.traces, state:started, sampled:y`. See [metrics.go](./metrics.go)
-file for the full list and descriptions of emitted metrics.
-
-The monitoring backend is represented by the `metrics.Factory` interface from package
-[`"github.com/uber/jaeger-lib/metrics"`](https://github.com/jaegertracing/jaeger-lib/tree/master/metrics). An implementation
-of that interface can be passed as an option to either the Configuration object or the Tracer
-constructor, for example:
-
-```go
-import (
- "github.com/uber/jaeger-client-go/config"
- "github.com/uber/jaeger-lib/metrics/prometheus"
-)
-
- metricsFactory := prometheus.New()
- tracer, closer, err := config.Configuration{
- ServiceName: "your-service-name",
- }.NewTracer(
- config.Metrics(metricsFactory),
- )
-```
-
-By default, a no-op `metrics.NullFactory` is used.
-
-### Logging
-
-The tracer can be configured with an optional logger, which will be
-used to log communication errors, or log spans if a logging reporter
-option is specified in the configuration. The logging API is abstracted
-by the [Logger](logger.go) interface. A logger instance implementing
-this interface can be set on the `Config` object before calling the
-`New` method.
-
-Besides the [zap](https://github.com/uber-go/zap) implementation
-bundled with this package there is also a [go-kit](https://github.com/go-kit/kit)
-one in the [jaeger-lib](https://github.com/jaegertracing/jaeger-lib) repository.
-
-## Instrumentation for Tracing
-
-Since this tracer is fully compliant with OpenTracing API 1.0,
-all code instrumentation should only use the API itself, as described
-in the [opentracing-go](https://github.com/opentracing/opentracing-go) documentation.
-
-## Features
-
-### Reporters
-
-A "reporter" is a component that receives the finished spans and reports
-them to somewhere. Under normal circumstances, the Tracer
-should use the default `RemoteReporter`, which sends the spans out of
-process via configurable "transport". For testing purposes, one can
-use an `InMemoryReporter` that accumulates spans in a buffer and
-allows to retrieve them for later verification. Also available are
-`NullReporter`, a no-op reporter that does nothing, a `LoggingReporter`
-which logs all finished spans using their `String()` method, and a
-`CompositeReporter` that can be used to combine more than one reporter
-into one, e.g. to attach a logging reporter to the main remote reporter.
-
-### Span Reporting Transports
-
-The remote reporter uses "transports" to actually send the spans out
-of process. Currently the supported transports include:
- * [Jaeger Thrift](https://github.com/jaegertracing/jaeger-idl/blob/master/thrift/agent.thrift) over UDP or HTTP,
- * [Zipkin Thrift](https://github.com/jaegertracing/jaeger-idl/blob/master/thrift/zipkincore.thrift) over HTTP.
-
-### Sampling
-
-The tracer does not record all spans, but only those that have the
-sampling bit set in the `flags`. When a new trace is started and a new
-unique ID is generated, a sampling decision is made whether this trace
-should be sampled. The sampling decision is propagated to all downstream
-calls via the `flags` field of the trace context. The following samplers
-are available:
- 1. `RemotelyControlledSampler` uses one of the other simpler samplers
- and periodically updates it by polling an external server. This
- allows dynamic control of the sampling strategies.
- 1. `ConstSampler` always makes the same sampling decision for all
- trace IDs. it can be configured to either sample all traces, or
- to sample none.
- 1. `ProbabilisticSampler` uses a fixed sampling rate as a probability
- for a given trace to be sampled. The actual decision is made by
- comparing the trace ID with a random number multiplied by the
- sampling rate.
- 1. `RateLimitingSampler` can be used to allow only a certain fixed
- number of traces to be sampled per second.
-
-#### Delayed sampling
-
-Version 2.20 introduced the ability to delay sampling decisions in the life cycle
-of the root span. It involves several features and architectural changes:
- * **Shared sampling state**: the sampling state is shared across all local
- (i.e. in-process) spans for a given trace.
- * **New `SamplerV2` API** allows the sampler to be called at multiple points
- in the life cycle of a span:
- * on span creation
- * on overwriting span operation name
- * on setting span tags
- * on finishing the span
- * **Final/non-final sampling state**: the new `SamplerV2` API allows the sampler
- to indicate if the negative sampling decision is final or not (positive sampling
- decisions are always final). If the decision is not final, the sampler will be
- called again on further span life cycle events, like setting tags.
-
-These new features are used in the experimental `x.TagMatchingSampler`, which
-can sample a trace based on a certain tag added to the root
-span or one of its local (in-process) children. The sampler can be used with
-another experimental `x.PrioritySampler` that allows multiple samplers to try
-to make a sampling decision, in a certain priority order.
-
-### Baggage Injection
-
-The OpenTracing spec allows for [baggage][baggage], which are key value pairs that are added
-to the span context and propagated throughout the trace. An external process can inject baggage
-by setting the special HTTP Header `jaeger-baggage` on a request:
-
-```sh
-curl -H "jaeger-baggage: key1=value1, key2=value2" http://myhost.com
-```
-
-Baggage can also be programatically set inside your service:
-
-```go
-if span := opentracing.SpanFromContext(ctx); span != nil {
- span.SetBaggageItem("key", "value")
-}
-```
-
-Another service downstream of that can retrieve the baggage in a similar way:
-
-```go
-if span := opentracing.SpanFromContext(ctx); span != nil {
- val := span.BaggageItem("key")
- println(val)
-}
-```
-
-### Debug Traces (Forced Sampling)
-
-#### Programmatically
-
-The OpenTracing API defines a `sampling.priority` standard tag that
-can be used to affect the sampling of a span and its children:
-
-```go
-import (
- "github.com/opentracing/opentracing-go"
- "github.com/opentracing/opentracing-go/ext"
-)
-
-span := opentracing.SpanFromContext(ctx)
-ext.SamplingPriority.Set(span, 1)
-```
-
-#### Via HTTP Headers
-
-Jaeger Tracer also understands a special HTTP Header `jaeger-debug-id`,
-which can be set in the incoming request, e.g.
-
-```sh
-curl -H "jaeger-debug-id: some-correlation-id" http://myhost.com
-```
-
-When Jaeger sees this header in the request that otherwise has no
-tracing context, it ensures that the new trace started for this
-request will be sampled in the "debug" mode (meaning it should survive
-all downsampling that might happen in the collection pipeline), and the
-root span will have a tag as if this statement was executed:
-
-```go
-span.SetTag("jaeger-debug-id", "some-correlation-id")
-```
-
-This allows using Jaeger UI to find the trace by this tag.
-
-### Zipkin HTTP B3 compatible header propagation
-
-Jaeger Tracer supports Zipkin B3 Propagation HTTP headers, which are used
-by a lot of Zipkin tracers. This means that you can use Jaeger in conjunction with e.g. [these OpenZipkin tracers](https://github.com/openzipkin).
-
-However it is not the default propagation format, see [here](zipkin/README.md#NewZipkinB3HTTPHeaderPropagator) how to set it up.
-
-## SelfRef
-
-Jaeger Tracer supports an additional [span reference][] type call `Self`, which was proposed
-to the OpenTracing Specification (https://github.com/opentracing/specification/issues/81)
-but not yet accepted. This allows the caller to provide an already created `SpanContext`
-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:
-```
-span := tracer.StartSpan(
- "continued_span",
- jaeger.SelfRef(yourSpanContext),
-)
-...
-defer span.Finish()
-```
-
-## License
-
-[Apache 2.0 License](LICENSE).
-
-
-[doc-img]: https://godoc.org/github.com/uber/jaeger-client-go?status.svg
-[doc]: https://godoc.org/github.com/uber/jaeger-client-go
-[ci-img]: https://travis-ci.org/jaegertracing/jaeger-client-go.svg?branch=master
-[ci]: https://travis-ci.org/jaegertracing/jaeger-client-go
-[cov-img]: https://codecov.io/gh/jaegertracing/jaeger-client-go/branch/master/graph/badge.svg
-[cov]: https://codecov.io/gh/jaegertracing/jaeger-client-go
-[ot-img]: https://img.shields.io/badge/OpenTracing--1.0-enabled-blue.svg
-[ot-url]: http://opentracing.io
-[baggage]: https://github.com/opentracing/specification/blob/master/specification.md#set-a-baggage-item
-[timeunits]: https://golang.org/pkg/time/#ParseDuration
-[span reference]: https://github.com/opentracing/specification/blob/1.1/specification.md#references-between-spans
diff --git a/vendor/github.com/uber/jaeger-client-go/RELEASE.md b/vendor/github.com/uber/jaeger-client-go/RELEASE.md
deleted file mode 100644
index 12438d841..000000000
--- a/vendor/github.com/uber/jaeger-client-go/RELEASE.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Release Process
-
-1. Create a PR "Preparing for release X.Y.Z" against master branch
- * Alter CHANGELOG.md from `<placeholder_version> (unreleased)` to `<X.Y.Z> (YYYY-MM-DD)`
- * Use `git log --pretty=format:'- %s -- %an'` as the basis for for changelog entries
- * Update `JaegerClientVersion` in constants.go to `Go-X.Y.Z`
-2. Create a release "Release X.Y.Z" on Github
- * Create Tag `vX.Y.Z`
- * Copy CHANGELOG.md into the release notes
-3. Create a PR "Back to development" against master branch
- * Add `<next_version> (unreleased)` to CHANGELOG.md
- * Update `JaegerClientVersion` in constants.go to `Go-<next_version>dev`
diff --git a/vendor/github.com/uber/jaeger-client-go/baggage_setter.go b/vendor/github.com/uber/jaeger-client-go/baggage_setter.go
deleted file mode 100644
index 1037ca0e8..000000000
--- a/vendor/github.com/uber/jaeger-client-go/baggage_setter.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "github.com/opentracing/opentracing-go/log"
-
- "github.com/uber/jaeger-client-go/internal/baggage"
-)
-
-// baggageSetter is an actor that can set a baggage value on a Span given certain
-// restrictions (eg. maxValueLength).
-type baggageSetter struct {
- restrictionManager baggage.RestrictionManager
- metrics *Metrics
-}
-
-func newBaggageSetter(restrictionManager baggage.RestrictionManager, metrics *Metrics) *baggageSetter {
- return &baggageSetter{
- restrictionManager: restrictionManager,
- metrics: metrics,
- }
-}
-
-// (NB) span should hold the lock before making this call
-func (s *baggageSetter) setBaggage(span *Span, key, value string) {
- var truncated bool
- var prevItem string
- restriction := s.restrictionManager.GetRestriction(span.serviceName(), key)
- if !restriction.KeyAllowed() {
- s.logFields(span, key, value, prevItem, truncated, restriction.KeyAllowed())
- s.metrics.BaggageUpdateFailure.Inc(1)
- return
- }
- if len(value) > restriction.MaxValueLength() {
- truncated = true
- value = value[:restriction.MaxValueLength()]
- s.metrics.BaggageTruncate.Inc(1)
- }
- prevItem = span.context.baggage[key]
- s.logFields(span, key, value, prevItem, truncated, restriction.KeyAllowed())
- span.context = span.context.WithBaggageItem(key, value)
- s.metrics.BaggageUpdateSuccess.Inc(1)
-}
-
-func (s *baggageSetter) logFields(span *Span, key, value, prevItem string, truncated, valid bool) {
- if !span.context.IsSampled() {
- return
- }
- fields := []log.Field{
- log.String("event", "baggage"),
- log.String("key", key),
- log.String("value", value),
- }
- if prevItem != "" {
- fields = append(fields, log.String("override", "true"))
- }
- if truncated {
- fields = append(fields, log.String("truncated", "true"))
- }
- if !valid {
- fields = append(fields, log.String("invalid", "true"))
- }
- span.logFieldsNoLocking(fields...)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/config/config.go b/vendor/github.com/uber/jaeger-client-go/config/config.go
deleted file mode 100644
index bb1228294..000000000
--- a/vendor/github.com/uber/jaeger-client-go/config/config.go
+++ /dev/null
@@ -1,434 +0,0 @@
-// Copyright (c) 2017-2018 Uber Technologies, Inc.
-//
-// 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 config
-
-import (
- "errors"
- "fmt"
- "io"
- "strings"
- "time"
-
- "github.com/opentracing/opentracing-go"
- "github.com/uber/jaeger-client-go/utils"
-
- "github.com/uber/jaeger-client-go"
- "github.com/uber/jaeger-client-go/internal/baggage/remote"
- throttler "github.com/uber/jaeger-client-go/internal/throttler/remote"
- "github.com/uber/jaeger-client-go/rpcmetrics"
- "github.com/uber/jaeger-client-go/transport"
- "github.com/uber/jaeger-lib/metrics"
-)
-
-const defaultSamplingProbability = 0.001
-
-// Configuration configures and creates Jaeger Tracer
-type Configuration struct {
- // ServiceName specifies the service name to use on the tracer.
- // Can be provided by FromEnv() via the environment variable named JAEGER_SERVICE_NAME
- ServiceName string `yaml:"serviceName"`
-
- // Disabled can be provided by FromEnv() via the environment variable named JAEGER_DISABLED
- Disabled bool `yaml:"disabled"`
-
- // RPCMetrics can be provided by FromEnv() via the environment variable named JAEGER_RPC_METRICS
- RPCMetrics bool `yaml:"rpc_metrics"`
-
- // Tags can be provided by FromEnv() via the environment variable named JAEGER_TAGS
- Tags []opentracing.Tag `yaml:"tags"`
-
- Sampler *SamplerConfig `yaml:"sampler"`
- Reporter *ReporterConfig `yaml:"reporter"`
- Headers *jaeger.HeadersConfig `yaml:"headers"`
- BaggageRestrictions *BaggageRestrictionsConfig `yaml:"baggage_restrictions"`
- Throttler *ThrottlerConfig `yaml:"throttler"`
-}
-
-// SamplerConfig allows initializing a non-default sampler. All fields are optional.
-type SamplerConfig struct {
- // Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote.
- // Can be provided by FromEnv() via the environment variable named JAEGER_SAMPLER_TYPE
- Type string `yaml:"type"`
-
- // Param is a value passed to the sampler.
- // Valid values for Param field are:
- // - for "const" sampler, 0 or 1 for always false/true respectively
- // - for "probabilistic" sampler, a probability between 0 and 1
- // - for "rateLimiting" sampler, the number of spans per second
- // - for "remote" sampler, param is the same as for "probabilistic"
- // and indicates the initial sampling rate before the actual one
- // is received from the mothership.
- // Can be provided by FromEnv() via the environment variable named JAEGER_SAMPLER_PARAM
- Param float64 `yaml:"param"`
-
- // SamplingServerURL is the URL of sampling manager that can provide
- // sampling strategy to this service.
- // Can be provided by FromEnv() via the environment variable named JAEGER_SAMPLING_ENDPOINT
- SamplingServerURL string `yaml:"samplingServerURL"`
-
- // SamplingRefreshInterval controls how often the remotely controlled sampler will poll
- // sampling manager for the appropriate sampling strategy.
- // Can be provided by FromEnv() via the environment variable named JAEGER_SAMPLER_REFRESH_INTERVAL
- SamplingRefreshInterval time.Duration `yaml:"samplingRefreshInterval"`
-
- // MaxOperations is the maximum number of operations that the PerOperationSampler
- // will keep track of. If an operation is not tracked, a default probabilistic
- // sampler will be used rather than the per operation specific sampler.
- // Can be provided by FromEnv() via the environment variable named JAEGER_SAMPLER_MAX_OPERATIONS.
- MaxOperations int `yaml:"maxOperations"`
-
- // Opt-in feature for applications that require late binding of span name via explicit
- // call to SetOperationName when using PerOperationSampler. When this feature is enabled,
- // the sampler will return retryable=true from OnCreateSpan(), thus leaving the sampling
- // decision as non-final (and the span as writeable). This may lead to degraded performance
- // in applications that always provide the correct span name on trace creation.
- //
- // For backwards compatibility this option is off by default.
- OperationNameLateBinding bool `yaml:"operationNameLateBinding"`
-
- // Options can be used to programmatically pass additional options to the Remote sampler.
- Options []jaeger.SamplerOption
-}
-
-// ReporterConfig configures the reporter. All fields are optional.
-type ReporterConfig struct {
- // QueueSize controls how many spans the reporter can keep in memory before it starts dropping
- // new spans. The queue is continuously drained by a background go-routine, as fast as spans
- // can be sent out of process.
- // Can be provided by FromEnv() via the environment variable named JAEGER_REPORTER_MAX_QUEUE_SIZE
- QueueSize int `yaml:"queueSize"`
-
- // BufferFlushInterval controls how often the buffer is force-flushed, even if it's not full.
- // It is generally not useful, as it only matters for very low traffic services.
- // Can be provided by FromEnv() via the environment variable named JAEGER_REPORTER_FLUSH_INTERVAL
- BufferFlushInterval time.Duration
-
- // LogSpans, when true, enables LoggingReporter that runs in parallel with the main reporter
- // and logs all submitted spans. Main Configuration.Logger must be initialized in the code
- // for this option to have any effect.
- // Can be provided by FromEnv() via the environment variable named JAEGER_REPORTER_LOG_SPANS
- LogSpans bool `yaml:"logSpans"`
-
- // LocalAgentHostPort instructs reporter to send spans to jaeger-agent at this address.
- // Can be provided by FromEnv() via the environment variable named JAEGER_AGENT_HOST / JAEGER_AGENT_PORT
- LocalAgentHostPort string `yaml:"localAgentHostPort"`
-
- // DisableAttemptReconnecting when true, disables udp connection helper that periodically re-resolves
- // the agent's hostname and reconnects if there was a change. This option only
- // applies if LocalAgentHostPort is specified.
- // Can be provided by FromEnv() via the environment variable named JAEGER_REPORTER_ATTEMPT_RECONNECTING_DISABLED
- DisableAttemptReconnecting bool `yaml:"disableAttemptReconnecting"`
-
- // AttemptReconnectInterval controls how often the agent client re-resolves the provided hostname
- // in order to detect address changes. This option only applies if DisableAttemptReconnecting is false.
- // Can be provided by FromEnv() via the environment variable named JAEGER_REPORTER_ATTEMPT_RECONNECT_INTERVAL
- AttemptReconnectInterval time.Duration
-
- // CollectorEndpoint instructs reporter to send spans to jaeger-collector at this URL.
- // Can be provided by FromEnv() via the environment variable named JAEGER_ENDPOINT
- CollectorEndpoint string `yaml:"collectorEndpoint"`
-
- // User instructs reporter to include a user for basic http authentication when sending spans to jaeger-collector.
- // Can be provided by FromEnv() via the environment variable named JAEGER_USER
- User string `yaml:"user"`
-
- // Password instructs reporter to include a password for basic http authentication when sending spans to
- // jaeger-collector.
- // Can be provided by FromEnv() via the environment variable named JAEGER_PASSWORD
- Password string `yaml:"password"`
-
- // HTTPHeaders instructs the reporter to add these headers to the http request when reporting spans.
- // This field takes effect only when using HTTPTransport by setting the CollectorEndpoint.
- HTTPHeaders map[string]string `yaml:"http_headers"`
-}
-
-// BaggageRestrictionsConfig configures the baggage restrictions manager which can be used to whitelist
-// certain baggage keys. All fields are optional.
-type BaggageRestrictionsConfig struct {
- // DenyBaggageOnInitializationFailure controls the startup failure mode of the baggage restriction
- // manager. If true, the manager will not allow any baggage to be written until baggage restrictions have
- // been retrieved from jaeger-agent. If false, the manager wil allow any baggage to be written until baggage
- // restrictions have been retrieved from jaeger-agent.
- DenyBaggageOnInitializationFailure bool `yaml:"denyBaggageOnInitializationFailure"`
-
- // HostPort is the hostPort of jaeger-agent's baggage restrictions server
- HostPort string `yaml:"hostPort"`
-
- // RefreshInterval controls how often the baggage restriction manager will poll
- // jaeger-agent for the most recent baggage restrictions.
- RefreshInterval time.Duration `yaml:"refreshInterval"`
-}
-
-// ThrottlerConfig configures the throttler which can be used to throttle the
-// rate at which the client may send debug requests.
-type ThrottlerConfig struct {
- // HostPort of jaeger-agent's credit server.
- HostPort string `yaml:"hostPort"`
-
- // RefreshInterval controls how often the throttler will poll jaeger-agent
- // for more throttling credits.
- RefreshInterval time.Duration `yaml:"refreshInterval"`
-
- // SynchronousInitialization determines whether or not the throttler should
- // synchronously fetch credits from the agent when an operation is seen for
- // the first time. This should be set to true if the client will be used by
- // a short lived service that needs to ensure that credits are fetched
- // upfront such that sampling or throttling occurs.
- SynchronousInitialization bool `yaml:"synchronousInitialization"`
-}
-
-type nullCloser struct{}
-
-func (*nullCloser) Close() error { return nil }
-
-// New creates a new Jaeger Tracer, and a closer func that can be used to flush buffers
-// before shutdown.
-//
-// Deprecated: use NewTracer() function
-func (c Configuration) New(
- serviceName string,
- options ...Option,
-) (opentracing.Tracer, io.Closer, error) {
- if serviceName != "" {
- c.ServiceName = serviceName
- }
-
- return c.NewTracer(options...)
-}
-
-// NewTracer returns a new tracer based on the current configuration, using the given options,
-// and a closer func that can be used to flush buffers before shutdown.
-func (c Configuration) NewTracer(options ...Option) (opentracing.Tracer, io.Closer, error) {
- if c.Disabled {
- return &opentracing.NoopTracer{}, &nullCloser{}, nil
- }
-
- if c.ServiceName == "" {
- return nil, nil, errors.New("no service name provided")
- }
-
- opts := applyOptions(options...)
- tracerMetrics := jaeger.NewMetrics(opts.metrics, nil)
- if c.RPCMetrics {
- Observer(
- rpcmetrics.NewObserver(
- opts.metrics.Namespace(metrics.NSOptions{Name: "jaeger-rpc", Tags: map[string]string{"component": "jaeger"}}),
- rpcmetrics.DefaultNameNormalizer,
- ),
- )(&opts) // adds to c.observers
- }
- if c.Sampler == nil {
- c.Sampler = &SamplerConfig{
- Type: jaeger.SamplerTypeRemote,
- Param: defaultSamplingProbability,
- }
- }
- if c.Reporter == nil {
- c.Reporter = &ReporterConfig{}
- }
-
- sampler := opts.sampler
- if sampler == nil {
- s, err := c.Sampler.NewSampler(c.ServiceName, tracerMetrics)
- if err != nil {
- return nil, nil, err
- }
- sampler = s
- }
-
- reporter := opts.reporter
- if reporter == nil {
- r, err := c.Reporter.NewReporter(c.ServiceName, tracerMetrics, opts.logger)
- if err != nil {
- return nil, nil, err
- }
- reporter = r
- }
-
- tracerOptions := []jaeger.TracerOption{
- jaeger.TracerOptions.Metrics(tracerMetrics),
- jaeger.TracerOptions.Logger(opts.logger),
- jaeger.TracerOptions.CustomHeaderKeys(c.Headers),
- jaeger.TracerOptions.Gen128Bit(opts.gen128Bit),
- jaeger.TracerOptions.PoolSpans(opts.poolSpans),
- jaeger.TracerOptions.ZipkinSharedRPCSpan(opts.zipkinSharedRPCSpan),
- jaeger.TracerOptions.MaxTagValueLength(opts.maxTagValueLength),
- jaeger.TracerOptions.NoDebugFlagOnForcedSampling(opts.noDebugFlagOnForcedSampling),
- }
-
- for _, tag := range opts.tags {
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.Tag(tag.Key, tag.Value))
- }
-
- for _, tag := range c.Tags {
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.Tag(tag.Key, tag.Value))
- }
-
- for _, obs := range opts.observers {
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.Observer(obs))
- }
-
- for _, cobs := range opts.contribObservers {
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.ContribObserver(cobs))
- }
-
- for format, injector := range opts.injectors {
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.Injector(format, injector))
- }
-
- for format, extractor := range opts.extractors {
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.Extractor(format, extractor))
- }
-
- if c.BaggageRestrictions != nil {
- mgr := remote.NewRestrictionManager(
- c.ServiceName,
- remote.Options.Metrics(tracerMetrics),
- remote.Options.Logger(opts.logger),
- remote.Options.HostPort(c.BaggageRestrictions.HostPort),
- remote.Options.RefreshInterval(c.BaggageRestrictions.RefreshInterval),
- remote.Options.DenyBaggageOnInitializationFailure(
- c.BaggageRestrictions.DenyBaggageOnInitializationFailure,
- ),
- )
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.BaggageRestrictionManager(mgr))
- }
-
- if c.Throttler != nil {
- debugThrottler := throttler.NewThrottler(
- c.ServiceName,
- throttler.Options.Metrics(tracerMetrics),
- throttler.Options.Logger(opts.logger),
- throttler.Options.HostPort(c.Throttler.HostPort),
- throttler.Options.RefreshInterval(c.Throttler.RefreshInterval),
- throttler.Options.SynchronousInitialization(
- c.Throttler.SynchronousInitialization,
- ),
- )
-
- tracerOptions = append(tracerOptions, jaeger.TracerOptions.DebugThrottler(debugThrottler))
- }
-
- tracer, closer := jaeger.NewTracer(
- c.ServiceName,
- sampler,
- reporter,
- tracerOptions...,
- )
-
- return tracer, closer, nil
-}
-
-// InitGlobalTracer creates a new Jaeger Tracer, and sets it as global OpenTracing Tracer.
-// It returns a closer func that can be used to flush buffers before shutdown.
-func (c Configuration) InitGlobalTracer(
- serviceName string,
- options ...Option,
-) (io.Closer, error) {
- if c.Disabled {
- return &nullCloser{}, nil
- }
- tracer, closer, err := c.New(serviceName, options...)
- if err != nil {
- return nil, err
- }
- opentracing.SetGlobalTracer(tracer)
- return closer, nil
-}
-
-// NewSampler creates a new sampler based on the configuration
-func (sc *SamplerConfig) NewSampler(
- serviceName string,
- metrics *jaeger.Metrics,
-) (jaeger.Sampler, error) {
- samplerType := strings.ToLower(sc.Type)
- if samplerType == jaeger.SamplerTypeConst {
- return jaeger.NewConstSampler(sc.Param != 0), nil
- }
- if samplerType == jaeger.SamplerTypeProbabilistic {
- if sc.Param >= 0 && sc.Param <= 1.0 {
- return jaeger.NewProbabilisticSampler(sc.Param)
- }
- return nil, fmt.Errorf(
- "invalid Param for probabilistic sampler; expecting value between 0 and 1, received %v",
- sc.Param,
- )
- }
- if samplerType == jaeger.SamplerTypeRateLimiting {
- return jaeger.NewRateLimitingSampler(sc.Param), nil
- }
- if samplerType == jaeger.SamplerTypeRemote || sc.Type == "" {
- sc2 := *sc
- sc2.Type = jaeger.SamplerTypeProbabilistic
- initSampler, err := sc2.NewSampler(serviceName, nil)
- if err != nil {
- return nil, err
- }
- options := []jaeger.SamplerOption{
- jaeger.SamplerOptions.Metrics(metrics),
- jaeger.SamplerOptions.InitialSampler(initSampler),
- jaeger.SamplerOptions.SamplingServerURL(sc.SamplingServerURL),
- jaeger.SamplerOptions.MaxOperations(sc.MaxOperations),
- jaeger.SamplerOptions.OperationNameLateBinding(sc.OperationNameLateBinding),
- jaeger.SamplerOptions.SamplingRefreshInterval(sc.SamplingRefreshInterval),
- }
- options = append(options, sc.Options...)
- return jaeger.NewRemotelyControlledSampler(serviceName, options...), nil
- }
- return nil, fmt.Errorf("unknown sampler type (%s)", sc.Type)
-}
-
-// NewReporter instantiates a new reporter that submits spans to the collector
-func (rc *ReporterConfig) NewReporter(
- serviceName string,
- metrics *jaeger.Metrics,
- logger jaeger.Logger,
-) (jaeger.Reporter, error) {
- sender, err := rc.newTransport(logger)
- if err != nil {
- return nil, err
- }
- reporter := jaeger.NewRemoteReporter(
- sender,
- jaeger.ReporterOptions.QueueSize(rc.QueueSize),
- jaeger.ReporterOptions.BufferFlushInterval(rc.BufferFlushInterval),
- jaeger.ReporterOptions.Logger(logger),
- jaeger.ReporterOptions.Metrics(metrics))
- if rc.LogSpans && logger != nil {
- logger.Infof("Initializing logging reporter\n")
- reporter = jaeger.NewCompositeReporter(jaeger.NewLoggingReporter(logger), reporter)
- }
- return reporter, err
-}
-
-func (rc *ReporterConfig) newTransport(logger jaeger.Logger) (jaeger.Transport, error) {
- switch {
- case rc.CollectorEndpoint != "":
- httpOptions := []transport.HTTPOption{transport.HTTPBatchSize(1), transport.HTTPHeaders(rc.HTTPHeaders)}
- if rc.User != "" && rc.Password != "" {
- httpOptions = append(httpOptions, transport.HTTPBasicAuth(rc.User, rc.Password))
- }
- return transport.NewHTTPTransport(rc.CollectorEndpoint, httpOptions...), nil
- default:
- return jaeger.NewUDPTransportWithParams(jaeger.UDPTransportParams{
- AgentClientUDPParams: utils.AgentClientUDPParams{
- HostPort: rc.LocalAgentHostPort,
- Logger: logger,
- DisableAttemptReconnecting: rc.DisableAttemptReconnecting,
- AttemptReconnectInterval: rc.AttemptReconnectInterval,
- },
- })
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/config/config_env.go b/vendor/github.com/uber/jaeger-client-go/config/config_env.go
deleted file mode 100644
index 92d60cd59..000000000
--- a/vendor/github.com/uber/jaeger-client-go/config/config_env.go
+++ /dev/null
@@ -1,259 +0,0 @@
-// Copyright (c) 2018 The Jaeger 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 config
-
-import (
- "fmt"
- "net/url"
- "os"
- "strconv"
- "strings"
- "time"
-
- "github.com/opentracing/opentracing-go"
- "github.com/pkg/errors"
- "github.com/uber/jaeger-client-go"
-)
-
-const (
- // environment variable names
- envServiceName = "JAEGER_SERVICE_NAME"
- envDisabled = "JAEGER_DISABLED"
- envRPCMetrics = "JAEGER_RPC_METRICS"
- envTags = "JAEGER_TAGS"
- envSamplerType = "JAEGER_SAMPLER_TYPE"
- envSamplerParam = "JAEGER_SAMPLER_PARAM"
- envSamplerManagerHostPort = "JAEGER_SAMPLER_MANAGER_HOST_PORT" // Deprecated by envSamplingEndpoint
- envSamplingEndpoint = "JAEGER_SAMPLING_ENDPOINT"
- envSamplerMaxOperations = "JAEGER_SAMPLER_MAX_OPERATIONS"
- envSamplerRefreshInterval = "JAEGER_SAMPLER_REFRESH_INTERVAL"
- envReporterMaxQueueSize = "JAEGER_REPORTER_MAX_QUEUE_SIZE"
- envReporterFlushInterval = "JAEGER_REPORTER_FLUSH_INTERVAL"
- envReporterLogSpans = "JAEGER_REPORTER_LOG_SPANS"
- envReporterAttemptReconnectingDisabled = "JAEGER_REPORTER_ATTEMPT_RECONNECTING_DISABLED"
- envReporterAttemptReconnectInterval = "JAEGER_REPORTER_ATTEMPT_RECONNECT_INTERVAL"
- envEndpoint = "JAEGER_ENDPOINT"
- envUser = "JAEGER_USER"
- envPassword = "JAEGER_PASSWORD"
- envAgentHost = "JAEGER_AGENT_HOST"
- envAgentPort = "JAEGER_AGENT_PORT"
-)
-
-// FromEnv uses environment variables to set the tracer's Configuration
-func FromEnv() (*Configuration, error) {
- c := &Configuration{}
- return c.FromEnv()
-}
-
-// FromEnv uses environment variables and overrides existing tracer's Configuration
-func (c *Configuration) FromEnv() (*Configuration, error) {
- if e := os.Getenv(envServiceName); e != "" {
- c.ServiceName = e
- }
-
- if e := os.Getenv(envRPCMetrics); e != "" {
- if value, err := strconv.ParseBool(e); err == nil {
- c.RPCMetrics = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envRPCMetrics, e)
- }
- }
-
- if e := os.Getenv(envDisabled); e != "" {
- if value, err := strconv.ParseBool(e); err == nil {
- c.Disabled = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envDisabled, e)
- }
- }
-
- if e := os.Getenv(envTags); e != "" {
- c.Tags = parseTags(e)
- }
-
- if c.Sampler == nil {
- c.Sampler = &SamplerConfig{}
- }
-
- if s, err := c.Sampler.samplerConfigFromEnv(); err == nil {
- c.Sampler = s
- } else {
- return nil, errors.Wrap(err, "cannot obtain sampler config from env")
- }
-
- if c.Reporter == nil {
- c.Reporter = &ReporterConfig{}
- }
-
- if r, err := c.Reporter.reporterConfigFromEnv(); err == nil {
- c.Reporter = r
- } else {
- return nil, errors.Wrap(err, "cannot obtain reporter config from env")
- }
-
- return c, nil
-}
-
-// samplerConfigFromEnv creates a new SamplerConfig based on the environment variables
-func (sc *SamplerConfig) samplerConfigFromEnv() (*SamplerConfig, error) {
- if e := os.Getenv(envSamplerType); e != "" {
- sc.Type = e
- }
-
- if e := os.Getenv(envSamplerParam); e != "" {
- if value, err := strconv.ParseFloat(e, 64); err == nil {
- sc.Param = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envSamplerParam, e)
- }
- }
-
- if e := os.Getenv(envSamplingEndpoint); e != "" {
- sc.SamplingServerURL = e
- } else if e := os.Getenv(envSamplerManagerHostPort); e != "" {
- sc.SamplingServerURL = e
- } else if e := os.Getenv(envAgentHost); e != "" {
- // Fallback if we know the agent host - try the sampling endpoint there
- sc.SamplingServerURL = fmt.Sprintf("http://%s:%d/sampling", e, jaeger.DefaultSamplingServerPort)
- }
-
- if e := os.Getenv(envSamplerMaxOperations); e != "" {
- if value, err := strconv.ParseInt(e, 10, 0); err == nil {
- sc.MaxOperations = int(value)
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envSamplerMaxOperations, e)
- }
- }
-
- if e := os.Getenv(envSamplerRefreshInterval); e != "" {
- if value, err := time.ParseDuration(e); err == nil {
- sc.SamplingRefreshInterval = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envSamplerRefreshInterval, e)
- }
- }
-
- return sc, nil
-}
-
-// reporterConfigFromEnv creates a new ReporterConfig based on the environment variables
-func (rc *ReporterConfig) reporterConfigFromEnv() (*ReporterConfig, error) {
- if e := os.Getenv(envReporterMaxQueueSize); e != "" {
- if value, err := strconv.ParseInt(e, 10, 0); err == nil {
- rc.QueueSize = int(value)
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envReporterMaxQueueSize, e)
- }
- }
-
- if e := os.Getenv(envReporterFlushInterval); e != "" {
- if value, err := time.ParseDuration(e); err == nil {
- rc.BufferFlushInterval = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envReporterFlushInterval, e)
- }
- }
-
- if e := os.Getenv(envReporterLogSpans); e != "" {
- if value, err := strconv.ParseBool(e); err == nil {
- rc.LogSpans = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envReporterLogSpans, e)
- }
- }
-
- if e := os.Getenv(envEndpoint); e != "" {
- u, err := url.ParseRequestURI(e)
- if err != nil {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envEndpoint, e)
- }
- rc.CollectorEndpoint = u.String()
- user := os.Getenv(envUser)
- pswd := os.Getenv(envPassword)
- if user != "" && pswd == "" || user == "" && pswd != "" {
- return nil, errors.Errorf("you must set %s and %s env vars together", envUser, envPassword)
- }
- rc.User = user
- rc.Password = pswd
- } else {
- useEnv := false
- host := jaeger.DefaultUDPSpanServerHost
- if e := os.Getenv(envAgentHost); e != "" {
- host = e
- useEnv = true
- }
-
- port := jaeger.DefaultUDPSpanServerPort
- if e := os.Getenv(envAgentPort); e != "" {
- if value, err := strconv.ParseInt(e, 10, 0); err == nil {
- port = int(value)
- useEnv = true
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envAgentPort, e)
- }
- }
- if useEnv || rc.LocalAgentHostPort == "" {
- rc.LocalAgentHostPort = fmt.Sprintf("%s:%d", host, port)
- }
-
- if e := os.Getenv(envReporterAttemptReconnectingDisabled); e != "" {
- if value, err := strconv.ParseBool(e); err == nil {
- rc.DisableAttemptReconnecting = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envReporterAttemptReconnectingDisabled, e)
- }
- }
-
- if !rc.DisableAttemptReconnecting {
- if e := os.Getenv(envReporterAttemptReconnectInterval); e != "" {
- if value, err := time.ParseDuration(e); err == nil {
- rc.AttemptReconnectInterval = value
- } else {
- return nil, errors.Wrapf(err, "cannot parse env var %s=%s", envReporterAttemptReconnectInterval, e)
- }
- }
- }
- }
-
- return rc, nil
-}
-
-// parseTags parses the given string into a collection of Tags.
-// Spec for this value:
-// - comma separated list of key=value
-// - value can be specified using the notation ${envVar:defaultValue}, where `envVar`
-// is an environment variable and `defaultValue` is the value to use in case the env var is not set
-func parseTags(sTags string) []opentracing.Tag {
- pairs := strings.Split(sTags, ",")
- tags := make([]opentracing.Tag, 0)
- for _, p := range pairs {
- kv := strings.SplitN(p, "=", 2)
- k, v := strings.TrimSpace(kv[0]), strings.TrimSpace(kv[1])
-
- if strings.HasPrefix(v, "${") && strings.HasSuffix(v, "}") {
- ed := strings.SplitN(v[2:len(v)-1], ":", 2)
- e, d := ed[0], ed[1]
- v = os.Getenv(e)
- if v == "" && d != "" {
- v = d
- }
- }
-
- tag := opentracing.Tag{Key: k, Value: v}
- tags = append(tags, tag)
- }
-
- return tags
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/config/options.go b/vendor/github.com/uber/jaeger-client-go/config/options.go
deleted file mode 100644
index e0e50e834..000000000
--- a/vendor/github.com/uber/jaeger-client-go/config/options.go
+++ /dev/null
@@ -1,165 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 config
-
-import (
- opentracing "github.com/opentracing/opentracing-go"
- "github.com/uber/jaeger-lib/metrics"
-
- "github.com/uber/jaeger-client-go"
-)
-
-// Option is a function that sets some option on the client.
-type Option func(c *Options)
-
-// Options control behavior of the client.
-type Options struct {
- metrics metrics.Factory
- logger jaeger.Logger
- reporter jaeger.Reporter
- sampler jaeger.Sampler
- contribObservers []jaeger.ContribObserver
- observers []jaeger.Observer
- gen128Bit bool
- poolSpans bool
- zipkinSharedRPCSpan bool
- maxTagValueLength int
- noDebugFlagOnForcedSampling bool
- tags []opentracing.Tag
- injectors map[interface{}]jaeger.Injector
- extractors map[interface{}]jaeger.Extractor
-}
-
-// Metrics creates an Option that initializes Metrics in the tracer,
-// which is used to emit statistics about spans.
-func Metrics(factory metrics.Factory) Option {
- return func(c *Options) {
- c.metrics = factory
- }
-}
-
-// Logger can be provided to log Reporter errors, as well as to log spans
-// if Reporter.LogSpans is set to true.
-func Logger(logger jaeger.Logger) Option {
- return func(c *Options) {
- c.logger = logger
- }
-}
-
-// Reporter can be provided explicitly to override the configuration.
-// Useful for testing, e.g. by passing InMemoryReporter.
-func Reporter(reporter jaeger.Reporter) Option {
- return func(c *Options) {
- c.reporter = reporter
- }
-}
-
-// Sampler can be provided explicitly to override the configuration.
-func Sampler(sampler jaeger.Sampler) Option {
- return func(c *Options) {
- c.sampler = sampler
- }
-}
-
-// Observer can be registered with the Tracer to receive notifications about new Spans.
-func Observer(observer jaeger.Observer) Option {
- return func(c *Options) {
- c.observers = append(c.observers, observer)
- }
-}
-
-// ContribObserver can be registered with the Tracer to receive notifications
-// about new spans.
-func ContribObserver(observer jaeger.ContribObserver) Option {
- return func(c *Options) {
- c.contribObservers = append(c.contribObservers, observer)
- }
-}
-
-// Gen128Bit specifies whether to generate 128bit trace IDs.
-func Gen128Bit(gen128Bit bool) Option {
- return func(c *Options) {
- c.gen128Bit = gen128Bit
- }
-}
-
-// PoolSpans specifies whether to pool spans
-func PoolSpans(poolSpans bool) Option {
- return func(c *Options) {
- c.poolSpans = poolSpans
- }
-}
-
-// ZipkinSharedRPCSpan creates an option that enables sharing span ID between client
-// and server spans a la zipkin. If false, client and server spans will be assigned
-// different IDs.
-func ZipkinSharedRPCSpan(zipkinSharedRPCSpan bool) Option {
- return func(c *Options) {
- c.zipkinSharedRPCSpan = zipkinSharedRPCSpan
- }
-}
-
-// MaxTagValueLength can be provided to override the default max tag value length.
-func MaxTagValueLength(maxTagValueLength int) Option {
- return func(c *Options) {
- c.maxTagValueLength = maxTagValueLength
- }
-}
-
-// NoDebugFlagOnForcedSampling can be used to decide whether debug flag will be set or not
-// when calling span.setSamplingPriority to force sample a span.
-func NoDebugFlagOnForcedSampling(noDebugFlagOnForcedSampling bool) Option {
- return func(c *Options) {
- c.noDebugFlagOnForcedSampling = noDebugFlagOnForcedSampling
- }
-}
-
-// Tag creates an option that adds a tracer-level tag.
-func Tag(key string, value interface{}) Option {
- return func(c *Options) {
- c.tags = append(c.tags, opentracing.Tag{Key: key, Value: value})
- }
-}
-
-// Injector registers an Injector with the given format.
-func Injector(format interface{}, injector jaeger.Injector) Option {
- return func(c *Options) {
- c.injectors[format] = injector
- }
-}
-
-// Extractor registers an Extractor with the given format.
-func Extractor(format interface{}, extractor jaeger.Extractor) Option {
- return func(c *Options) {
- c.extractors[format] = extractor
- }
-}
-
-func applyOptions(options ...Option) Options {
- opts := Options{
- injectors: make(map[interface{}]jaeger.Injector),
- extractors: make(map[interface{}]jaeger.Extractor),
- }
- for _, option := range options {
- option(&opts)
- }
- if opts.metrics == nil {
- opts.metrics = metrics.NullFactory
- }
- if opts.logger == nil {
- opts.logger = jaeger.NullLogger
- }
- return opts
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/constants.go b/vendor/github.com/uber/jaeger-client-go/constants.go
deleted file mode 100644
index 2f63d5909..000000000
--- a/vendor/github.com/uber/jaeger-client-go/constants.go
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "fmt"
-
- "github.com/opentracing/opentracing-go"
-)
-
-const (
- // JaegerClientVersion is the version of the client library reported as Span tag.
- JaegerClientVersion = "Go-2.25.0"
-
- // JaegerClientVersionTagKey is the name of the tag used to report client version.
- JaegerClientVersionTagKey = "jaeger.version"
-
- // JaegerDebugHeader is the name of HTTP header or a TextMap carrier key which,
- // if found in the carrier, forces the trace to be sampled as "debug" trace.
- // The value of the header is recorded as the tag on the root span, so that the
- // trace can be found in the UI using this value as a correlation ID.
- JaegerDebugHeader = "jaeger-debug-id"
-
- // JaegerBaggageHeader is the name of the HTTP header that is used to submit baggage.
- // It differs from TraceBaggageHeaderPrefix in that it can be used only in cases where
- // a root span does not exist.
- JaegerBaggageHeader = "jaeger-baggage"
-
- // TracerHostnameTagKey used to report host name of the process.
- TracerHostnameTagKey = "hostname"
-
- // TracerIPTagKey used to report ip of the process.
- TracerIPTagKey = "ip"
-
- // TracerUUIDTagKey used to report UUID of the client process.
- TracerUUIDTagKey = "client-uuid"
-
- // SamplerTypeTagKey reports which sampler was used on the root span.
- SamplerTypeTagKey = "sampler.type"
-
- // SamplerParamTagKey reports the parameter of the sampler, like sampling probability.
- SamplerParamTagKey = "sampler.param"
-
- // TraceContextHeaderName is the http header name used to propagate tracing context.
- // This must be in lower-case to avoid mismatches when decoding incoming headers.
- TraceContextHeaderName = "uber-trace-id"
-
- // TracerStateHeaderName is deprecated.
- // Deprecated: use TraceContextHeaderName
- TracerStateHeaderName = TraceContextHeaderName
-
- // TraceBaggageHeaderPrefix is the prefix for http headers used to propagate baggage.
- // This must be in lower-case to avoid mismatches when decoding incoming headers.
- TraceBaggageHeaderPrefix = "uberctx-"
-
- // SamplerTypeConst is the type of sampler that always makes the same decision.
- SamplerTypeConst = "const"
-
- // SamplerTypeRemote is the type of sampler that polls Jaeger agent for sampling strategy.
- SamplerTypeRemote = "remote"
-
- // SamplerTypeProbabilistic is the type of sampler that samples traces
- // with a certain fixed probability.
- SamplerTypeProbabilistic = "probabilistic"
-
- // SamplerTypeRateLimiting is the type of sampler that samples
- // only up to a fixed number of traces per second.
- SamplerTypeRateLimiting = "ratelimiting"
-
- // SamplerTypeLowerBound is the type of sampler that samples
- // at least a fixed number of traces per second.
- SamplerTypeLowerBound = "lowerbound"
-
- // DefaultUDPSpanServerHost is the default host to send the spans to, via UDP
- DefaultUDPSpanServerHost = "localhost"
-
- // DefaultUDPSpanServerPort is the default port to send the spans to, via UDP
- DefaultUDPSpanServerPort = 6831
-
- // DefaultSamplingServerPort is the default port to fetch sampling config from, via http
- DefaultSamplingServerPort = 5778
-
- // DefaultMaxTagValueLength is the default max length of byte array or string allowed in the tag value.
- DefaultMaxTagValueLength = 256
-
- // SelfRefType is a jaeger specific reference type that supports creating a span
- // with an already defined context.
- selfRefType opentracing.SpanReferenceType = 99
-)
-
-var (
- // DefaultSamplingServerURL is the default url to fetch sampling config from, via http
- DefaultSamplingServerURL = fmt.Sprintf("http://127.0.0.1:%d/sampling", DefaultSamplingServerPort)
-)
diff --git a/vendor/github.com/uber/jaeger-client-go/contrib_observer.go b/vendor/github.com/uber/jaeger-client-go/contrib_observer.go
deleted file mode 100644
index 4ce1881f3..000000000
--- a/vendor/github.com/uber/jaeger-client-go/contrib_observer.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- opentracing "github.com/opentracing/opentracing-go"
-)
-
-// ContribObserver can be registered with the Tracer to receive notifications
-// about new Spans. Modelled after github.com/opentracing-contrib/go-observer.
-type ContribObserver interface {
- // Create and return a span observer. Called when a span starts.
- // If the Observer is not interested in the given span, it must return (nil, false).
- // E.g :
- // func StartSpan(opName string, opts ...opentracing.StartSpanOption) {
- // var sp opentracing.Span
- // sso := opentracing.StartSpanOptions{}
- // if spanObserver, ok := Observer.OnStartSpan(span, opName, sso); ok {
- // // we have a valid SpanObserver
- // }
- // ...
- // }
- OnStartSpan(sp opentracing.Span, operationName string, options opentracing.StartSpanOptions) (ContribSpanObserver, bool)
-}
-
-// ContribSpanObserver is created by the Observer and receives notifications
-// about other Span events. This interface is meant to match
-// github.com/opentracing-contrib/go-observer, via duck typing, without
-// directly importing the go-observer package.
-type ContribSpanObserver interface {
- OnSetOperationName(operationName string)
- OnSetTag(key string, value interface{})
- OnFinish(options opentracing.FinishOptions)
-}
-
-// wrapper observer for the old observers (see observer.go)
-type oldObserver struct {
- obs Observer
-}
-
-func (o *oldObserver) OnStartSpan(sp opentracing.Span, operationName string, options opentracing.StartSpanOptions) (ContribSpanObserver, bool) {
- spanObserver := o.obs.OnStartSpan(operationName, options)
- return spanObserver, spanObserver != nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/doc.go b/vendor/github.com/uber/jaeger-client-go/doc.go
deleted file mode 100644
index 4f5549033..000000000
--- a/vendor/github.com/uber/jaeger-client-go/doc.go
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger implements an OpenTracing (http://opentracing.io) Tracer.
-It is currently using Zipkin-compatible data model and can be directly
-itegrated with Zipkin backend (http://zipkin.io).
-
-For integration instructions please refer to the README:
-
-https://github.com/uber/jaeger-client-go/blob/master/README.md
-*/
-package jaeger
diff --git a/vendor/github.com/uber/jaeger-client-go/glide.lock b/vendor/github.com/uber/jaeger-client-go/glide.lock
deleted file mode 100644
index f4c05b2db..000000000
--- a/vendor/github.com/uber/jaeger-client-go/glide.lock
+++ /dev/null
@@ -1,98 +0,0 @@
-hash: a4a449cfc060c2d7be850a69b171e4382a3bd00d1a0a72cfc944facc3fe263bf
-updated: 2019-09-23T17:10:15.213856-04:00
-imports:
-- name: github.com/beorn7/perks
- version: 37c8de3658fcb183f997c4e13e8337516ab753e6
- subpackages:
- - quantile
-- name: github.com/codahale/hdrhistogram
- version: 3a0bb77429bd3a61596f5e8a3172445844342120
-- name: github.com/crossdock/crossdock-go
- version: 049aabb0122b03bc9bd30cab8f3f91fb60166361
- subpackages:
- - assert
- - require
-- name: github.com/davecgh/go-spew
- version: d8f796af33cc11cb798c1aaeb27a4ebc5099927d
- subpackages:
- - spew
-- name: github.com/golang/protobuf
- version: 1680a479a2cfb3fa22b972af7e36d0a0fde47bf8
- subpackages:
- - proto
-- name: github.com/matttproud/golang_protobuf_extensions
- version: c182affec369e30f25d3eb8cd8a478dee585ae7d
- subpackages:
- - pbutil
-- name: github.com/opentracing/opentracing-go
- version: 659c90643e714681897ec2521c60567dd21da733
- subpackages:
- - ext
- - harness
- - log
-- name: github.com/pkg/errors
- version: ba968bfe8b2f7e042a574c888954fccecfa385b4
-- name: github.com/pmezard/go-difflib
- version: 5d4384ee4fb2527b0a1256a821ebfc92f91efefc
- subpackages:
- - difflib
-- name: github.com/prometheus/client_golang
- version: 170205fb58decfd011f1550d4cfb737230d7ae4f
- subpackages:
- - prometheus
- - prometheus/internal
-- name: github.com/prometheus/client_model
- version: 14fe0d1b01d4d5fc031dd4bec1823bd3ebbe8016
- subpackages:
- - go
-- name: github.com/prometheus/common
- version: 287d3e634a1e550c9e463dd7e5a75a422c614505
- subpackages:
- - expfmt
- - internal/bitbucket.org/ww/goautoneg
- - model
-- name: github.com/prometheus/procfs
- version: de25ac347ef9305868b04dc42425c973b863b18c
- subpackages:
- - internal/fs
- - internal/util
-- name: github.com/stretchr/testify
- version: 85f2b59c4459e5bf57488796be8c3667cb8246d6
- subpackages:
- - assert
- - require
- - suite
-- name: github.com/uber-go/atomic
- version: df976f2515e274675050de7b3f42545de80594fd
-- name: github.com/uber/jaeger-lib
- version: a87ae9d84fb038a8d79266298970720be7c80fcd
- subpackages:
- - metrics
- - metrics/metricstest
- - metrics/prometheus
-- name: go.uber.org/atomic
- version: df976f2515e274675050de7b3f42545de80594fd
-- name: go.uber.org/multierr
- version: 3c4937480c32f4c13a875a1829af76c98ca3d40a
-- name: go.uber.org/zap
- version: 27376062155ad36be76b0f12cf1572a221d3a48c
- subpackages:
- - buffer
- - internal/bufferpool
- - internal/color
- - internal/exit
- - zapcore
-- name: golang.org/x/net
- version: aa69164e4478b84860dc6769c710c699c67058a3
- subpackages:
- - context
- - context/ctxhttp
-- name: golang.org/x/sys
- version: 0a153f010e6963173baba2306531d173aa843137
- subpackages:
- - windows
-- name: gopkg.in/yaml.v2
- version: 51d6538a90f86fe93ac480b35f37b2be17fef232
-- name: github.com/golang/mock
- version: 3a35fb6e3e18b9dbfee291262260dee7372d2a92
-testImports: []
diff --git a/vendor/github.com/uber/jaeger-client-go/glide.yaml b/vendor/github.com/uber/jaeger-client-go/glide.yaml
deleted file mode 100644
index eb58c67ff..000000000
--- a/vendor/github.com/uber/jaeger-client-go/glide.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-package: github.com/uber/jaeger-client-go
-import:
-- package: github.com/opentracing/opentracing-go
- version: ^1.1
- subpackages:
- - ext
- - log
-- package: github.com/crossdock/crossdock-go
-- package: github.com/uber/jaeger-lib
- version: ^2.0.0
- subpackages:
- - metrics
-- package: github.com/pkg/errors
- version: ~0.8.0
-- package: go.uber.org/zap
- source: https://github.com/uber-go/zap.git
- version: ^1
-- package: github.com/uber-go/atomic
- version: ^1
-- package: github.com/prometheus/client_golang
- version: ^1
-testImport:
-- package: github.com/stretchr/testify
- subpackages:
- - assert
- - require
- - suite
-- package: github.com/golang/mock
diff --git a/vendor/github.com/uber/jaeger-client-go/header.go b/vendor/github.com/uber/jaeger-client-go/header.go
deleted file mode 100644
index 5da70351d..000000000
--- a/vendor/github.com/uber/jaeger-client-go/header.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-// HeadersConfig contains the values for the header keys that Jaeger will use.
-// These values may be either custom or default depending on whether custom
-// values were provided via a configuration.
-type HeadersConfig struct {
- // JaegerDebugHeader is the name of HTTP header or a TextMap carrier key which,
- // if found in the carrier, forces the trace to be sampled as "debug" trace.
- // The value of the header is recorded as the tag on the root span, so that the
- // trace can be found in the UI using this value as a correlation ID.
- JaegerDebugHeader string `yaml:"jaegerDebugHeader"`
-
- // JaegerBaggageHeader is the name of the HTTP header that is used to submit baggage.
- // It differs from TraceBaggageHeaderPrefix in that it can be used only in cases where
- // a root span does not exist.
- JaegerBaggageHeader string `yaml:"jaegerBaggageHeader"`
-
- // TraceContextHeaderName is the http header name used to propagate tracing context.
- // This must be in lower-case to avoid mismatches when decoding incoming headers.
- TraceContextHeaderName string `yaml:"TraceContextHeaderName"`
-
- // TraceBaggageHeaderPrefix is the prefix for http headers used to propagate baggage.
- // This must be in lower-case to avoid mismatches when decoding incoming headers.
- TraceBaggageHeaderPrefix string `yaml:"traceBaggageHeaderPrefix"`
-}
-
-// ApplyDefaults sets missing configuration keys to default values
-func (c *HeadersConfig) ApplyDefaults() *HeadersConfig {
- if c.JaegerBaggageHeader == "" {
- c.JaegerBaggageHeader = JaegerBaggageHeader
- }
- if c.JaegerDebugHeader == "" {
- c.JaegerDebugHeader = JaegerDebugHeader
- }
- if c.TraceBaggageHeaderPrefix == "" {
- c.TraceBaggageHeaderPrefix = TraceBaggageHeaderPrefix
- }
- if c.TraceContextHeaderName == "" {
- c.TraceContextHeaderName = TraceContextHeaderName
- }
- return c
-}
-
-func getDefaultHeadersConfig() *HeadersConfig {
- return &HeadersConfig{
- JaegerDebugHeader: JaegerDebugHeader,
- JaegerBaggageHeader: JaegerBaggageHeader,
- TraceContextHeaderName: TraceContextHeaderName,
- TraceBaggageHeaderPrefix: TraceBaggageHeaderPrefix,
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/options.go b/vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/options.go
deleted file mode 100644
index 745729319..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/options.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 remote
-
-import (
- "time"
-
- "github.com/uber/jaeger-client-go"
-)
-
-const (
- defaultMaxValueLength = 2048
- defaultRefreshInterval = time.Minute
- defaultHostPort = "localhost:5778"
-)
-
-// Option is a function that sets some option on the RestrictionManager
-type Option func(options *options)
-
-// Options is a factory for all available options
-var Options options
-
-type options struct {
- denyBaggageOnInitializationFailure bool
- metrics *jaeger.Metrics
- logger jaeger.Logger
- hostPort string
- refreshInterval time.Duration
-}
-
-// DenyBaggageOnInitializationFailure creates an Option that determines the startup failure mode of RestrictionManager.
-// If DenyBaggageOnInitializationFailure is true, RestrictionManager will not allow any baggage to be written until baggage
-// restrictions have been retrieved from agent.
-// If DenyBaggageOnInitializationFailure is false, RestrictionManager will allow any baggage to be written until baggage
-// restrictions have been retrieved from agent.
-func (options) DenyBaggageOnInitializationFailure(b bool) Option {
- return func(o *options) {
- o.denyBaggageOnInitializationFailure = b
- }
-}
-
-// Metrics creates an Option that initializes Metrics on the RestrictionManager, which is used to emit statistics.
-func (options) Metrics(m *jaeger.Metrics) Option {
- return func(o *options) {
- o.metrics = m
- }
-}
-
-// Logger creates an Option that sets the logger used by the RestrictionManager.
-func (options) Logger(logger jaeger.Logger) Option {
- return func(o *options) {
- o.logger = logger
- }
-}
-
-// HostPort creates an Option that sets the hostPort of the local agent that contains the baggage restrictions.
-func (options) HostPort(hostPort string) Option {
- return func(o *options) {
- o.hostPort = hostPort
- }
-}
-
-// RefreshInterval creates an Option that sets how often the RestrictionManager will poll local agent for
-// the baggage restrictions.
-func (options) RefreshInterval(refreshInterval time.Duration) Option {
- return func(o *options) {
- o.refreshInterval = refreshInterval
- }
-}
-
-func applyOptions(o ...Option) options {
- opts := options{}
- for _, option := range o {
- option(&opts)
- }
- if opts.metrics == nil {
- opts.metrics = jaeger.NewNullMetrics()
- }
- if opts.logger == nil {
- opts.logger = jaeger.NullLogger
- }
- if opts.hostPort == "" {
- opts.hostPort = defaultHostPort
- }
- if opts.refreshInterval == 0 {
- opts.refreshInterval = defaultRefreshInterval
- }
- return opts
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/restriction_manager.go b/vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/restriction_manager.go
deleted file mode 100644
index a56515aca..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/baggage/remote/restriction_manager.go
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 remote
-
-import (
- "fmt"
- "net/url"
- "sync"
- "time"
-
- "github.com/uber/jaeger-client-go/internal/baggage"
- thrift "github.com/uber/jaeger-client-go/thrift-gen/baggage"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-type httpBaggageRestrictionManagerProxy struct {
- url string
-}
-
-func newHTTPBaggageRestrictionManagerProxy(hostPort, serviceName string) *httpBaggageRestrictionManagerProxy {
- v := url.Values{}
- v.Set("service", serviceName)
- return &httpBaggageRestrictionManagerProxy{
- url: fmt.Sprintf("http://%s/baggageRestrictions?%s", hostPort, v.Encode()),
- }
-}
-
-func (s *httpBaggageRestrictionManagerProxy) GetBaggageRestrictions(serviceName string) ([]*thrift.BaggageRestriction, error) {
- var out []*thrift.BaggageRestriction
- if err := utils.GetJSON(s.url, &out); err != nil {
- return nil, err
- }
- return out, nil
-}
-
-// RestrictionManager manages baggage restrictions by retrieving baggage restrictions from agent
-type RestrictionManager struct {
- options
-
- mux sync.RWMutex
- serviceName string
- restrictions map[string]*baggage.Restriction
- thriftProxy thrift.BaggageRestrictionManager
- pollStopped sync.WaitGroup
- stopPoll chan struct{}
- invalidRestriction *baggage.Restriction
- validRestriction *baggage.Restriction
-
- // Determines if the manager has successfully retrieved baggage restrictions from agent
- initialized bool
-}
-
-// NewRestrictionManager returns a BaggageRestrictionManager that polls the agent for the latest
-// baggage restrictions.
-func NewRestrictionManager(serviceName string, options ...Option) *RestrictionManager {
- // TODO there is a developing use case where a single tracer can generate traces on behalf of many services.
- // restrictionsMap will need to exist per service
- opts := applyOptions(options...)
- m := &RestrictionManager{
- serviceName: serviceName,
- options: opts,
- restrictions: make(map[string]*baggage.Restriction),
- thriftProxy: newHTTPBaggageRestrictionManagerProxy(opts.hostPort, serviceName),
- stopPoll: make(chan struct{}),
- invalidRestriction: baggage.NewRestriction(false, 0),
- validRestriction: baggage.NewRestriction(true, defaultMaxValueLength),
- }
- m.pollStopped.Add(1)
- go m.pollManager()
- return m
-}
-
-// isReady returns true if the manager has retrieved baggage restrictions from the remote source.
-func (m *RestrictionManager) isReady() bool {
- m.mux.RLock()
- defer m.mux.RUnlock()
- return m.initialized
-}
-
-// GetRestriction implements RestrictionManager#GetRestriction.
-func (m *RestrictionManager) GetRestriction(service, key string) *baggage.Restriction {
- m.mux.RLock()
- defer m.mux.RUnlock()
- if !m.initialized {
- if m.denyBaggageOnInitializationFailure {
- return m.invalidRestriction
- }
- return m.validRestriction
- }
- if restriction, ok := m.restrictions[key]; ok {
- return restriction
- }
- return m.invalidRestriction
-}
-
-// Close stops remote polling and closes the RemoteRestrictionManager.
-func (m *RestrictionManager) Close() error {
- close(m.stopPoll)
- m.pollStopped.Wait()
- return nil
-}
-
-func (m *RestrictionManager) pollManager() {
- defer m.pollStopped.Done()
- // attempt to initialize baggage restrictions
- if err := m.updateRestrictions(); err != nil {
- m.logger.Error(fmt.Sprintf("Failed to initialize baggage restrictions: %s", err.Error()))
- }
- ticker := time.NewTicker(m.refreshInterval)
- defer ticker.Stop()
-
- for {
- select {
- case <-ticker.C:
- if err := m.updateRestrictions(); err != nil {
- m.logger.Error(fmt.Sprintf("Failed to update baggage restrictions: %s", err.Error()))
- }
- case <-m.stopPoll:
- return
- }
- }
-}
-
-func (m *RestrictionManager) updateRestrictions() error {
- restrictions, err := m.thriftProxy.GetBaggageRestrictions(m.serviceName)
- if err != nil {
- m.metrics.BaggageRestrictionsUpdateFailure.Inc(1)
- return err
- }
- newRestrictions := m.parseRestrictions(restrictions)
- m.metrics.BaggageRestrictionsUpdateSuccess.Inc(1)
- m.mux.Lock()
- defer m.mux.Unlock()
- m.initialized = true
- m.restrictions = newRestrictions
- return nil
-}
-
-func (m *RestrictionManager) parseRestrictions(restrictions []*thrift.BaggageRestriction) map[string]*baggage.Restriction {
- setters := make(map[string]*baggage.Restriction, len(restrictions))
- for _, restriction := range restrictions {
- setters[restriction.BaggageKey] = baggage.NewRestriction(true, int(restriction.MaxValueLength))
- }
- return setters
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/baggage/restriction_manager.go b/vendor/github.com/uber/jaeger-client-go/internal/baggage/restriction_manager.go
deleted file mode 100644
index c16a5c566..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/baggage/restriction_manager.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 baggage
-
-const (
- defaultMaxValueLength = 2048
-)
-
-// Restriction determines whether a baggage key is allowed and contains any restrictions on the baggage value.
-type Restriction struct {
- keyAllowed bool
- maxValueLength int
-}
-
-// NewRestriction returns a new Restriction.
-func NewRestriction(keyAllowed bool, maxValueLength int) *Restriction {
- return &Restriction{
- keyAllowed: keyAllowed,
- maxValueLength: maxValueLength,
- }
-}
-
-// KeyAllowed returns whether the baggage key for this restriction is allowed.
-func (r *Restriction) KeyAllowed() bool {
- return r.keyAllowed
-}
-
-// MaxValueLength returns the max length for the baggage value.
-func (r *Restriction) MaxValueLength() int {
- return r.maxValueLength
-}
-
-// RestrictionManager keeps track of valid baggage keys and their restrictions. The manager
-// will return a Restriction for a specific baggage key which will determine whether the baggage
-// key is allowed for the current service and any other applicable restrictions on the baggage
-// value.
-type RestrictionManager interface {
- GetRestriction(service, key string) *Restriction
-}
-
-// DefaultRestrictionManager allows any baggage key.
-type DefaultRestrictionManager struct {
- defaultRestriction *Restriction
-}
-
-// NewDefaultRestrictionManager returns a DefaultRestrictionManager.
-func NewDefaultRestrictionManager(maxValueLength int) *DefaultRestrictionManager {
- if maxValueLength == 0 {
- maxValueLength = defaultMaxValueLength
- }
- return &DefaultRestrictionManager{
- defaultRestriction: &Restriction{keyAllowed: true, maxValueLength: maxValueLength},
- }
-}
-
-// GetRestriction implements RestrictionManager#GetRestriction.
-func (m *DefaultRestrictionManager) GetRestriction(service, key string) *Restriction {
- return m.defaultRestriction
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/reporterstats/stats.go b/vendor/github.com/uber/jaeger-client-go/internal/reporterstats/stats.go
deleted file mode 100644
index fe0bef268..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/reporterstats/stats.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2020 The Jaeger 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 reporterstats
-
-// ReporterStats exposes some metrics from the RemoteReporter.
-type ReporterStats interface {
- SpansDroppedFromQueue() int64
-}
-
-// Receiver can be implemented by a Transport to be given ReporterStats.
-type Receiver interface {
- SetReporterStats(ReporterStats)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/spanlog/json.go b/vendor/github.com/uber/jaeger-client-go/internal/spanlog/json.go
deleted file mode 100644
index 0e10b8a5a..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/spanlog/json.go
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 spanlog
-
-import (
- "encoding/json"
- "fmt"
-
- "github.com/opentracing/opentracing-go/log"
-)
-
-type fieldsAsMap map[string]string
-
-// MaterializeWithJSON converts log Fields into JSON string
-// TODO refactor into pluggable materializer
-func MaterializeWithJSON(logFields []log.Field) ([]byte, error) {
- fields := fieldsAsMap(make(map[string]string, len(logFields)))
- for _, field := range logFields {
- field.Marshal(fields)
- }
- if event, ok := fields["event"]; ok && len(fields) == 1 {
- return []byte(event), nil
- }
- return json.Marshal(fields)
-}
-
-func (ml fieldsAsMap) EmitString(key, value string) {
- ml[key] = value
-}
-
-func (ml fieldsAsMap) EmitBool(key string, value bool) {
- ml[key] = fmt.Sprintf("%t", value)
-}
-
-func (ml fieldsAsMap) EmitInt(key string, value int) {
- ml[key] = fmt.Sprintf("%d", value)
-}
-
-func (ml fieldsAsMap) EmitInt32(key string, value int32) {
- ml[key] = fmt.Sprintf("%d", value)
-}
-
-func (ml fieldsAsMap) EmitInt64(key string, value int64) {
- ml[key] = fmt.Sprintf("%d", value)
-}
-
-func (ml fieldsAsMap) EmitUint32(key string, value uint32) {
- ml[key] = fmt.Sprintf("%d", value)
-}
-
-func (ml fieldsAsMap) EmitUint64(key string, value uint64) {
- ml[key] = fmt.Sprintf("%d", value)
-}
-
-func (ml fieldsAsMap) EmitFloat32(key string, value float32) {
- ml[key] = fmt.Sprintf("%f", value)
-}
-
-func (ml fieldsAsMap) EmitFloat64(key string, value float64) {
- ml[key] = fmt.Sprintf("%f", value)
-}
-
-func (ml fieldsAsMap) EmitObject(key string, value interface{}) {
- ml[key] = fmt.Sprintf("%+v", value)
-}
-
-func (ml fieldsAsMap) EmitLazyLogger(value log.LazyLogger) {
- value(ml)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/options.go b/vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/options.go
deleted file mode 100644
index f52c322fb..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/options.go
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright (c) 2018 The Jaeger 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 remote
-
-import (
- "time"
-
- "github.com/uber/jaeger-client-go"
-)
-
-const (
- defaultHostPort = "localhost:5778"
- defaultRefreshInterval = time.Second * 5
-)
-
-// Option is a function that sets some option on the Throttler
-type Option func(options *options)
-
-// Options is a factory for all available options
-var Options options
-
-type options struct {
- metrics *jaeger.Metrics
- logger jaeger.Logger
- hostPort string
- refreshInterval time.Duration
- synchronousInitialization bool
-}
-
-// Metrics creates an Option that initializes Metrics on the Throttler, which is used to emit statistics.
-func (options) Metrics(m *jaeger.Metrics) Option {
- return func(o *options) {
- o.metrics = m
- }
-}
-
-// Logger creates an Option that sets the logger used by the Throttler.
-func (options) Logger(logger jaeger.Logger) Option {
- return func(o *options) {
- o.logger = logger
- }
-}
-
-// HostPort creates an Option that sets the hostPort of the local agent that keeps track of credits.
-func (options) HostPort(hostPort string) Option {
- return func(o *options) {
- o.hostPort = hostPort
- }
-}
-
-// RefreshInterval creates an Option that sets how often the Throttler will poll local agent for
-// credits.
-func (options) RefreshInterval(refreshInterval time.Duration) Option {
- return func(o *options) {
- o.refreshInterval = refreshInterval
- }
-}
-
-// SynchronousInitialization creates an Option that determines whether the throttler should synchronously
-// fetch credits from the agent when an operation is seen for the first time. This should be set to true
-// if the client will be used by a short lived service that needs to ensure that credits are fetched upfront
-// such that sampling or throttling occurs.
-func (options) SynchronousInitialization(b bool) Option {
- return func(o *options) {
- o.synchronousInitialization = b
- }
-}
-
-func applyOptions(o ...Option) options {
- opts := options{}
- for _, option := range o {
- option(&opts)
- }
- if opts.metrics == nil {
- opts.metrics = jaeger.NewNullMetrics()
- }
- if opts.logger == nil {
- opts.logger = jaeger.NullLogger
- }
- if opts.hostPort == "" {
- opts.hostPort = defaultHostPort
- }
- if opts.refreshInterval == 0 {
- opts.refreshInterval = defaultRefreshInterval
- }
- return opts
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/throttler.go b/vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/throttler.go
deleted file mode 100644
index 20f434fe4..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/throttler/remote/throttler.go
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright (c) 2018 The Jaeger 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 remote
-
-import (
- "fmt"
- "net/url"
- "sync"
- "sync/atomic"
- "time"
-
- "github.com/pkg/errors"
-
- "github.com/uber/jaeger-client-go"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-const (
- // minimumCredits is the minimum amount of credits necessary to not be throttled.
- // i.e. if currentCredits > minimumCredits, then the operation will not be throttled.
- minimumCredits = 1.0
-)
-
-var (
- errorUUIDNotSet = errors.New("Throttler UUID must be set")
-)
-
-type operationBalance struct {
- Operation string `json:"operation"`
- Balance float64 `json:"balance"`
-}
-
-type creditResponse struct {
- Balances []operationBalance `json:"balances"`
-}
-
-type httpCreditManagerProxy struct {
- hostPort string
-}
-
-func newHTTPCreditManagerProxy(hostPort string) *httpCreditManagerProxy {
- return &httpCreditManagerProxy{
- hostPort: hostPort,
- }
-}
-
-// N.B. Operations list must not be empty.
-func (m *httpCreditManagerProxy) FetchCredits(uuid, serviceName string, operations []string) (*creditResponse, error) {
- params := url.Values{}
- params.Set("service", serviceName)
- params.Set("uuid", uuid)
- for _, op := range operations {
- params.Add("operations", op)
- }
- var resp creditResponse
- if err := utils.GetJSON(fmt.Sprintf("http://%s/credits?%s", m.hostPort, params.Encode()), &resp); err != nil {
- return nil, errors.Wrap(err, "Failed to receive credits from agent")
- }
- return &resp, nil
-}
-
-// Throttler retrieves credits from agent and uses it to throttle operations.
-type Throttler struct {
- options
-
- mux sync.RWMutex
- service string
- uuid atomic.Value
- creditManager *httpCreditManagerProxy
- credits map[string]float64 // map of operation->credits
- close chan struct{}
- stopped sync.WaitGroup
-}
-
-// NewThrottler returns a Throttler that polls agent for credits and uses them to throttle
-// the service.
-func NewThrottler(service string, options ...Option) *Throttler {
- opts := applyOptions(options...)
- creditManager := newHTTPCreditManagerProxy(opts.hostPort)
- t := &Throttler{
- options: opts,
- creditManager: creditManager,
- service: service,
- credits: make(map[string]float64),
- close: make(chan struct{}),
- }
- t.stopped.Add(1)
- go t.pollManager()
- return t
-}
-
-// IsAllowed implements Throttler#IsAllowed.
-func (t *Throttler) IsAllowed(operation string) bool {
- t.mux.Lock()
- defer t.mux.Unlock()
- value, ok := t.credits[operation]
- if !ok || value == 0 {
- if !ok {
- // NOTE: This appears to be a no-op at first glance, but it stores
- // the operation key in the map. Necessary for functionality of
- // Throttler#operations method.
- t.credits[operation] = 0
- }
- if !t.synchronousInitialization {
- t.metrics.ThrottledDebugSpans.Inc(1)
- return false
- }
- // If it is the first time this operation is being checked, synchronously fetch
- // the credits.
- credits, err := t.fetchCredits([]string{operation})
- if err != nil {
- // Failed to receive credits from agent, try again next time
- t.logger.Error("Failed to fetch credits: " + err.Error())
- return false
- }
- if len(credits.Balances) == 0 {
- // This shouldn't happen but just in case
- return false
- }
- for _, opBalance := range credits.Balances {
- t.credits[opBalance.Operation] += opBalance.Balance
- }
- }
- return t.isAllowed(operation)
-}
-
-// Close stops the throttler from fetching credits from remote.
-func (t *Throttler) Close() error {
- close(t.close)
- t.stopped.Wait()
- return nil
-}
-
-// SetProcess implements ProcessSetter#SetProcess. It's imperative that the UUID is set before any remote
-// requests are made.
-func (t *Throttler) SetProcess(process jaeger.Process) {
- if process.UUID != "" {
- t.uuid.Store(process.UUID)
- }
-}
-
-// N.B. This function must be called with the Write Lock
-func (t *Throttler) isAllowed(operation string) bool {
- credits := t.credits[operation]
- if credits < minimumCredits {
- t.metrics.ThrottledDebugSpans.Inc(1)
- return false
- }
- t.credits[operation] = credits - minimumCredits
- return true
-}
-
-func (t *Throttler) pollManager() {
- defer t.stopped.Done()
- ticker := time.NewTicker(t.refreshInterval)
- defer ticker.Stop()
- for {
- select {
- case <-ticker.C:
- t.refreshCredits()
- case <-t.close:
- return
- }
- }
-}
-
-func (t *Throttler) operations() []string {
- t.mux.RLock()
- defer t.mux.RUnlock()
- operations := make([]string, 0, len(t.credits))
- for op := range t.credits {
- operations = append(operations, op)
- }
- return operations
-}
-
-func (t *Throttler) refreshCredits() {
- operations := t.operations()
- if len(operations) == 0 {
- return
- }
- newCredits, err := t.fetchCredits(operations)
- if err != nil {
- t.metrics.ThrottlerUpdateFailure.Inc(1)
- t.logger.Error("Failed to fetch credits: " + err.Error())
- return
- }
- t.metrics.ThrottlerUpdateSuccess.Inc(1)
-
- t.mux.Lock()
- defer t.mux.Unlock()
- for _, opBalance := range newCredits.Balances {
- t.credits[opBalance.Operation] += opBalance.Balance
- }
-}
-
-func (t *Throttler) fetchCredits(operations []string) (*creditResponse, error) {
- uuid := t.uuid.Load()
- uuidStr, _ := uuid.(string)
- if uuid == nil || uuidStr == "" {
- return nil, errorUUIDNotSet
- }
- return t.creditManager.FetchCredits(uuidStr, t.service, operations)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/internal/throttler/throttler.go b/vendor/github.com/uber/jaeger-client-go/internal/throttler/throttler.go
deleted file mode 100644
index 196ed69ca..000000000
--- a/vendor/github.com/uber/jaeger-client-go/internal/throttler/throttler.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2018 The Jaeger 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 throttler
-
-// Throttler is used to rate limits operations. For example, given how debug spans
-// are always sampled, a throttler can be enabled per client to rate limit the amount
-// of debug spans a client can start.
-type Throttler interface {
- // IsAllowed determines whether the operation should be allowed and not be
- // throttled.
- IsAllowed(operation string) bool
-}
-
-// DefaultThrottler doesn't throttle at all.
-type DefaultThrottler struct{}
-
-// IsAllowed implements Throttler#IsAllowed.
-func (t DefaultThrottler) IsAllowed(operation string) bool {
- return true
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/interop.go b/vendor/github.com/uber/jaeger-client-go/interop.go
deleted file mode 100644
index 8402d087c..000000000
--- a/vendor/github.com/uber/jaeger-client-go/interop.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "github.com/opentracing/opentracing-go"
-)
-
-// TODO this file should not be needed after TChannel PR.
-
-type formatKey int
-
-// SpanContextFormat is a constant used as OpenTracing Format.
-// Requires *SpanContext as carrier.
-// This format is intended for interop with TChannel or other Zipkin-like tracers.
-const SpanContextFormat formatKey = iota
-
-type jaegerTraceContextPropagator struct {
- tracer *Tracer
-}
-
-func (p *jaegerTraceContextPropagator) Inject(
- ctx SpanContext,
- abstractCarrier interface{},
-) error {
- carrier, ok := abstractCarrier.(*SpanContext)
- if !ok {
- return opentracing.ErrInvalidCarrier
- }
-
- carrier.CopyFrom(&ctx)
- return nil
-}
-
-func (p *jaegerTraceContextPropagator) Extract(abstractCarrier interface{}) (SpanContext, error) {
- carrier, ok := abstractCarrier.(*SpanContext)
- if !ok {
- return emptyContext, opentracing.ErrInvalidCarrier
- }
- ctx := new(SpanContext)
- ctx.CopyFrom(carrier)
- return *ctx, nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/jaeger_tag.go b/vendor/github.com/uber/jaeger-client-go/jaeger_tag.go
deleted file mode 100644
index 868b2a5b5..000000000
--- a/vendor/github.com/uber/jaeger-client-go/jaeger_tag.go
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "fmt"
-
- "github.com/opentracing/opentracing-go/log"
-
- j "github.com/uber/jaeger-client-go/thrift-gen/jaeger"
-)
-
-type tags []*j.Tag
-
-// ConvertLogsToJaegerTags converts log Fields into jaeger tags.
-func ConvertLogsToJaegerTags(logFields []log.Field) []*j.Tag {
- fields := tags(make([]*j.Tag, 0, len(logFields)))
- for _, field := range logFields {
- field.Marshal(&fields)
- }
- return fields
-}
-
-func (t *tags) EmitString(key, value string) {
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_STRING, VStr: &value})
-}
-
-func (t *tags) EmitBool(key string, value bool) {
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_BOOL, VBool: &value})
-}
-
-func (t *tags) EmitInt(key string, value int) {
- vLong := int64(value)
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_LONG, VLong: &vLong})
-}
-
-func (t *tags) EmitInt32(key string, value int32) {
- vLong := int64(value)
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_LONG, VLong: &vLong})
-}
-
-func (t *tags) EmitInt64(key string, value int64) {
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_LONG, VLong: &value})
-}
-
-func (t *tags) EmitUint32(key string, value uint32) {
- vLong := int64(value)
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_LONG, VLong: &vLong})
-}
-
-func (t *tags) EmitUint64(key string, value uint64) {
- vLong := int64(value)
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_LONG, VLong: &vLong})
-}
-
-func (t *tags) EmitFloat32(key string, value float32) {
- vDouble := float64(value)
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_DOUBLE, VDouble: &vDouble})
-}
-
-func (t *tags) EmitFloat64(key string, value float64) {
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_DOUBLE, VDouble: &value})
-}
-
-func (t *tags) EmitObject(key string, value interface{}) {
- vStr := fmt.Sprintf("%+v", value)
- *t = append(*t, &j.Tag{Key: key, VType: j.TagType_STRING, VStr: &vStr})
-}
-
-func (t *tags) EmitLazyLogger(value log.LazyLogger) {
- value(t)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/jaeger_thrift_span.go b/vendor/github.com/uber/jaeger-client-go/jaeger_thrift_span.go
deleted file mode 100644
index 3ac2f8f94..000000000
--- a/vendor/github.com/uber/jaeger-client-go/jaeger_thrift_span.go
+++ /dev/null
@@ -1,181 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "time"
-
- "github.com/opentracing/opentracing-go"
-
- j "github.com/uber/jaeger-client-go/thrift-gen/jaeger"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-// BuildJaegerThrift builds jaeger span based on internal span.
-// TODO: (breaking change) move to internal package.
-func BuildJaegerThrift(span *Span) *j.Span {
- span.Lock()
- defer span.Unlock()
- startTime := utils.TimeToMicrosecondsSinceEpochInt64(span.startTime)
- duration := span.duration.Nanoseconds() / int64(time.Microsecond)
- jaegerSpan := &j.Span{
- TraceIdLow: int64(span.context.traceID.Low),
- TraceIdHigh: int64(span.context.traceID.High),
- SpanId: int64(span.context.spanID),
- ParentSpanId: int64(span.context.parentID),
- OperationName: span.operationName,
- Flags: int32(span.context.samplingState.flags()),
- StartTime: startTime,
- Duration: duration,
- Tags: buildTags(span.tags, span.tracer.options.maxTagValueLength),
- Logs: buildLogs(span.logs),
- References: buildReferences(span.references),
- }
- return jaegerSpan
-}
-
-// BuildJaegerProcessThrift creates a thrift Process type.
-// TODO: (breaking change) move to internal package.
-func BuildJaegerProcessThrift(span *Span) *j.Process {
- span.Lock()
- defer span.Unlock()
- return buildJaegerProcessThrift(span.tracer)
-}
-
-func buildJaegerProcessThrift(tracer *Tracer) *j.Process {
- process := &j.Process{
- ServiceName: tracer.serviceName,
- Tags: buildTags(tracer.tags, tracer.options.maxTagValueLength),
- }
- if tracer.process.UUID != "" {
- process.Tags = append(process.Tags, &j.Tag{Key: TracerUUIDTagKey, VStr: &tracer.process.UUID, VType: j.TagType_STRING})
- }
- return process
-}
-
-func buildTags(tags []Tag, maxTagValueLength int) []*j.Tag {
- jTags := make([]*j.Tag, 0, len(tags))
- for _, tag := range tags {
- jTag := buildTag(&tag, maxTagValueLength)
- jTags = append(jTags, jTag)
- }
- return jTags
-}
-
-func buildLogs(logs []opentracing.LogRecord) []*j.Log {
- jLogs := make([]*j.Log, 0, len(logs))
- for _, log := range logs {
- jLog := &j.Log{
- Timestamp: utils.TimeToMicrosecondsSinceEpochInt64(log.Timestamp),
- Fields: ConvertLogsToJaegerTags(log.Fields),
- }
- jLogs = append(jLogs, jLog)
- }
- return jLogs
-}
-
-func buildTag(tag *Tag, maxTagValueLength int) *j.Tag {
- jTag := &j.Tag{Key: tag.key}
- switch value := tag.value.(type) {
- case string:
- vStr := truncateString(value, maxTagValueLength)
- jTag.VStr = &vStr
- jTag.VType = j.TagType_STRING
- case []byte:
- if len(value) > maxTagValueLength {
- value = value[:maxTagValueLength]
- }
- jTag.VBinary = value
- jTag.VType = j.TagType_BINARY
- case int:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case uint:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case int8:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case uint8:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case int16:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case uint16:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case int32:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case uint32:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case int64:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case uint64:
- vLong := int64(value)
- jTag.VLong = &vLong
- jTag.VType = j.TagType_LONG
- case float32:
- vDouble := float64(value)
- jTag.VDouble = &vDouble
- jTag.VType = j.TagType_DOUBLE
- case float64:
- vDouble := float64(value)
- jTag.VDouble = &vDouble
- jTag.VType = j.TagType_DOUBLE
- case bool:
- vBool := value
- jTag.VBool = &vBool
- jTag.VType = j.TagType_BOOL
- default:
- vStr := truncateString(stringify(value), maxTagValueLength)
- jTag.VStr = &vStr
- jTag.VType = j.TagType_STRING
- }
- return jTag
-}
-
-func buildReferences(references []Reference) []*j.SpanRef {
- retMe := make([]*j.SpanRef, 0, len(references))
- for _, ref := range references {
- if ref.Type == opentracing.ChildOfRef {
- retMe = append(retMe, spanRef(ref.Context, j.SpanRefType_CHILD_OF))
- } else if ref.Type == opentracing.FollowsFromRef {
- retMe = append(retMe, spanRef(ref.Context, j.SpanRefType_FOLLOWS_FROM))
- }
- }
- return retMe
-}
-
-func spanRef(ctx SpanContext, refType j.SpanRefType) *j.SpanRef {
- return &j.SpanRef{
- RefType: refType,
- TraceIdLow: int64(ctx.traceID.Low),
- TraceIdHigh: int64(ctx.traceID.High),
- SpanId: int64(ctx.spanID),
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/logger.go b/vendor/github.com/uber/jaeger-client-go/logger.go
deleted file mode 100644
index d4f0b5019..000000000
--- a/vendor/github.com/uber/jaeger-client-go/logger.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import "log"
-
-// NB This will be deprecated in 3.0.0, please use jaeger-client-go/log/logger instead.
-
-// Logger provides an abstract interface for logging from Reporters.
-// Applications can provide their own implementation of this interface to adapt
-// reporters logging to whatever logging library they prefer (stdlib log,
-// logrus, go-logging, etc).
-type Logger interface {
- // Error logs a message at error priority
- Error(msg string)
-
- // Infof logs a message at info priority
- Infof(msg string, args ...interface{})
-}
-
-// StdLogger is implementation of the Logger interface that delegates to default `log` package
-var StdLogger = &stdLogger{}
-
-type stdLogger struct{}
-
-func (l *stdLogger) Error(msg string) {
- log.Printf("ERROR: %s", msg)
-}
-
-// Infof logs a message at info priority
-func (l *stdLogger) Infof(msg string, args ...interface{}) {
- log.Printf(msg, args...)
-}
-
-// NullLogger is implementation of the Logger interface that delegates to default `log` package
-var NullLogger = &nullLogger{}
-
-type nullLogger struct{}
-
-func (l *nullLogger) Error(msg string) {}
-func (l *nullLogger) Infof(msg string, args ...interface{}) {}
diff --git a/vendor/github.com/uber/jaeger-client-go/metrics.go b/vendor/github.com/uber/jaeger-client-go/metrics.go
deleted file mode 100644
index 50e4e22d6..000000000
--- a/vendor/github.com/uber/jaeger-client-go/metrics.go
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright (c) 2017-2018 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "github.com/uber/jaeger-lib/metrics"
-)
-
-// Metrics is a container of all stats emitted by Jaeger tracer.
-type Metrics struct {
- // Number of traces started by this tracer as sampled
- TracesStartedSampled metrics.Counter `metric:"traces" tags:"state=started,sampled=y" help:"Number of traces started by this tracer as sampled"`
-
- // Number of traces started by this tracer as not sampled
- TracesStartedNotSampled metrics.Counter `metric:"traces" tags:"state=started,sampled=n" help:"Number of traces started by this tracer as not sampled"`
-
- // Number of traces started by this tracer with delayed sampling
- TracesStartedDelayedSampling metrics.Counter `metric:"traces" tags:"state=started,sampled=n" help:"Number of traces started by this tracer with delayed sampling"`
-
- // Number of externally started sampled traces this tracer joined
- TracesJoinedSampled metrics.Counter `metric:"traces" tags:"state=joined,sampled=y" help:"Number of externally started sampled traces this tracer joined"`
-
- // Number of externally started not-sampled traces this tracer joined
- TracesJoinedNotSampled metrics.Counter `metric:"traces" tags:"state=joined,sampled=n" help:"Number of externally started not-sampled traces this tracer joined"`
-
- // Number of sampled spans started by this tracer
- SpansStartedSampled metrics.Counter `metric:"started_spans" tags:"sampled=y" help:"Number of spans started by this tracer as sampled"`
-
- // Number of not sampled spans started by this tracer
- SpansStartedNotSampled metrics.Counter `metric:"started_spans" tags:"sampled=n" help:"Number of spans started by this tracer as not sampled"`
-
- // Number of spans with delayed sampling started by this tracer
- SpansStartedDelayedSampling metrics.Counter `metric:"started_spans" tags:"sampled=delayed" help:"Number of spans started by this tracer with delayed sampling"`
-
- // Number of spans finished by this tracer
- SpansFinishedSampled metrics.Counter `metric:"finished_spans" tags:"sampled=y" help:"Number of sampled spans finished by this tracer"`
-
- // Number of spans finished by this tracer
- SpansFinishedNotSampled metrics.Counter `metric:"finished_spans" tags:"sampled=n" help:"Number of not-sampled spans finished by this tracer"`
-
- // Number of spans finished by this tracer
- SpansFinishedDelayedSampling metrics.Counter `metric:"finished_spans" tags:"sampled=delayed" help:"Number of spans with delayed sampling finished by this tracer"`
-
- // Number of errors decoding tracing context
- DecodingErrors metrics.Counter `metric:"span_context_decoding_errors" help:"Number of errors decoding tracing context"`
-
- // Number of spans successfully reported
- ReporterSuccess metrics.Counter `metric:"reporter_spans" tags:"result=ok" help:"Number of spans successfully reported"`
-
- // Number of spans not reported due to a Sender failure
- ReporterFailure metrics.Counter `metric:"reporter_spans" tags:"result=err" help:"Number of spans not reported due to a Sender failure"`
-
- // Number of spans dropped due to internal queue overflow
- ReporterDropped metrics.Counter `metric:"reporter_spans" tags:"result=dropped" help:"Number of spans dropped due to internal queue overflow"`
-
- // Current number of spans in the reporter queue
- ReporterQueueLength metrics.Gauge `metric:"reporter_queue_length" help:"Current number of spans in the reporter queue"`
-
- // Number of times the Sampler succeeded to retrieve sampling strategy
- SamplerRetrieved metrics.Counter `metric:"sampler_queries" tags:"result=ok" help:"Number of times the Sampler succeeded to retrieve sampling strategy"`
-
- // Number of times the Sampler failed to retrieve sampling strategy
- SamplerQueryFailure metrics.Counter `metric:"sampler_queries" tags:"result=err" help:"Number of times the Sampler failed to retrieve sampling strategy"`
-
- // Number of times the Sampler succeeded to retrieve and update sampling strategy
- SamplerUpdated metrics.Counter `metric:"sampler_updates" tags:"result=ok" help:"Number of times the Sampler succeeded to retrieve and update sampling strategy"`
-
- // Number of times the Sampler failed to update sampling strategy
- SamplerUpdateFailure metrics.Counter `metric:"sampler_updates" tags:"result=err" help:"Number of times the Sampler failed to update sampling strategy"`
-
- // Number of times baggage was successfully written or updated on spans.
- BaggageUpdateSuccess metrics.Counter `metric:"baggage_updates" tags:"result=ok" help:"Number of times baggage was successfully written or updated on spans"`
-
- // Number of times baggage failed to write or update on spans.
- BaggageUpdateFailure metrics.Counter `metric:"baggage_updates" tags:"result=err" help:"Number of times baggage failed to write or update on spans"`
-
- // Number of times baggage was truncated as per baggage restrictions.
- BaggageTruncate metrics.Counter `metric:"baggage_truncations" help:"Number of times baggage was truncated as per baggage restrictions"`
-
- // Number of times baggage restrictions were successfully updated.
- BaggageRestrictionsUpdateSuccess metrics.Counter `metric:"baggage_restrictions_updates" tags:"result=ok" help:"Number of times baggage restrictions were successfully updated"`
-
- // Number of times baggage restrictions failed to update.
- BaggageRestrictionsUpdateFailure metrics.Counter `metric:"baggage_restrictions_updates" tags:"result=err" help:"Number of times baggage restrictions failed to update"`
-
- // Number of times debug spans were throttled.
- ThrottledDebugSpans metrics.Counter `metric:"throttled_debug_spans" help:"Number of times debug spans were throttled"`
-
- // Number of times throttler successfully updated.
- ThrottlerUpdateSuccess metrics.Counter `metric:"throttler_updates" tags:"result=ok" help:"Number of times throttler successfully updated"`
-
- // Number of times throttler failed to update.
- ThrottlerUpdateFailure metrics.Counter `metric:"throttler_updates" tags:"result=err" help:"Number of times throttler failed to update"`
-}
-
-// NewMetrics creates a new Metrics struct and initializes it.
-func NewMetrics(factory metrics.Factory, globalTags map[string]string) *Metrics {
- m := &Metrics{}
- // TODO the namespace "jaeger" should be configurable
- metrics.MustInit(m, factory.Namespace(metrics.NSOptions{Name: "jaeger"}).Namespace(metrics.NSOptions{Name: "tracer"}), globalTags)
- return m
-}
-
-// NewNullMetrics creates a new Metrics struct that won't report any metrics.
-func NewNullMetrics() *Metrics {
- return NewMetrics(metrics.NullFactory, nil)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/observer.go b/vendor/github.com/uber/jaeger-client-go/observer.go
deleted file mode 100644
index 7bbd02889..000000000
--- a/vendor/github.com/uber/jaeger-client-go/observer.go
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import opentracing "github.com/opentracing/opentracing-go"
-
-// Observer can be registered with the Tracer to receive notifications about
-// new Spans.
-//
-// Deprecated: use jaeger.ContribObserver instead.
-type Observer interface {
- OnStartSpan(operationName string, options opentracing.StartSpanOptions) SpanObserver
-}
-
-// SpanObserver is created by the Observer and receives notifications about
-// other Span events.
-//
-// Deprecated: use jaeger.ContribSpanObserver instead.
-type SpanObserver interface {
- OnSetOperationName(operationName string)
- OnSetTag(key string, value interface{})
- OnFinish(options opentracing.FinishOptions)
-}
-
-// compositeObserver is a dispatcher to other observers
-type compositeObserver struct {
- observers []ContribObserver
-}
-
-// compositeSpanObserver is a dispatcher to other span observers
-type compositeSpanObserver struct {
- observers []ContribSpanObserver
-}
-
-// noopSpanObserver is used when there are no observers registered
-// on the Tracer or none of them returns span observers from OnStartSpan.
-var noopSpanObserver = &compositeSpanObserver{}
-
-func (o *compositeObserver) append(contribObserver ContribObserver) {
- o.observers = append(o.observers, contribObserver)
-}
-
-func (o *compositeObserver) OnStartSpan(sp opentracing.Span, operationName string, options opentracing.StartSpanOptions) ContribSpanObserver {
- var spanObservers []ContribSpanObserver
- for _, obs := range o.observers {
- spanObs, ok := obs.OnStartSpan(sp, operationName, options)
- if ok {
- if spanObservers == nil {
- spanObservers = make([]ContribSpanObserver, 0, len(o.observers))
- }
- spanObservers = append(spanObservers, spanObs)
- }
- }
- if len(spanObservers) == 0 {
- return noopSpanObserver
- }
- return &compositeSpanObserver{observers: spanObservers}
-}
-
-func (o *compositeSpanObserver) OnSetOperationName(operationName string) {
- for _, obs := range o.observers {
- obs.OnSetOperationName(operationName)
- }
-}
-
-func (o *compositeSpanObserver) OnSetTag(key string, value interface{}) {
- for _, obs := range o.observers {
- obs.OnSetTag(key, value)
- }
-}
-
-func (o *compositeSpanObserver) OnFinish(options opentracing.FinishOptions) {
- for _, obs := range o.observers {
- obs.OnFinish(options)
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/process.go b/vendor/github.com/uber/jaeger-client-go/process.go
deleted file mode 100644
index 30cbf9962..000000000
--- a/vendor/github.com/uber/jaeger-client-go/process.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2018 The Jaeger 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 jaeger
-
-// Process holds process specific metadata that's relevant to this client.
-type Process struct {
- Service string
- UUID string
- Tags []Tag
-}
-
-// ProcessSetter sets a process. This can be used by any class that requires
-// the process to be set as part of initialization.
-// See internal/throttler/remote/throttler.go for an example.
-type ProcessSetter interface {
- SetProcess(process Process)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/propagation.go b/vendor/github.com/uber/jaeger-client-go/propagation.go
deleted file mode 100644
index 42fd64b58..000000000
--- a/vendor/github.com/uber/jaeger-client-go/propagation.go
+++ /dev/null
@@ -1,313 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "bytes"
- "encoding/binary"
- "fmt"
- "io"
- "log"
- "net/url"
- "strings"
- "sync"
-
- opentracing "github.com/opentracing/opentracing-go"
-)
-
-// Injector is responsible for injecting SpanContext instances in a manner suitable
-// for propagation via a format-specific "carrier" object. Typically the
-// injection will take place across an RPC boundary, but message queues and
-// other IPC mechanisms are also reasonable places to use an Injector.
-type Injector interface {
- // Inject takes `SpanContext` and injects it into `carrier`. The actual type
- // of `carrier` depends on the `format` passed to `Tracer.Inject()`.
- //
- // Implementations may return opentracing.ErrInvalidCarrier or any other
- // implementation-specific error if injection fails.
- Inject(ctx SpanContext, carrier interface{}) error
-}
-
-// Extractor is responsible for extracting SpanContext instances from a
-// format-specific "carrier" object. Typically the extraction will take place
-// on the server side of an RPC boundary, but message queues and other IPC
-// mechanisms are also reasonable places to use an Extractor.
-type Extractor interface {
- // Extract decodes a SpanContext instance from the given `carrier`,
- // or (nil, opentracing.ErrSpanContextNotFound) if no context could
- // be found in the `carrier`.
- Extract(carrier interface{}) (SpanContext, error)
-}
-
-// TextMapPropagator is a combined Injector and Extractor for TextMap format
-type TextMapPropagator struct {
- headerKeys *HeadersConfig
- metrics Metrics
- encodeValue func(string) string
- decodeValue func(string) string
-}
-
-// NewTextMapPropagator creates a combined Injector and Extractor for TextMap format
-func NewTextMapPropagator(headerKeys *HeadersConfig, metrics Metrics) *TextMapPropagator {
- return &TextMapPropagator{
- headerKeys: headerKeys,
- metrics: metrics,
- encodeValue: func(val string) string {
- return val
- },
- decodeValue: func(val string) string {
- return val
- },
- }
-}
-
-// NewHTTPHeaderPropagator creates a combined Injector and Extractor for HTTPHeaders format
-func NewHTTPHeaderPropagator(headerKeys *HeadersConfig, metrics Metrics) *TextMapPropagator {
- return &TextMapPropagator{
- headerKeys: headerKeys,
- metrics: metrics,
- encodeValue: func(val string) string {
- return url.QueryEscape(val)
- },
- decodeValue: func(val string) string {
- // ignore decoding errors, cannot do anything about them
- if v, err := url.QueryUnescape(val); err == nil {
- return v
- }
- return val
- },
- }
-}
-
-// BinaryPropagator is a combined Injector and Extractor for Binary format
-type BinaryPropagator struct {
- tracer *Tracer
- buffers sync.Pool
-}
-
-// NewBinaryPropagator creates a combined Injector and Extractor for Binary format
-func NewBinaryPropagator(tracer *Tracer) *BinaryPropagator {
- return &BinaryPropagator{
- tracer: tracer,
- buffers: sync.Pool{New: func() interface{} { return &bytes.Buffer{} }},
- }
-}
-
-// Inject implements Injector of TextMapPropagator
-func (p *TextMapPropagator) Inject(
- sc SpanContext,
- abstractCarrier interface{},
-) error {
- textMapWriter, ok := abstractCarrier.(opentracing.TextMapWriter)
- if !ok {
- return opentracing.ErrInvalidCarrier
- }
-
- // Do not encode the string with trace context to avoid accidental double-encoding
- // if people are using opentracing < 0.10.0. Our colon-separated representation
- // of the trace context is already safe for HTTP headers.
- textMapWriter.Set(p.headerKeys.TraceContextHeaderName, sc.String())
- for k, v := range sc.baggage {
- safeKey := p.addBaggageKeyPrefix(k)
- safeVal := p.encodeValue(v)
- textMapWriter.Set(safeKey, safeVal)
- }
- return nil
-}
-
-// Extract implements Extractor of TextMapPropagator
-func (p *TextMapPropagator) Extract(abstractCarrier interface{}) (SpanContext, error) {
- textMapReader, ok := abstractCarrier.(opentracing.TextMapReader)
- if !ok {
- return emptyContext, opentracing.ErrInvalidCarrier
- }
- var ctx SpanContext
- var baggage map[string]string
- err := textMapReader.ForeachKey(func(rawKey, value string) error {
- key := strings.ToLower(rawKey) // TODO not necessary for plain TextMap
- if key == p.headerKeys.TraceContextHeaderName {
- var err error
- safeVal := p.decodeValue(value)
- if ctx, err = ContextFromString(safeVal); err != nil {
- return err
- }
- } else if key == p.headerKeys.JaegerDebugHeader {
- ctx.debugID = p.decodeValue(value)
- } else if key == p.headerKeys.JaegerBaggageHeader {
- if baggage == nil {
- baggage = make(map[string]string)
- }
- for k, v := range p.parseCommaSeparatedMap(value) {
- baggage[k] = v
- }
- } else if strings.HasPrefix(key, p.headerKeys.TraceBaggageHeaderPrefix) {
- if baggage == nil {
- baggage = make(map[string]string)
- }
- safeKey := p.removeBaggageKeyPrefix(key)
- safeVal := p.decodeValue(value)
- baggage[safeKey] = safeVal
- }
- return nil
- })
- if err != nil {
- p.metrics.DecodingErrors.Inc(1)
- return emptyContext, err
- }
- if !ctx.traceID.IsValid() && ctx.debugID == "" && len(baggage) == 0 {
- return emptyContext, opentracing.ErrSpanContextNotFound
- }
- ctx.baggage = baggage
- return ctx, nil
-}
-
-// Inject implements Injector of BinaryPropagator
-func (p *BinaryPropagator) Inject(
- sc SpanContext,
- abstractCarrier interface{},
-) error {
- carrier, ok := abstractCarrier.(io.Writer)
- if !ok {
- return opentracing.ErrInvalidCarrier
- }
-
- // Handle the tracer context
- if err := binary.Write(carrier, binary.BigEndian, sc.traceID); err != nil {
- return err
- }
- if err := binary.Write(carrier, binary.BigEndian, sc.spanID); err != nil {
- return err
- }
- if err := binary.Write(carrier, binary.BigEndian, sc.parentID); err != nil {
- return err
- }
- if err := binary.Write(carrier, binary.BigEndian, sc.samplingState.flags()); err != nil {
- return err
- }
-
- // Handle the baggage items
- if err := binary.Write(carrier, binary.BigEndian, int32(len(sc.baggage))); err != nil {
- return err
- }
- for k, v := range sc.baggage {
- if err := binary.Write(carrier, binary.BigEndian, int32(len(k))); err != nil {
- return err
- }
- io.WriteString(carrier, k)
- if err := binary.Write(carrier, binary.BigEndian, int32(len(v))); err != nil {
- return err
- }
- io.WriteString(carrier, v)
- }
-
- return nil
-}
-
-// Extract implements Extractor of BinaryPropagator
-func (p *BinaryPropagator) Extract(abstractCarrier interface{}) (SpanContext, error) {
- carrier, ok := abstractCarrier.(io.Reader)
- if !ok {
- return emptyContext, opentracing.ErrInvalidCarrier
- }
- var ctx SpanContext
- ctx.samplingState = &samplingState{}
-
- if err := binary.Read(carrier, binary.BigEndian, &ctx.traceID); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- if err := binary.Read(carrier, binary.BigEndian, &ctx.spanID); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- if err := binary.Read(carrier, binary.BigEndian, &ctx.parentID); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
-
- var flags byte
- if err := binary.Read(carrier, binary.BigEndian, &flags); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- ctx.samplingState.setFlags(flags)
-
- // Handle the baggage items
- var numBaggage int32
- if err := binary.Read(carrier, binary.BigEndian, &numBaggage); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- if iNumBaggage := int(numBaggage); iNumBaggage > 0 {
- ctx.baggage = make(map[string]string, iNumBaggage)
- buf := p.buffers.Get().(*bytes.Buffer)
- defer p.buffers.Put(buf)
-
- var keyLen, valLen int32
- for i := 0; i < iNumBaggage; i++ {
- if err := binary.Read(carrier, binary.BigEndian, &keyLen); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- buf.Reset()
- buf.Grow(int(keyLen))
- if n, err := io.CopyN(buf, carrier, int64(keyLen)); err != nil || int32(n) != keyLen {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- key := buf.String()
-
- if err := binary.Read(carrier, binary.BigEndian, &valLen); err != nil {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- buf.Reset()
- buf.Grow(int(valLen))
- if n, err := io.CopyN(buf, carrier, int64(valLen)); err != nil || int32(n) != valLen {
- return emptyContext, opentracing.ErrSpanContextCorrupted
- }
- ctx.baggage[key] = buf.String()
- }
- }
-
- return ctx, nil
-}
-
-// Converts a comma separated key value pair list into a map
-// e.g. key1=value1, key2=value2, key3 = value3
-// is converted to map[string]string { "key1" : "value1",
-// "key2" : "value2",
-// "key3" : "value3" }
-func (p *TextMapPropagator) parseCommaSeparatedMap(value string) map[string]string {
- baggage := make(map[string]string)
- value, err := url.QueryUnescape(value)
- if err != nil {
- log.Printf("Unable to unescape %s, %v", value, err)
- return baggage
- }
- for _, kvpair := range strings.Split(value, ",") {
- kv := strings.Split(strings.TrimSpace(kvpair), "=")
- if len(kv) == 2 {
- baggage[kv[0]] = kv[1]
- } else {
- log.Printf("Malformed value passed in for %s", p.headerKeys.JaegerBaggageHeader)
- }
- }
- return baggage
-}
-
-// Converts a baggage item key into an http header format,
-// by prepending TraceBaggageHeaderPrefix and encoding the key string
-func (p *TextMapPropagator) addBaggageKeyPrefix(key string) string {
- // TODO encodeBaggageKeyAsHeader add caching and escaping
- return fmt.Sprintf("%v%v", p.headerKeys.TraceBaggageHeaderPrefix, key)
-}
-
-func (p *TextMapPropagator) removeBaggageKeyPrefix(key string) string {
- // TODO decodeBaggageHeaderKey add caching and escaping
- return key[len(p.headerKeys.TraceBaggageHeaderPrefix):]
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/reference.go b/vendor/github.com/uber/jaeger-client-go/reference.go
deleted file mode 100644
index 5646e78bb..000000000
--- a/vendor/github.com/uber/jaeger-client-go/reference.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import "github.com/opentracing/opentracing-go"
-
-// Reference represents a causal reference to other Spans (via their SpanContext).
-type Reference struct {
- Type opentracing.SpanReferenceType
- Context SpanContext
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/reporter.go b/vendor/github.com/uber/jaeger-client-go/reporter.go
deleted file mode 100644
index a71a92c3e..000000000
--- a/vendor/github.com/uber/jaeger-client-go/reporter.go
+++ /dev/null
@@ -1,322 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "fmt"
- "sync"
- "sync/atomic"
- "time"
-
- "github.com/opentracing/opentracing-go"
-
- "github.com/uber/jaeger-client-go/internal/reporterstats"
- "github.com/uber/jaeger-client-go/log"
-)
-
-// Reporter is called by the tracer when a span is completed to report the span to the tracing collector.
-type Reporter interface {
- // Report submits a new span to collectors, possibly asynchronously and/or with buffering.
- // If the reporter is processing Span asynchronously then it needs to Retain() the span,
- // and then Release() it when no longer needed, to avoid span data corruption.
- Report(span *Span)
-
- // Close does a clean shutdown of the reporter, flushing any traces that may be buffered in memory.
- Close()
-}
-
-// ------------------------------
-
-type nullReporter struct{}
-
-// NewNullReporter creates a no-op reporter that ignores all reported spans.
-func NewNullReporter() Reporter {
- return &nullReporter{}
-}
-
-// Report implements Report() method of Reporter by doing nothing.
-func (r *nullReporter) Report(span *Span) {
- // no-op
-}
-
-// Close implements Close() method of Reporter by doing nothing.
-func (r *nullReporter) Close() {
- // no-op
-}
-
-// ------------------------------
-
-type loggingReporter struct {
- logger Logger
-}
-
-// NewLoggingReporter creates a reporter that logs all reported spans to provided logger.
-func NewLoggingReporter(logger Logger) Reporter {
- return &loggingReporter{logger}
-}
-
-// Report implements Report() method of Reporter by logging the span to the logger.
-func (r *loggingReporter) Report(span *Span) {
- r.logger.Infof("Reporting span %+v", span)
-}
-
-// Close implements Close() method of Reporter by doing nothing.
-func (r *loggingReporter) Close() {
- // no-op
-}
-
-// ------------------------------
-
-// InMemoryReporter is used for testing, and simply collects spans in memory.
-type InMemoryReporter struct {
- spans []opentracing.Span
- lock sync.Mutex
-}
-
-// NewInMemoryReporter creates a reporter that stores spans in memory.
-// NOTE: the Tracer should be created with options.PoolSpans = false.
-func NewInMemoryReporter() *InMemoryReporter {
- return &InMemoryReporter{
- spans: make([]opentracing.Span, 0, 10),
- }
-}
-
-// Report implements Report() method of Reporter by storing the span in the buffer.
-func (r *InMemoryReporter) Report(span *Span) {
- r.lock.Lock()
- // Need to retain the span otherwise it will be released
- r.spans = append(r.spans, span.Retain())
- r.lock.Unlock()
-}
-
-// Close implements Close() method of Reporter
-func (r *InMemoryReporter) Close() {
- r.Reset()
-}
-
-// SpansSubmitted returns the number of spans accumulated in the buffer.
-func (r *InMemoryReporter) SpansSubmitted() int {
- r.lock.Lock()
- defer r.lock.Unlock()
- return len(r.spans)
-}
-
-// GetSpans returns accumulated spans as a copy of the buffer.
-func (r *InMemoryReporter) GetSpans() []opentracing.Span {
- r.lock.Lock()
- defer r.lock.Unlock()
- copied := make([]opentracing.Span, len(r.spans))
- copy(copied, r.spans)
- return copied
-}
-
-// Reset clears all accumulated spans.
-func (r *InMemoryReporter) Reset() {
- r.lock.Lock()
- defer r.lock.Unlock()
-
- // Before reset the collection need to release Span memory
- for _, span := range r.spans {
- span.(*Span).Release()
- }
- r.spans = r.spans[:0]
-}
-
-// ------------------------------
-
-type compositeReporter struct {
- reporters []Reporter
-}
-
-// NewCompositeReporter creates a reporter that ignores all reported spans.
-func NewCompositeReporter(reporters ...Reporter) Reporter {
- return &compositeReporter{reporters: reporters}
-}
-
-// Report implements Report() method of Reporter by delegating to each underlying reporter.
-func (r *compositeReporter) Report(span *Span) {
- for _, reporter := range r.reporters {
- reporter.Report(span)
- }
-}
-
-// Close implements Close() method of Reporter by closing each underlying reporter.
-func (r *compositeReporter) Close() {
- for _, reporter := range r.reporters {
- reporter.Close()
- }
-}
-
-// ------------- REMOTE REPORTER -----------------
-
-type reporterQueueItemType int
-
-const (
- defaultQueueSize = 100
- defaultBufferFlushInterval = 1 * time.Second
-
- reporterQueueItemSpan reporterQueueItemType = iota
- reporterQueueItemClose
-)
-
-type reporterQueueItem struct {
- itemType reporterQueueItemType
- span *Span
- close *sync.WaitGroup
-}
-
-// reporterStats implements reporterstats.ReporterStats.
-type reporterStats struct {
- droppedCount int64 // provided to Transports to report data loss to the backend
-}
-
-// SpansDroppedFromQueue implements reporterstats.ReporterStats.
-func (r *reporterStats) SpansDroppedFromQueue() int64 {
- return atomic.LoadInt64(&r.droppedCount)
-}
-
-func (r *reporterStats) incDroppedCount() {
- atomic.AddInt64(&r.droppedCount, 1)
-}
-
-type remoteReporter struct {
- // These fields must be first in the struct because `sync/atomic` expects 64-bit alignment.
- // Cf. https://github.com/uber/jaeger-client-go/issues/155, https://goo.gl/zW7dgq
- queueLength int64 // used to update metrics.Gauge
- closed int64 // 0 - not closed, 1 - closed
-
- reporterOptions
-
- sender Transport
- queue chan reporterQueueItem
- reporterStats *reporterStats
-}
-
-// NewRemoteReporter creates a new reporter that sends spans out of process by means of Sender.
-// Calls to Report(Span) return immediately (side effect: if internal buffer is full the span is dropped).
-// Periodically the transport buffer is flushed even if it hasn't reached max packet size.
-// Calls to Close() block until all spans reported prior to the call to Close are flushed.
-func NewRemoteReporter(sender Transport, opts ...ReporterOption) Reporter {
- options := reporterOptions{}
- for _, option := range opts {
- option(&options)
- }
- if options.bufferFlushInterval <= 0 {
- options.bufferFlushInterval = defaultBufferFlushInterval
- }
- if options.logger == nil {
- options.logger = log.NullLogger
- }
- if options.metrics == nil {
- options.metrics = NewNullMetrics()
- }
- if options.queueSize <= 0 {
- options.queueSize = defaultQueueSize
- }
- reporter := &remoteReporter{
- reporterOptions: options,
- sender: sender,
- queue: make(chan reporterQueueItem, options.queueSize),
- reporterStats: new(reporterStats),
- }
- if receiver, ok := sender.(reporterstats.Receiver); ok {
- receiver.SetReporterStats(reporter.reporterStats)
- }
- go reporter.processQueue()
- return reporter
-}
-
-// Report implements Report() method of Reporter.
-// It passes the span to a background go-routine for submission to Jaeger backend.
-// If the internal queue is full, the span is dropped and metrics.ReporterDropped counter is incremented.
-// If Report() is called after the reporter has been Close()-ed, the additional spans will not be
-// sent to the backend, but the metrics.ReporterDropped counter may not reflect them correctly,
-// because some of them may still be successfully added to the queue.
-func (r *remoteReporter) Report(span *Span) {
- select {
- // Need to retain the span otherwise it will be released
- case r.queue <- reporterQueueItem{itemType: reporterQueueItemSpan, span: span.Retain()}:
- atomic.AddInt64(&r.queueLength, 1)
- default:
- r.metrics.ReporterDropped.Inc(1)
- r.reporterStats.incDroppedCount()
- }
-}
-
-// Close implements Close() method of Reporter by waiting for the queue to be drained.
-func (r *remoteReporter) Close() {
- r.logger.Debugf("closing reporter")
- if swapped := atomic.CompareAndSwapInt64(&r.closed, 0, 1); !swapped {
- r.logger.Error("Repeated attempt to close the reporter is ignored")
- return
- }
- r.sendCloseEvent()
- _ = r.sender.Close()
-}
-
-func (r *remoteReporter) sendCloseEvent() {
- wg := &sync.WaitGroup{}
- wg.Add(1)
- item := reporterQueueItem{itemType: reporterQueueItemClose, close: wg}
-
- r.queue <- item // if the queue is full we will block until there is space
- atomic.AddInt64(&r.queueLength, 1)
- wg.Wait()
-}
-
-// processQueue reads spans from the queue, converts them to Thrift, and stores them in an internal buffer.
-// When the buffer length reaches batchSize, it is flushed by submitting the accumulated spans to Jaeger.
-// Buffer also gets flushed automatically every batchFlushInterval seconds, just in case the tracer stopped
-// reporting new spans.
-func (r *remoteReporter) processQueue() {
- // flush causes the Sender to flush its accumulated spans and clear the buffer
- flush := func() {
- if flushed, err := r.sender.Flush(); err != nil {
- r.metrics.ReporterFailure.Inc(int64(flushed))
- r.logger.Error(fmt.Sprintf("failed to flush Jaeger spans to server: %s", err.Error()))
- } else if flushed > 0 {
- r.metrics.ReporterSuccess.Inc(int64(flushed))
- }
- }
-
- timer := time.NewTicker(r.bufferFlushInterval)
- for {
- select {
- case <-timer.C:
- flush()
- case item := <-r.queue:
- atomic.AddInt64(&r.queueLength, -1)
- switch item.itemType {
- case reporterQueueItemSpan:
- span := item.span
- if flushed, err := r.sender.Append(span); err != nil {
- r.metrics.ReporterFailure.Inc(int64(flushed))
- r.logger.Error(fmt.Sprintf("error reporting Jaeger span %q: %s", span.OperationName(), err.Error()))
- } else if flushed > 0 {
- r.metrics.ReporterSuccess.Inc(int64(flushed))
- // to reduce the number of gauge stats, we only emit queue length on flush
- r.metrics.ReporterQueueLength.Update(atomic.LoadInt64(&r.queueLength))
- r.logger.Debugf("flushed %d spans", flushed)
- }
- span.Release()
- case reporterQueueItemClose:
- timer.Stop()
- flush()
- item.close.Done()
- return
- }
- }
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/reporter_options.go b/vendor/github.com/uber/jaeger-client-go/reporter_options.go
deleted file mode 100644
index 2fc030547..000000000
--- a/vendor/github.com/uber/jaeger-client-go/reporter_options.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "time"
-
- "github.com/uber/jaeger-client-go/log"
-)
-
-// ReporterOption is a function that sets some option on the reporter.
-type ReporterOption func(c *reporterOptions)
-
-// ReporterOptions is a factory for all available ReporterOption's
-var ReporterOptions reporterOptions
-
-// reporterOptions control behavior of the reporter.
-type reporterOptions struct {
- // queueSize is the size of internal queue where reported spans are stored before they are processed in the background
- queueSize int
- // bufferFlushInterval is how often the buffer is force-flushed, even if it's not full
- bufferFlushInterval time.Duration
- // logger is used to log errors of span submissions
- logger log.DebugLogger
- // metrics is used to record runtime stats
- metrics *Metrics
-}
-
-// QueueSize creates a ReporterOption that sets the size of the internal queue where
-// spans are stored before they are processed.
-func (reporterOptions) QueueSize(queueSize int) ReporterOption {
- return func(r *reporterOptions) {
- r.queueSize = queueSize
- }
-}
-
-// Metrics creates a ReporterOption that initializes Metrics in the reporter,
-// which is used to record runtime statistics.
-func (reporterOptions) Metrics(metrics *Metrics) ReporterOption {
- return func(r *reporterOptions) {
- r.metrics = metrics
- }
-}
-
-// BufferFlushInterval creates a ReporterOption that sets how often the queue
-// is force-flushed.
-func (reporterOptions) BufferFlushInterval(bufferFlushInterval time.Duration) ReporterOption {
- return func(r *reporterOptions) {
- r.bufferFlushInterval = bufferFlushInterval
- }
-}
-
-// Logger creates a ReporterOption that initializes the logger used to log
-// errors of span submissions.
-func (reporterOptions) Logger(logger Logger) ReporterOption {
- return func(r *reporterOptions) {
- r.logger = log.DebugLogAdapter(logger)
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/README.md b/vendor/github.com/uber/jaeger-client-go/rpcmetrics/README.md
deleted file mode 100644
index 879948e9c..000000000
--- a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-An Observer that can be used to emit RPC metrics
-================================================
-
-It can be attached to the tracer during tracer construction.
-See `ExampleObserver` function in [observer_test.go](./observer_test.go).
diff --git a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/doc.go b/vendor/github.com/uber/jaeger-client-go/rpcmetrics/doc.go
deleted file mode 100644
index 51aa11b35..000000000
--- a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/doc.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 rpcmetrics implements an Observer that can be used to emit RPC metrics.
-package rpcmetrics
diff --git a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/endpoints.go b/vendor/github.com/uber/jaeger-client-go/rpcmetrics/endpoints.go
deleted file mode 100644
index 30555243d..000000000
--- a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/endpoints.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 rpcmetrics
-
-import "sync"
-
-// normalizedEndpoints is a cache for endpointName -> safeName mappings.
-type normalizedEndpoints struct {
- names map[string]string
- maxSize int
- defaultName string
- normalizer NameNormalizer
- mux sync.RWMutex
-}
-
-func newNormalizedEndpoints(maxSize int, normalizer NameNormalizer) *normalizedEndpoints {
- return &normalizedEndpoints{
- maxSize: maxSize,
- normalizer: normalizer,
- names: make(map[string]string, maxSize),
- }
-}
-
-// normalize looks up the name in the cache, if not found it uses normalizer
-// to convert the name to a safe name. If called with more than maxSize unique
-// names it returns "" for all other names beyond those already cached.
-func (n *normalizedEndpoints) normalize(name string) string {
- n.mux.RLock()
- norm, ok := n.names[name]
- l := len(n.names)
- n.mux.RUnlock()
- if ok {
- return norm
- }
- if l >= n.maxSize {
- return ""
- }
- return n.normalizeWithLock(name)
-}
-
-func (n *normalizedEndpoints) normalizeWithLock(name string) string {
- norm := n.normalizer.Normalize(name)
- n.mux.Lock()
- defer n.mux.Unlock()
- // cache may have grown while we were not holding the lock
- if len(n.names) >= n.maxSize {
- return ""
- }
- n.names[name] = norm
- return norm
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/metrics.go b/vendor/github.com/uber/jaeger-client-go/rpcmetrics/metrics.go
deleted file mode 100644
index a8cec2fa6..000000000
--- a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/metrics.go
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 rpcmetrics
-
-import (
- "sync"
-
- "github.com/uber/jaeger-lib/metrics"
-)
-
-const (
- otherEndpointsPlaceholder = "other"
- endpointNameMetricTag = "endpoint"
-)
-
-// Metrics is a collection of metrics for an endpoint describing
-// throughput, success, errors, and performance.
-type Metrics struct {
- // RequestCountSuccess is a counter of the total number of successes.
- RequestCountSuccess metrics.Counter `metric:"requests" tags:"error=false"`
-
- // RequestCountFailures is a counter of the number of times any failure has been observed.
- RequestCountFailures metrics.Counter `metric:"requests" tags:"error=true"`
-
- // RequestLatencySuccess is a latency histogram of successful requests.
- RequestLatencySuccess metrics.Timer `metric:"request_latency" tags:"error=false"`
-
- // RequestLatencyFailures is a latency histogram of failed requests.
- RequestLatencyFailures metrics.Timer `metric:"request_latency" tags:"error=true"`
-
- // HTTPStatusCode2xx is a counter of the total number of requests with HTTP status code 200-299
- HTTPStatusCode2xx metrics.Counter `metric:"http_requests" tags:"status_code=2xx"`
-
- // HTTPStatusCode3xx is a counter of the total number of requests with HTTP status code 300-399
- HTTPStatusCode3xx metrics.Counter `metric:"http_requests" tags:"status_code=3xx"`
-
- // HTTPStatusCode4xx is a counter of the total number of requests with HTTP status code 400-499
- HTTPStatusCode4xx metrics.Counter `metric:"http_requests" tags:"status_code=4xx"`
-
- // HTTPStatusCode5xx is a counter of the total number of requests with HTTP status code 500-599
- HTTPStatusCode5xx metrics.Counter `metric:"http_requests" tags:"status_code=5xx"`
-}
-
-func (m *Metrics) recordHTTPStatusCode(statusCode uint16) {
- if statusCode >= 200 && statusCode < 300 {
- m.HTTPStatusCode2xx.Inc(1)
- } else if statusCode >= 300 && statusCode < 400 {
- m.HTTPStatusCode3xx.Inc(1)
- } else if statusCode >= 400 && statusCode < 500 {
- m.HTTPStatusCode4xx.Inc(1)
- } else if statusCode >= 500 && statusCode < 600 {
- m.HTTPStatusCode5xx.Inc(1)
- }
-}
-
-// MetricsByEndpoint is a registry/cache of metrics for each unique endpoint name.
-// Only maxNumberOfEndpoints Metrics are stored, all other endpoint names are mapped
-// to a generic endpoint name "other".
-type MetricsByEndpoint struct {
- metricsFactory metrics.Factory
- endpoints *normalizedEndpoints
- metricsByEndpoint map[string]*Metrics
- mux sync.RWMutex
-}
-
-func newMetricsByEndpoint(
- metricsFactory metrics.Factory,
- normalizer NameNormalizer,
- maxNumberOfEndpoints int,
-) *MetricsByEndpoint {
- return &MetricsByEndpoint{
- metricsFactory: metricsFactory,
- endpoints: newNormalizedEndpoints(maxNumberOfEndpoints, normalizer),
- metricsByEndpoint: make(map[string]*Metrics, maxNumberOfEndpoints+1), // +1 for "other"
- }
-}
-
-func (m *MetricsByEndpoint) get(endpoint string) *Metrics {
- safeName := m.endpoints.normalize(endpoint)
- if safeName == "" {
- safeName = otherEndpointsPlaceholder
- }
- m.mux.RLock()
- met := m.metricsByEndpoint[safeName]
- m.mux.RUnlock()
- if met != nil {
- return met
- }
-
- return m.getWithWriteLock(safeName)
-}
-
-// split to make easier to test
-func (m *MetricsByEndpoint) getWithWriteLock(safeName string) *Metrics {
- m.mux.Lock()
- defer m.mux.Unlock()
-
- // it is possible that the name has been already registered after we released
- // the read lock and before we grabbed the write lock, so check for that.
- if met, ok := m.metricsByEndpoint[safeName]; ok {
- return met
- }
-
- // it would be nice to create the struct before locking, since Init() is somewhat
- // expensive, however some metrics backends (e.g. expvar) may not like duplicate metrics.
- met := &Metrics{}
- tags := map[string]string{endpointNameMetricTag: safeName}
- metrics.Init(met, m.metricsFactory, tags)
-
- m.metricsByEndpoint[safeName] = met
- return met
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/normalizer.go b/vendor/github.com/uber/jaeger-client-go/rpcmetrics/normalizer.go
deleted file mode 100644
index 148d84b3a..000000000
--- a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/normalizer.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 rpcmetrics
-
-// NameNormalizer is used to convert the endpoint names to strings
-// that can be safely used as tags in the metrics.
-type NameNormalizer interface {
- Normalize(name string) string
-}
-
-// DefaultNameNormalizer converts endpoint names so that they contain only characters
-// from the safe charset [a-zA-Z0-9-./_]. All other characters are replaced with '-'.
-var DefaultNameNormalizer = &SimpleNameNormalizer{
- SafeSets: []SafeCharacterSet{
- &Range{From: 'a', To: 'z'},
- &Range{From: 'A', To: 'Z'},
- &Range{From: '0', To: '9'},
- &Char{'-'},
- &Char{'_'},
- &Char{'/'},
- &Char{'.'},
- },
- Replacement: '-',
-}
-
-// SimpleNameNormalizer uses a set of safe character sets.
-type SimpleNameNormalizer struct {
- SafeSets []SafeCharacterSet
- Replacement byte
-}
-
-// SafeCharacterSet determines if the given character is "safe"
-type SafeCharacterSet interface {
- IsSafe(c byte) bool
-}
-
-// Range implements SafeCharacterSet
-type Range struct {
- From, To byte
-}
-
-// IsSafe implements SafeCharacterSet
-func (r *Range) IsSafe(c byte) bool {
- return c >= r.From && c <= r.To
-}
-
-// Char implements SafeCharacterSet
-type Char struct {
- Val byte
-}
-
-// IsSafe implements SafeCharacterSet
-func (ch *Char) IsSafe(c byte) bool {
- return c == ch.Val
-}
-
-// Normalize checks each character in the string against SafeSets,
-// and if it's not safe substitutes it with Replacement.
-func (n *SimpleNameNormalizer) Normalize(name string) string {
- var retMe []byte
- nameBytes := []byte(name)
- for i, b := range nameBytes {
- if n.safeByte(b) {
- if retMe != nil {
- retMe[i] = b
- }
- } else {
- if retMe == nil {
- retMe = make([]byte, len(nameBytes))
- copy(retMe[0:i], nameBytes[0:i])
- }
- retMe[i] = n.Replacement
- }
- }
- if retMe == nil {
- return name
- }
- return string(retMe)
-}
-
-// safeByte checks if b against all safe charsets.
-func (n *SimpleNameNormalizer) safeByte(b byte) bool {
- for i := range n.SafeSets {
- if n.SafeSets[i].IsSafe(b) {
- return true
- }
- }
- return false
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/observer.go b/vendor/github.com/uber/jaeger-client-go/rpcmetrics/observer.go
deleted file mode 100644
index eca5ff6f3..000000000
--- a/vendor/github.com/uber/jaeger-client-go/rpcmetrics/observer.go
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 rpcmetrics
-
-import (
- "strconv"
- "sync"
- "time"
-
- "github.com/opentracing/opentracing-go"
- "github.com/opentracing/opentracing-go/ext"
- "github.com/uber/jaeger-lib/metrics"
-
- jaeger "github.com/uber/jaeger-client-go"
-)
-
-const defaultMaxNumberOfEndpoints = 200
-
-// Observer is an observer that can emit RPC metrics.
-type Observer struct {
- metricsByEndpoint *MetricsByEndpoint
-}
-
-// NewObserver creates a new observer that can emit RPC metrics.
-func NewObserver(metricsFactory metrics.Factory, normalizer NameNormalizer) *Observer {
- return &Observer{
- metricsByEndpoint: newMetricsByEndpoint(
- metricsFactory,
- normalizer,
- defaultMaxNumberOfEndpoints,
- ),
- }
-}
-
-// OnStartSpan creates a new Observer for the span.
-func (o *Observer) OnStartSpan(
- operationName string,
- options opentracing.StartSpanOptions,
-) jaeger.SpanObserver {
- return NewSpanObserver(o.metricsByEndpoint, operationName, options)
-}
-
-// SpanKind identifies the span as inboud, outbound, or internal
-type SpanKind int
-
-const (
- // Local span kind
- Local SpanKind = iota
- // Inbound span kind
- Inbound
- // Outbound span kind
- Outbound
-)
-
-// SpanObserver collects RPC metrics
-type SpanObserver struct {
- metricsByEndpoint *MetricsByEndpoint
- operationName string
- startTime time.Time
- mux sync.Mutex
- kind SpanKind
- httpStatusCode uint16
- err bool
-}
-
-// NewSpanObserver creates a new SpanObserver that can emit RPC metrics.
-func NewSpanObserver(
- metricsByEndpoint *MetricsByEndpoint,
- operationName string,
- options opentracing.StartSpanOptions,
-) *SpanObserver {
- so := &SpanObserver{
- metricsByEndpoint: metricsByEndpoint,
- operationName: operationName,
- startTime: options.StartTime,
- }
- for k, v := range options.Tags {
- so.handleTagInLock(k, v)
- }
- return so
-}
-
-// handleTags watches for special tags
-// - SpanKind
-// - HttpStatusCode
-// - Error
-func (so *SpanObserver) handleTagInLock(key string, value interface{}) {
- if key == string(ext.SpanKind) {
- if v, ok := value.(ext.SpanKindEnum); ok {
- value = string(v)
- }
- if v, ok := value.(string); ok {
- if v == string(ext.SpanKindRPCClientEnum) {
- so.kind = Outbound
- } else if v == string(ext.SpanKindRPCServerEnum) {
- so.kind = Inbound
- }
- }
- return
- }
- if key == string(ext.HTTPStatusCode) {
- if v, ok := value.(uint16); ok {
- so.httpStatusCode = v
- } else if v, ok := value.(int); ok {
- so.httpStatusCode = uint16(v)
- } else if v, ok := value.(string); ok {
- if vv, err := strconv.Atoi(v); err == nil {
- so.httpStatusCode = uint16(vv)
- }
- }
- return
- }
- if key == string(ext.Error) {
- if v, ok := value.(bool); ok {
- so.err = v
- } else if v, ok := value.(string); ok {
- if vv, err := strconv.ParseBool(v); err == nil {
- so.err = vv
- }
- }
- return
- }
-}
-
-// OnFinish emits the RPC metrics. It only has an effect when operation name
-// is not blank, and the span kind is an RPC server.
-func (so *SpanObserver) OnFinish(options opentracing.FinishOptions) {
- so.mux.Lock()
- defer so.mux.Unlock()
-
- if so.operationName == "" || so.kind != Inbound {
- return
- }
-
- mets := so.metricsByEndpoint.get(so.operationName)
- latency := options.FinishTime.Sub(so.startTime)
- if so.err {
- mets.RequestCountFailures.Inc(1)
- mets.RequestLatencyFailures.Record(latency)
- } else {
- mets.RequestCountSuccess.Inc(1)
- mets.RequestLatencySuccess.Record(latency)
- }
- mets.recordHTTPStatusCode(so.httpStatusCode)
-}
-
-// OnSetOperationName records new operation name.
-func (so *SpanObserver) OnSetOperationName(operationName string) {
- so.mux.Lock()
- so.operationName = operationName
- so.mux.Unlock()
-}
-
-// OnSetTag implements SpanObserver
-func (so *SpanObserver) OnSetTag(key string, value interface{}) {
- so.mux.Lock()
- so.handleTagInLock(key, value)
- so.mux.Unlock()
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/sampler.go b/vendor/github.com/uber/jaeger-client-go/sampler.go
deleted file mode 100644
index d0be8ad50..000000000
--- a/vendor/github.com/uber/jaeger-client-go/sampler.go
+++ /dev/null
@@ -1,516 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "fmt"
- "math"
- "strings"
- "sync"
-
- "github.com/uber/jaeger-client-go/thrift-gen/sampling"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-const (
- defaultMaxOperations = 2000
-)
-
-// Sampler decides whether a new trace should be sampled or not.
-type Sampler interface {
- // IsSampled decides whether a trace with given `id` and `operation`
- // should be sampled. This function will also return the tags that
- // can be used to identify the type of sampling that was applied to
- // the root span. Most simple samplers would return two tags,
- // sampler.type and sampler.param, similar to those used in the Configuration
- IsSampled(id TraceID, operation string) (sampled bool, tags []Tag)
-
- // Close does a clean shutdown of the sampler, stopping any background
- // go-routines it may have started.
- Close()
-
- // Equal checks if the `other` sampler is functionally equivalent
- // to this sampler.
- // TODO (breaking change) remove this function. See PerOperationSampler.Equals for explanation.
- Equal(other Sampler) bool
-}
-
-// -----------------------
-
-// ConstSampler is a sampler that always makes the same decision.
-type ConstSampler struct {
- legacySamplerV1Base
- Decision bool
- tags []Tag
-}
-
-// NewConstSampler creates a ConstSampler.
-func NewConstSampler(sample bool) *ConstSampler {
- tags := []Tag{
- {key: SamplerTypeTagKey, value: SamplerTypeConst},
- {key: SamplerParamTagKey, value: sample},
- }
- s := &ConstSampler{
- Decision: sample,
- tags: tags,
- }
- s.delegate = s.IsSampled
- return s
-}
-
-// IsSampled implements IsSampled() of Sampler.
-func (s *ConstSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
- return s.Decision, s.tags
-}
-
-// Close implements Close() of Sampler.
-func (s *ConstSampler) Close() {
- // nothing to do
-}
-
-// Equal implements Equal() of Sampler.
-func (s *ConstSampler) Equal(other Sampler) bool {
- if o, ok := other.(*ConstSampler); ok {
- return s.Decision == o.Decision
- }
- return false
-}
-
-// String is used to log sampler details.
-func (s *ConstSampler) String() string {
- return fmt.Sprintf("ConstSampler(decision=%t)", s.Decision)
-}
-
-// -----------------------
-
-// ProbabilisticSampler is a sampler that randomly samples a certain percentage
-// of traces.
-type ProbabilisticSampler struct {
- legacySamplerV1Base
- samplingRate float64
- samplingBoundary uint64
- tags []Tag
-}
-
-const maxRandomNumber = ^(uint64(1) << 63) // i.e. 0x7fffffffffffffff
-
-// NewProbabilisticSampler creates a sampler that randomly samples a certain percentage of traces specified by the
-// samplingRate, in the range between 0.0 and 1.0.
-//
-// It relies on the fact that new trace IDs are 63bit random numbers themselves, thus making the sampling decision
-// without generating a new random number, but simply calculating if traceID < (samplingRate * 2^63).
-// TODO remove the error from this function for next major release
-func NewProbabilisticSampler(samplingRate float64) (*ProbabilisticSampler, error) {
- if samplingRate < 0.0 || samplingRate > 1.0 {
- return nil, fmt.Errorf("Sampling Rate must be between 0.0 and 1.0, received %f", samplingRate)
- }
- return newProbabilisticSampler(samplingRate), nil
-}
-
-func newProbabilisticSampler(samplingRate float64) *ProbabilisticSampler {
- s := new(ProbabilisticSampler)
- s.delegate = s.IsSampled
- return s.init(samplingRate)
-}
-
-func (s *ProbabilisticSampler) init(samplingRate float64) *ProbabilisticSampler {
- s.samplingRate = math.Max(0.0, math.Min(samplingRate, 1.0))
- s.samplingBoundary = uint64(float64(maxRandomNumber) * s.samplingRate)
- s.tags = []Tag{
- {key: SamplerTypeTagKey, value: SamplerTypeProbabilistic},
- {key: SamplerParamTagKey, value: s.samplingRate},
- }
- return s
-}
-
-// SamplingRate returns the sampling probability this sampled was constructed with.
-func (s *ProbabilisticSampler) SamplingRate() float64 {
- return s.samplingRate
-}
-
-// IsSampled implements IsSampled() of Sampler.
-func (s *ProbabilisticSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
- return s.samplingBoundary >= id.Low&maxRandomNumber, s.tags
-}
-
-// Close implements Close() of Sampler.
-func (s *ProbabilisticSampler) Close() {
- // nothing to do
-}
-
-// Equal implements Equal() of Sampler.
-func (s *ProbabilisticSampler) Equal(other Sampler) bool {
- if o, ok := other.(*ProbabilisticSampler); ok {
- return s.samplingBoundary == o.samplingBoundary
- }
- return false
-}
-
-// Update modifies in-place the sampling rate. Locking must be done externally.
-func (s *ProbabilisticSampler) Update(samplingRate float64) error {
- if samplingRate < 0.0 || samplingRate > 1.0 {
- return fmt.Errorf("Sampling Rate must be between 0.0 and 1.0, received %f", samplingRate)
- }
- s.init(samplingRate)
- return nil
-}
-
-// String is used to log sampler details.
-func (s *ProbabilisticSampler) String() string {
- return fmt.Sprintf("ProbabilisticSampler(samplingRate=%v)", s.samplingRate)
-}
-
-// -----------------------
-
-// RateLimitingSampler samples at most maxTracesPerSecond. The distribution of sampled traces follows
-// burstiness of the service, i.e. a service with uniformly distributed requests will have those
-// requests sampled uniformly as well, but if requests are bursty, especially sub-second, then a
-// number of sequential requests can be sampled each second.
-type RateLimitingSampler struct {
- legacySamplerV1Base
- maxTracesPerSecond float64
- rateLimiter *utils.ReconfigurableRateLimiter
- tags []Tag
-}
-
-// NewRateLimitingSampler creates new RateLimitingSampler.
-func NewRateLimitingSampler(maxTracesPerSecond float64) *RateLimitingSampler {
- s := new(RateLimitingSampler)
- s.delegate = s.IsSampled
- return s.init(maxTracesPerSecond)
-}
-
-func (s *RateLimitingSampler) init(maxTracesPerSecond float64) *RateLimitingSampler {
- if s.rateLimiter == nil {
- s.rateLimiter = utils.NewRateLimiter(maxTracesPerSecond, math.Max(maxTracesPerSecond, 1.0))
- } else {
- s.rateLimiter.Update(maxTracesPerSecond, math.Max(maxTracesPerSecond, 1.0))
- }
- s.maxTracesPerSecond = maxTracesPerSecond
- s.tags = []Tag{
- {key: SamplerTypeTagKey, value: SamplerTypeRateLimiting},
- {key: SamplerParamTagKey, value: maxTracesPerSecond},
- }
- return s
-}
-
-// IsSampled implements IsSampled() of Sampler.
-func (s *RateLimitingSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
- return s.rateLimiter.CheckCredit(1.0), s.tags
-}
-
-// Update reconfigures the rate limiter, while preserving its accumulated balance.
-// Locking must be done externally.
-func (s *RateLimitingSampler) Update(maxTracesPerSecond float64) {
- if s.maxTracesPerSecond != maxTracesPerSecond {
- s.init(maxTracesPerSecond)
- }
-}
-
-// Close does nothing.
-func (s *RateLimitingSampler) Close() {
- // nothing to do
-}
-
-// Equal compares with another sampler.
-func (s *RateLimitingSampler) Equal(other Sampler) bool {
- if o, ok := other.(*RateLimitingSampler); ok {
- return s.maxTracesPerSecond == o.maxTracesPerSecond
- }
- return false
-}
-
-// String is used to log sampler details.
-func (s *RateLimitingSampler) String() string {
- return fmt.Sprintf("RateLimitingSampler(maxTracesPerSecond=%v)", s.maxTracesPerSecond)
-}
-
-// -----------------------
-
-// GuaranteedThroughputProbabilisticSampler is a sampler that leverages both ProbabilisticSampler and
-// RateLimitingSampler. The RateLimitingSampler is used as a guaranteed lower bound sampler such that
-// every operation is sampled at least once in a time interval defined by the lowerBound. ie a lowerBound
-// of 1.0 / (60 * 10) will sample an operation at least once every 10 minutes.
-//
-// The ProbabilisticSampler is given higher priority when tags are emitted, ie. if IsSampled() for both
-// samplers return true, the tags for ProbabilisticSampler will be used.
-type GuaranteedThroughputProbabilisticSampler struct {
- probabilisticSampler *ProbabilisticSampler
- lowerBoundSampler *RateLimitingSampler
- tags []Tag
- samplingRate float64
- lowerBound float64
-}
-
-// NewGuaranteedThroughputProbabilisticSampler returns a delegating sampler that applies both
-// ProbabilisticSampler and RateLimitingSampler.
-func NewGuaranteedThroughputProbabilisticSampler(
- lowerBound, samplingRate float64,
-) (*GuaranteedThroughputProbabilisticSampler, error) {
- return newGuaranteedThroughputProbabilisticSampler(lowerBound, samplingRate), nil
-}
-
-func newGuaranteedThroughputProbabilisticSampler(lowerBound, samplingRate float64) *GuaranteedThroughputProbabilisticSampler {
- s := &GuaranteedThroughputProbabilisticSampler{
- lowerBoundSampler: NewRateLimitingSampler(lowerBound),
- lowerBound: lowerBound,
- }
- s.setProbabilisticSampler(samplingRate)
- return s
-}
-
-func (s *GuaranteedThroughputProbabilisticSampler) setProbabilisticSampler(samplingRate float64) {
- if s.probabilisticSampler == nil {
- s.probabilisticSampler = newProbabilisticSampler(samplingRate)
- } else if s.samplingRate != samplingRate {
- s.probabilisticSampler.init(samplingRate)
- }
- // since we don't validate samplingRate, sampler may have clamped it to [0, 1] interval
- samplingRate = s.probabilisticSampler.SamplingRate()
- if s.samplingRate != samplingRate || s.tags == nil {
- s.samplingRate = s.probabilisticSampler.SamplingRate()
- s.tags = []Tag{
- {key: SamplerTypeTagKey, value: SamplerTypeLowerBound},
- {key: SamplerParamTagKey, value: s.samplingRate},
- }
- }
-}
-
-// IsSampled implements IsSampled() of Sampler.
-func (s *GuaranteedThroughputProbabilisticSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
- if sampled, tags := s.probabilisticSampler.IsSampled(id, operation); sampled {
- s.lowerBoundSampler.IsSampled(id, operation)
- return true, tags
- }
- sampled, _ := s.lowerBoundSampler.IsSampled(id, operation)
- return sampled, s.tags
-}
-
-// Close implements Close() of Sampler.
-func (s *GuaranteedThroughputProbabilisticSampler) Close() {
- s.probabilisticSampler.Close()
- s.lowerBoundSampler.Close()
-}
-
-// Equal implements Equal() of Sampler.
-func (s *GuaranteedThroughputProbabilisticSampler) Equal(other Sampler) bool {
- // NB The Equal() function is expensive and will be removed. See PerOperationSampler.Equal() for
- // more information.
- return false
-}
-
-// this function should only be called while holding a Write lock
-func (s *GuaranteedThroughputProbabilisticSampler) update(lowerBound, samplingRate float64) {
- s.setProbabilisticSampler(samplingRate)
- if s.lowerBound != lowerBound {
- s.lowerBoundSampler.Update(lowerBound)
- s.lowerBound = lowerBound
- }
-}
-
-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
-// on a per-operation basis.
-type PerOperationSampler struct {
- sync.RWMutex
-
- samplers map[string]*GuaranteedThroughputProbabilisticSampler
- defaultSampler *ProbabilisticSampler
- lowerBound float64
- maxOperations int
-
- // see description in PerOperationSamplerParams
- operationNameLateBinding bool
-}
-
-// NewAdaptiveSampler returns a new PerOperationSampler.
-// Deprecated: please use NewPerOperationSampler.
-func NewAdaptiveSampler(strategies *sampling.PerOperationSamplingStrategies, maxOperations int) (*PerOperationSampler, error) {
- return NewPerOperationSampler(PerOperationSamplerParams{
- MaxOperations: maxOperations,
- Strategies: strategies,
- }), nil
-}
-
-// PerOperationSamplerParams defines parameters when creating PerOperationSampler.
-type PerOperationSamplerParams struct {
- // Max number of operations that will be tracked. Other operations will be given default strategy.
- MaxOperations int
-
- // Opt-in feature for applications that require late binding of span name via explicit call to SetOperationName.
- // When this feature is enabled, the sampler will return retryable=true from OnCreateSpan(), thus leaving
- // the sampling decision as non-final (and the span as writeable). This may lead to degraded performance
- // in applications that always provide the correct span name on trace creation.
- //
- // For backwards compatibility this option is off by default.
- OperationNameLateBinding bool
-
- // Initial configuration of the sampling strategies (usually retrieved from the backend by Remote Sampler).
- Strategies *sampling.PerOperationSamplingStrategies
-}
-
-// NewPerOperationSampler returns a new PerOperationSampler.
-func NewPerOperationSampler(params PerOperationSamplerParams) *PerOperationSampler {
- if params.MaxOperations <= 0 {
- params.MaxOperations = defaultMaxOperations
- }
- samplers := make(map[string]*GuaranteedThroughputProbabilisticSampler)
- for _, strategy := range params.Strategies.PerOperationStrategies {
- sampler := newGuaranteedThroughputProbabilisticSampler(
- params.Strategies.DefaultLowerBoundTracesPerSecond,
- strategy.ProbabilisticSampling.SamplingRate,
- )
- samplers[strategy.Operation] = sampler
- }
- return &PerOperationSampler{
- samplers: samplers,
- defaultSampler: newProbabilisticSampler(params.Strategies.DefaultSamplingProbability),
- lowerBound: params.Strategies.DefaultLowerBoundTracesPerSecond,
- maxOperations: params.MaxOperations,
- operationNameLateBinding: params.OperationNameLateBinding,
- }
-}
-
-// IsSampled is not used and only exists to match Sampler V1 API.
-// TODO (breaking change) remove when upgrading everything to SamplerV2
-func (s *PerOperationSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
- return false, nil
-}
-
-func (s *PerOperationSampler) trySampling(span *Span, operationName string) (bool, []Tag) {
- samplerV1 := s.getSamplerForOperation(operationName)
- var sampled bool
- var tags []Tag
- if span.context.samplingState.isLocalRootSpan(span.context.spanID) {
- sampled, tags = samplerV1.IsSampled(span.context.TraceID(), operationName)
- }
- return sampled, tags
-}
-
-// OnCreateSpan implements OnCreateSpan of SamplerV2.
-func (s *PerOperationSampler) OnCreateSpan(span *Span) SamplingDecision {
- sampled, tags := s.trySampling(span, span.OperationName())
- return SamplingDecision{Sample: sampled, Retryable: s.operationNameLateBinding, Tags: tags}
-}
-
-// OnSetOperationName implements OnSetOperationName of SamplerV2.
-func (s *PerOperationSampler) OnSetOperationName(span *Span, operationName string) SamplingDecision {
- sampled, tags := s.trySampling(span, operationName)
- return SamplingDecision{Sample: sampled, Retryable: false, Tags: tags}
-}
-
-// OnSetTag implements OnSetTag of SamplerV2.
-func (s *PerOperationSampler) OnSetTag(span *Span, key string, value interface{}) SamplingDecision {
- return SamplingDecision{Sample: false, Retryable: true}
-}
-
-// OnFinishSpan implements OnFinishSpan of SamplerV2.
-func (s *PerOperationSampler) OnFinishSpan(span *Span) SamplingDecision {
- return SamplingDecision{Sample: false, Retryable: true}
-}
-
-func (s *PerOperationSampler) getSamplerForOperation(operation string) Sampler {
- s.RLock()
- sampler, ok := s.samplers[operation]
- if ok {
- defer s.RUnlock()
- return sampler
- }
- s.RUnlock()
- s.Lock()
- defer s.Unlock()
-
- // Check if sampler has already been created
- sampler, ok = s.samplers[operation]
- if ok {
- return sampler
- }
- // Store only up to maxOperations of unique ops.
- if len(s.samplers) >= s.maxOperations {
- return s.defaultSampler
- }
- newSampler := newGuaranteedThroughputProbabilisticSampler(s.lowerBound, s.defaultSampler.SamplingRate())
- s.samplers[operation] = newSampler
- return newSampler
-}
-
-// Close invokes Close on all underlying samplers.
-func (s *PerOperationSampler) Close() {
- s.Lock()
- defer s.Unlock()
- for _, sampler := range s.samplers {
- sampler.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.
-// TODO (breaking change) remove this in the future
-func (s *PerOperationSampler) Equal(other Sampler) bool {
- // NB The Equal() function is overly expensive for PerOperationSampler since it's composed of multiple
- // samplers which all need to be initialized before this function can be called for a comparison.
- // Therefore, PerOperationSampler uses the update() function to only alter the samplers that need
- // changing. Hence this function always returns false so that the update function can be called.
- // Once the Equal() function is removed from the Sampler API, this will no longer be needed.
- return false
-}
-
-func (s *PerOperationSampler) update(strategies *sampling.PerOperationSamplingStrategies) {
- s.Lock()
- defer s.Unlock()
- newSamplers := map[string]*GuaranteedThroughputProbabilisticSampler{}
- for _, strategy := range strategies.PerOperationStrategies {
- operation := strategy.Operation
- samplingRate := strategy.ProbabilisticSampling.SamplingRate
- lowerBound := strategies.DefaultLowerBoundTracesPerSecond
- if sampler, ok := s.samplers[operation]; ok {
- sampler.update(lowerBound, samplingRate)
- newSamplers[operation] = sampler
- } else {
- sampler := newGuaranteedThroughputProbabilisticSampler(
- lowerBound,
- samplingRate,
- )
- newSamplers[operation] = sampler
- }
- }
- s.lowerBound = strategies.DefaultLowerBoundTracesPerSecond
- if s.defaultSampler.SamplingRate() != strategies.DefaultSamplingProbability {
- s.defaultSampler = newProbabilisticSampler(strategies.DefaultSamplingProbability)
- }
- s.samplers = newSamplers
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/sampler_remote.go b/vendor/github.com/uber/jaeger-client-go/sampler_remote.go
deleted file mode 100644
index f2edd5ca9..000000000
--- a/vendor/github.com/uber/jaeger-client-go/sampler_remote.go
+++ /dev/null
@@ -1,337 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "encoding/json"
- "fmt"
- "io/ioutil"
- "net/http"
- "net/url"
- "sync"
- "sync/atomic"
- "time"
-
- "github.com/uber/jaeger-client-go/log"
- "github.com/uber/jaeger-client-go/thrift-gen/sampling"
-)
-
-const (
- defaultSamplingRefreshInterval = time.Minute
-)
-
-// SamplingStrategyFetcher is used to fetch sampling strategy updates from remote server.
-type SamplingStrategyFetcher interface {
- Fetch(service string) ([]byte, error)
-}
-
-// SamplingStrategyParser is used to parse sampling strategy updates. The output object
-// should be of the type that is recognized by the SamplerUpdaters.
-type SamplingStrategyParser interface {
- Parse(response []byte) (interface{}, error)
-}
-
-// SamplerUpdater is used by RemotelyControlledSampler to apply sampling strategies,
-// retrieved from remote config server, to the current sampler. The updater can modify
-// the sampler in-place if sampler supports it, or create a new one.
-//
-// If the strategy does not contain configuration for the sampler in question,
-// updater must return modifiedSampler=nil to give other updaters a chance to inspect
-// the sampling strategy response.
-//
-// RemotelyControlledSampler invokes the updaters while holding a lock on the main sampler.
-type SamplerUpdater interface {
- Update(sampler SamplerV2, strategy interface{}) (modified SamplerV2, err error)
-}
-
-// RemotelyControlledSampler is a delegating sampler that polls a remote server
-// for the appropriate sampling strategy, constructs a corresponding sampler and
-// delegates to it for sampling decisions.
-type RemotelyControlledSampler struct {
- // These fields must be first in the struct because `sync/atomic` expects 64-bit alignment.
- // Cf. https://github.com/uber/jaeger-client-go/issues/155, https://goo.gl/zW7dgq
- closed int64 // 0 - not closed, 1 - closed
-
- sync.RWMutex // used to serialize access to samplerOptions.sampler
- samplerOptions
-
- serviceName string
- doneChan chan *sync.WaitGroup
-}
-
-// NewRemotelyControlledSampler creates a sampler that periodically pulls
-// the sampling strategy from an HTTP sampling server (e.g. jaeger-agent).
-func NewRemotelyControlledSampler(
- serviceName string,
- opts ...SamplerOption,
-) *RemotelyControlledSampler {
- options := new(samplerOptions).applyOptionsAndDefaults(opts...)
- sampler := &RemotelyControlledSampler{
- samplerOptions: *options,
- serviceName: serviceName,
- doneChan: make(chan *sync.WaitGroup),
- }
- go sampler.pollController()
- return sampler
-}
-
-// IsSampled implements IsSampled() of Sampler.
-// TODO (breaking change) remove when Sampler V1 is removed
-func (s *RemotelyControlledSampler) IsSampled(id TraceID, operation string) (bool, []Tag) {
- return false, nil
-}
-
-// OnCreateSpan implements OnCreateSpan of SamplerV2.
-func (s *RemotelyControlledSampler) OnCreateSpan(span *Span) SamplingDecision {
- return s.Sampler().OnCreateSpan(span)
-}
-
-// OnSetOperationName implements OnSetOperationName of SamplerV2.
-func (s *RemotelyControlledSampler) OnSetOperationName(span *Span, operationName string) SamplingDecision {
- return s.Sampler().OnSetOperationName(span, operationName)
-}
-
-// OnSetTag implements OnSetTag of SamplerV2.
-func (s *RemotelyControlledSampler) OnSetTag(span *Span, key string, value interface{}) SamplingDecision {
- return s.Sampler().OnSetTag(span, key, value)
-}
-
-// OnFinishSpan implements OnFinishSpan of SamplerV2.
-func (s *RemotelyControlledSampler) OnFinishSpan(span *Span) SamplingDecision {
- return s.Sampler().OnFinishSpan(span)
-}
-
-// Close implements Close() of Sampler.
-func (s *RemotelyControlledSampler) Close() {
- if swapped := atomic.CompareAndSwapInt64(&s.closed, 0, 1); !swapped {
- s.logger.Error("Repeated attempt to close the sampler is ignored")
- return
- }
-
- var wg sync.WaitGroup
- wg.Add(1)
- s.doneChan <- &wg
- wg.Wait()
-}
-
-// Equal implements Equal() of Sampler.
-func (s *RemotelyControlledSampler) Equal(other Sampler) bool {
- // NB The Equal() function is expensive and will be removed. See PerOperationSampler.Equal() for
- // more information.
- return false
-}
-
-func (s *RemotelyControlledSampler) pollController() {
- ticker := time.NewTicker(s.samplingRefreshInterval)
- defer ticker.Stop()
- s.pollControllerWithTicker(ticker)
-}
-
-func (s *RemotelyControlledSampler) pollControllerWithTicker(ticker *time.Ticker) {
- for {
- select {
- case <-ticker.C:
- s.UpdateSampler()
- case wg := <-s.doneChan:
- wg.Done()
- return
- }
- }
-}
-
-// Sampler returns the currently active sampler.
-func (s *RemotelyControlledSampler) Sampler() SamplerV2 {
- s.RLock()
- defer s.RUnlock()
- return s.sampler
-}
-
-func (s *RemotelyControlledSampler) setSampler(sampler SamplerV2) {
- s.Lock()
- defer s.Unlock()
- s.sampler = sampler
-}
-
-// UpdateSampler forces the sampler to fetch sampling strategy from backend server.
-// This function is called automatically on a timer, but can also be safely called manually, e.g. from tests.
-func (s *RemotelyControlledSampler) UpdateSampler() {
- res, err := s.samplingFetcher.Fetch(s.serviceName)
- if err != nil {
- s.metrics.SamplerQueryFailure.Inc(1)
- s.logger.Infof("failed to fetch sampling strategy: %v", err)
- return
- }
- strategy, err := s.samplingParser.Parse(res)
- if err != nil {
- s.metrics.SamplerUpdateFailure.Inc(1)
- s.logger.Infof("failed to parse sampling strategy response: %v", err)
- return
- }
-
- s.Lock()
- defer s.Unlock()
-
- s.metrics.SamplerRetrieved.Inc(1)
- if err := s.updateSamplerViaUpdaters(strategy); err != nil {
- s.metrics.SamplerUpdateFailure.Inc(1)
- s.logger.Infof("failed to handle sampling strategy response %+v. Got error: %v", res, err)
- return
- }
- s.metrics.SamplerUpdated.Inc(1)
-}
-
-// NB: this function should only be called while holding a Write lock
-func (s *RemotelyControlledSampler) updateSamplerViaUpdaters(strategy interface{}) error {
- for _, updater := range s.updaters {
- sampler, err := updater.Update(s.sampler, strategy)
- if err != nil {
- return err
- }
- if sampler != nil {
- s.logger.Debugf("sampler updated: %+v", sampler)
- s.sampler = sampler
- return nil
- }
- }
- return fmt.Errorf("unsupported sampling strategy %+v", strategy)
-}
-
-// -----------------------
-
-// ProbabilisticSamplerUpdater is used by RemotelyControlledSampler to parse sampling configuration.
-type ProbabilisticSamplerUpdater struct{}
-
-// Update implements Update of SamplerUpdater.
-func (u *ProbabilisticSamplerUpdater) Update(sampler SamplerV2, strategy interface{}) (SamplerV2, error) {
- type response interface {
- GetProbabilisticSampling() *sampling.ProbabilisticSamplingStrategy
- }
- var _ response = new(sampling.SamplingStrategyResponse) // sanity signature check
- if resp, ok := strategy.(response); ok {
- if probabilistic := resp.GetProbabilisticSampling(); probabilistic != nil {
- if ps, ok := sampler.(*ProbabilisticSampler); ok {
- if err := ps.Update(probabilistic.SamplingRate); err != nil {
- return nil, err
- }
- return sampler, nil
- }
- return newProbabilisticSampler(probabilistic.SamplingRate), nil
- }
- }
- return nil, nil
-}
-
-// -----------------------
-
-// RateLimitingSamplerUpdater is used by RemotelyControlledSampler to parse sampling configuration.
-type RateLimitingSamplerUpdater struct{}
-
-// Update implements Update of SamplerUpdater.
-func (u *RateLimitingSamplerUpdater) Update(sampler SamplerV2, strategy interface{}) (SamplerV2, error) {
- type response interface {
- GetRateLimitingSampling() *sampling.RateLimitingSamplingStrategy
- }
- var _ response = new(sampling.SamplingStrategyResponse) // sanity signature check
- if resp, ok := strategy.(response); ok {
- if rateLimiting := resp.GetRateLimitingSampling(); rateLimiting != nil {
- rateLimit := float64(rateLimiting.MaxTracesPerSecond)
- if rl, ok := sampler.(*RateLimitingSampler); ok {
- rl.Update(rateLimit)
- return rl, nil
- }
- return NewRateLimitingSampler(rateLimit), nil
- }
- }
- return nil, nil
-}
-
-// -----------------------
-
-// AdaptiveSamplerUpdater is used by RemotelyControlledSampler to parse sampling configuration.
-// Fields have the same meaning as in PerOperationSamplerParams.
-type AdaptiveSamplerUpdater struct {
- MaxOperations int
- OperationNameLateBinding bool
-}
-
-// Update implements Update of SamplerUpdater.
-func (u *AdaptiveSamplerUpdater) Update(sampler SamplerV2, strategy interface{}) (SamplerV2, error) {
- type response interface {
- GetOperationSampling() *sampling.PerOperationSamplingStrategies
- }
- var _ response = new(sampling.SamplingStrategyResponse) // sanity signature check
- if p, ok := strategy.(response); ok {
- if operations := p.GetOperationSampling(); operations != nil {
- if as, ok := sampler.(*PerOperationSampler); ok {
- as.update(operations)
- return as, nil
- }
- return NewPerOperationSampler(PerOperationSamplerParams{
- MaxOperations: u.MaxOperations,
- OperationNameLateBinding: u.OperationNameLateBinding,
- Strategies: operations,
- }), nil
- }
- }
- return nil, nil
-}
-
-// -----------------------
-
-type httpSamplingStrategyFetcher struct {
- serverURL string
- logger log.DebugLogger
-}
-
-func (f *httpSamplingStrategyFetcher) Fetch(serviceName string) ([]byte, error) {
- v := url.Values{}
- v.Set("service", serviceName)
- uri := f.serverURL + "?" + v.Encode()
-
- // TODO create and reuse http.Client with proper timeout settings, etc.
- resp, err := http.Get(uri)
- if err != nil {
- return nil, err
- }
-
- defer func() {
- if err := resp.Body.Close(); err != nil {
- f.logger.Error(fmt.Sprintf("failed to close HTTP response body: %+v", err))
- }
- }()
-
- body, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- return nil, err
- }
-
- if resp.StatusCode >= 400 {
- return nil, fmt.Errorf("StatusCode: %d, Body: %s", resp.StatusCode, body)
- }
-
- return body, nil
-}
-
-// -----------------------
-
-type samplingStrategyParser struct{}
-
-func (p *samplingStrategyParser) Parse(response []byte) (interface{}, error) {
- strategy := new(sampling.SamplingStrategyResponse)
- if err := json.Unmarshal(response, strategy); err != nil {
- return nil, err
- }
- return strategy, nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/sampler_remote_options.go b/vendor/github.com/uber/jaeger-client-go/sampler_remote_options.go
deleted file mode 100644
index e4a6108b7..000000000
--- a/vendor/github.com/uber/jaeger-client-go/sampler_remote_options.go
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "time"
-
- "github.com/uber/jaeger-client-go/log"
-)
-
-// SamplerOption is a function that sets some option on the sampler
-type SamplerOption func(options *samplerOptions)
-
-// SamplerOptions is a factory for all available SamplerOption's.
-var SamplerOptions SamplerOptionsFactory
-
-// SamplerOptionsFactory is a factory for all available SamplerOption's.
-// The type acts as a namespace for factory functions. It is public to
-// make the functions discoverable via godoc. Recommended to be used
-// via global SamplerOptions variable.
-type SamplerOptionsFactory struct{}
-
-type samplerOptions struct {
- metrics *Metrics
- sampler SamplerV2
- logger log.DebugLogger
- samplingServerURL string
- samplingRefreshInterval time.Duration
- samplingFetcher SamplingStrategyFetcher
- samplingParser SamplingStrategyParser
- updaters []SamplerUpdater
- posParams PerOperationSamplerParams
-}
-
-// Metrics creates a SamplerOption that initializes Metrics on the sampler,
-// which is used to emit statistics.
-func (SamplerOptionsFactory) Metrics(m *Metrics) SamplerOption {
- return func(o *samplerOptions) {
- o.metrics = m
- }
-}
-
-// MaxOperations creates a SamplerOption that sets the maximum number of
-// operations the sampler will keep track of.
-func (SamplerOptionsFactory) MaxOperations(maxOperations int) SamplerOption {
- return func(o *samplerOptions) {
- o.posParams.MaxOperations = maxOperations
- }
-}
-
-// OperationNameLateBinding creates a SamplerOption that sets the respective
-// field in the PerOperationSamplerParams.
-func (SamplerOptionsFactory) OperationNameLateBinding(enable bool) SamplerOption {
- return func(o *samplerOptions) {
- o.posParams.OperationNameLateBinding = enable
- }
-}
-
-// InitialSampler creates a SamplerOption that sets the initial sampler
-// to use before a remote sampler is created and used.
-func (SamplerOptionsFactory) InitialSampler(sampler Sampler) SamplerOption {
- return func(o *samplerOptions) {
- o.sampler = samplerV1toV2(sampler)
- }
-}
-
-// Logger creates a SamplerOption that sets the logger used by the sampler.
-func (SamplerOptionsFactory) Logger(logger Logger) SamplerOption {
- return func(o *samplerOptions) {
- o.logger = log.DebugLogAdapter(logger)
- }
-}
-
-// SamplingServerURL creates a SamplerOption that sets the sampling server url
-// of the local agent that contains the sampling strategies.
-func (SamplerOptionsFactory) SamplingServerURL(samplingServerURL string) SamplerOption {
- return func(o *samplerOptions) {
- o.samplingServerURL = samplingServerURL
- }
-}
-
-// SamplingRefreshInterval creates a SamplerOption that sets how often the
-// sampler will poll local agent for the appropriate sampling strategy.
-func (SamplerOptionsFactory) SamplingRefreshInterval(samplingRefreshInterval time.Duration) SamplerOption {
- return func(o *samplerOptions) {
- o.samplingRefreshInterval = samplingRefreshInterval
- }
-}
-
-// SamplingStrategyFetcher creates a SamplerOption that initializes sampling strategy fetcher.
-func (SamplerOptionsFactory) SamplingStrategyFetcher(fetcher SamplingStrategyFetcher) SamplerOption {
- return func(o *samplerOptions) {
- o.samplingFetcher = fetcher
- }
-}
-
-// SamplingStrategyParser creates a SamplerOption that initializes sampling strategy parser.
-func (SamplerOptionsFactory) SamplingStrategyParser(parser SamplingStrategyParser) SamplerOption {
- return func(o *samplerOptions) {
- o.samplingParser = parser
- }
-}
-
-// Updaters creates a SamplerOption that initializes sampler updaters.
-func (SamplerOptionsFactory) Updaters(updaters ...SamplerUpdater) SamplerOption {
- return func(o *samplerOptions) {
- o.updaters = updaters
- }
-}
-
-func (o *samplerOptions) applyOptionsAndDefaults(opts ...SamplerOption) *samplerOptions {
- for _, option := range opts {
- option(o)
- }
- if o.sampler == nil {
- o.sampler = newProbabilisticSampler(0.001)
- }
- if o.logger == nil {
- o.logger = log.NullLogger
- }
- if o.samplingServerURL == "" {
- o.samplingServerURL = DefaultSamplingServerURL
- }
- if o.metrics == nil {
- o.metrics = NewNullMetrics()
- }
- if o.samplingRefreshInterval <= 0 {
- o.samplingRefreshInterval = defaultSamplingRefreshInterval
- }
- if o.samplingFetcher == nil {
- o.samplingFetcher = &httpSamplingStrategyFetcher{
- serverURL: o.samplingServerURL,
- logger: o.logger,
- }
- }
- if o.samplingParser == nil {
- o.samplingParser = new(samplingStrategyParser)
- }
- if o.updaters == nil {
- o.updaters = []SamplerUpdater{
- &AdaptiveSamplerUpdater{
- MaxOperations: o.posParams.MaxOperations,
- OperationNameLateBinding: o.posParams.OperationNameLateBinding,
- },
- new(ProbabilisticSamplerUpdater),
- new(RateLimitingSamplerUpdater),
- }
- }
- return o
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/sampler_v2.go b/vendor/github.com/uber/jaeger-client-go/sampler_v2.go
deleted file mode 100644
index a50671a23..000000000
--- a/vendor/github.com/uber/jaeger-client-go/sampler_v2.go
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright (c) 2019 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-// SamplingDecision is returned by the V2 samplers.
-type SamplingDecision struct {
- Sample bool
- Retryable bool
- Tags []Tag
-}
-
-// SamplerV2 is an extension of the V1 samplers that allows sampling decisions
-// be made at different points of the span lifecycle.
-type SamplerV2 interface {
- OnCreateSpan(span *Span) SamplingDecision
- OnSetOperationName(span *Span, operationName string) SamplingDecision
- OnSetTag(span *Span, key string, value interface{}) SamplingDecision
- OnFinishSpan(span *Span) SamplingDecision
-
- // Close does a clean shutdown of the sampler, stopping any background
- // go-routines it may have started.
- Close()
-}
-
-// samplerV1toV2 wraps legacy V1 sampler into an adapter that make it look like V2.
-func samplerV1toV2(s Sampler) SamplerV2 {
- if s2, ok := s.(SamplerV2); ok {
- return s2
- }
- type legacySamplerV1toV2Adapter struct {
- legacySamplerV1Base
- }
- return &legacySamplerV1toV2Adapter{
- legacySamplerV1Base: legacySamplerV1Base{
- delegate: s.IsSampled,
- },
- }
-}
-
-// SamplerV2Base can be used by V2 samplers to implement dummy V1 methods.
-// Supporting V1 API is required because Tracer configuration only accepts V1 Sampler
-// for backwards compatibility reasons.
-// TODO (breaking change) remove this in the next major release
-type SamplerV2Base struct{}
-
-// IsSampled implements IsSampled of Sampler.
-func (SamplerV2Base) IsSampled(id TraceID, operation string) (sampled bool, tags []Tag) {
- return false, nil
-}
-
-// Close implements Close of Sampler.
-func (SamplerV2Base) Close() {}
-
-// Equal implements Equal of Sampler.
-func (SamplerV2Base) Equal(other Sampler) bool { return false }
-
-// legacySamplerV1Base is used as a base for simple samplers that only implement
-// the legacy isSampled() function that is not sensitive to its arguments.
-type legacySamplerV1Base struct {
- delegate func(id TraceID, operation string) (sampled bool, tags []Tag)
-}
-
-func (s *legacySamplerV1Base) OnCreateSpan(span *Span) SamplingDecision {
- isSampled, tags := s.delegate(span.context.traceID, span.operationName)
- return SamplingDecision{Sample: isSampled, Retryable: false, Tags: tags}
-}
-
-func (s *legacySamplerV1Base) OnSetOperationName(span *Span, operationName string) SamplingDecision {
- isSampled, tags := s.delegate(span.context.traceID, span.operationName)
- return SamplingDecision{Sample: isSampled, Retryable: false, Tags: tags}
-}
-
-func (s *legacySamplerV1Base) OnSetTag(span *Span, key string, value interface{}) SamplingDecision {
- return SamplingDecision{Sample: false, Retryable: true}
-}
-
-func (s *legacySamplerV1Base) OnFinishSpan(span *Span) SamplingDecision {
- return SamplingDecision{Sample: false, Retryable: true}
-}
-
-func (s *legacySamplerV1Base) Close() {}
diff --git a/vendor/github.com/uber/jaeger-client-go/span.go b/vendor/github.com/uber/jaeger-client-go/span.go
deleted file mode 100644
index 42c9112c0..000000000
--- a/vendor/github.com/uber/jaeger-client-go/span.go
+++ /dev/null
@@ -1,487 +0,0 @@
-// Copyright (c) 2017-2018 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "sync"
- "sync/atomic"
- "time"
-
- "github.com/opentracing/opentracing-go"
- "github.com/opentracing/opentracing-go/ext"
- "github.com/opentracing/opentracing-go/log"
-)
-
-// Span implements opentracing.Span
-type Span struct {
- // referenceCounter used to increase the lifetime of
- // the object before return it into the pool.
- referenceCounter int32
-
- sync.RWMutex
-
- tracer *Tracer
-
- // TODO: (breaking change) change to use a pointer
- context SpanContext
-
- // The name of the "operation" this span is an instance of.
- // Known as a "span name" in some implementations.
- operationName string
-
- // firstInProcess, if true, indicates that this span is the root of the (sub)tree
- // of spans in the current process. In other words it's true for the root spans,
- // and the ingress spans when the process joins another trace.
- firstInProcess bool
-
- // startTime is the timestamp indicating when the span began, with microseconds precision.
- startTime time.Time
-
- // duration returns duration of the span with microseconds precision.
- // Zero value means duration is unknown.
- duration time.Duration
-
- // tags attached to this span
- tags []Tag
-
- // The span's "micro-log"
- logs []opentracing.LogRecord
-
- // The number of logs dropped because of MaxLogsPerSpan.
- numDroppedLogs int
-
- // references for this span
- references []Reference
-
- observer ContribSpanObserver
-}
-
-// Tag is a simple key value wrapper.
-// TODO (breaking change) deprecate in the next major release, use opentracing.Tag instead.
-type Tag struct {
- key string
- value interface{}
-}
-
-// NewTag creates a new Tag.
-// TODO (breaking change) deprecate in the next major release, use opentracing.Tag instead.
-func NewTag(key string, value interface{}) Tag {
- return Tag{key: key, value: value}
-}
-
-// SetOperationName sets or changes the operation name.
-func (s *Span) SetOperationName(operationName string) opentracing.Span {
- s.Lock()
- s.operationName = operationName
- s.Unlock()
- if !s.isSamplingFinalized() {
- decision := s.tracer.sampler.OnSetOperationName(s, operationName)
- s.applySamplingDecision(decision, true)
- }
- s.observer.OnSetOperationName(operationName)
- return s
-}
-
-// SetTag implements SetTag() of opentracing.Span
-func (s *Span) SetTag(key string, value interface{}) opentracing.Span {
- return s.setTagInternal(key, value, true)
-}
-
-func (s *Span) setTagInternal(key string, value interface{}, lock bool) opentracing.Span {
- s.observer.OnSetTag(key, value)
- if key == string(ext.SamplingPriority) && !setSamplingPriority(s, value) {
- return s
- }
- if !s.isSamplingFinalized() {
- decision := s.tracer.sampler.OnSetTag(s, key, value)
- s.applySamplingDecision(decision, lock)
- }
- if s.isWriteable() {
- if lock {
- s.Lock()
- defer s.Unlock()
- }
- s.appendTagNoLocking(key, value)
- }
- return s
-}
-
-// SpanContext returns span context
-func (s *Span) SpanContext() SpanContext {
- s.Lock()
- defer s.Unlock()
- return s.context
-}
-
-// StartTime returns span start time
-func (s *Span) StartTime() time.Time {
- s.Lock()
- defer s.Unlock()
- return s.startTime
-}
-
-// Duration returns span duration
-func (s *Span) Duration() time.Duration {
- s.Lock()
- defer s.Unlock()
- return s.duration
-}
-
-// Tags returns tags for span
-func (s *Span) Tags() opentracing.Tags {
- s.Lock()
- defer s.Unlock()
- var result = make(opentracing.Tags, len(s.tags))
- for _, tag := range s.tags {
- result[tag.key] = tag.value
- }
- return result
-}
-
-// Logs returns micro logs for span
-func (s *Span) Logs() []opentracing.LogRecord {
- s.Lock()
- defer s.Unlock()
-
- logs := append([]opentracing.LogRecord(nil), s.logs...)
- if s.numDroppedLogs != 0 {
- fixLogs(logs, s.numDroppedLogs)
- }
-
- return logs
-}
-
-// References returns references for this span
-func (s *Span) References() []opentracing.SpanReference {
- s.Lock()
- defer s.Unlock()
-
- if s.references == nil || len(s.references) == 0 {
- return nil
- }
-
- result := make([]opentracing.SpanReference, len(s.references))
- for i, r := range s.references {
- result[i] = opentracing.SpanReference{Type: r.Type, ReferencedContext: r.Context}
- }
- return result
-}
-
-func (s *Span) appendTagNoLocking(key string, value interface{}) {
- s.tags = append(s.tags, Tag{key: key, value: value})
-}
-
-// LogFields implements opentracing.Span API
-func (s *Span) LogFields(fields ...log.Field) {
- s.Lock()
- defer s.Unlock()
- if !s.context.IsSampled() {
- return
- }
- s.logFieldsNoLocking(fields...)
-}
-
-// this function should only be called while holding a Write lock
-func (s *Span) logFieldsNoLocking(fields ...log.Field) {
- lr := opentracing.LogRecord{
- Fields: fields,
- Timestamp: time.Now(),
- }
- s.appendLogNoLocking(lr)
-}
-
-// LogKV implements opentracing.Span API
-func (s *Span) LogKV(alternatingKeyValues ...interface{}) {
- s.RLock()
- sampled := s.context.IsSampled()
- s.RUnlock()
- if !sampled {
- return
- }
- fields, err := log.InterleavedKVToFields(alternatingKeyValues...)
- if err != nil {
- s.LogFields(log.Error(err), log.String("function", "LogKV"))
- return
- }
- s.LogFields(fields...)
-}
-
-// LogEvent implements opentracing.Span API
-func (s *Span) LogEvent(event string) {
- s.Log(opentracing.LogData{Event: event})
-}
-
-// LogEventWithPayload implements opentracing.Span API
-func (s *Span) LogEventWithPayload(event string, payload interface{}) {
- s.Log(opentracing.LogData{Event: event, Payload: payload})
-}
-
-// Log implements opentracing.Span API
-func (s *Span) Log(ld opentracing.LogData) {
- s.Lock()
- defer s.Unlock()
- if s.context.IsSampled() {
- if ld.Timestamp.IsZero() {
- ld.Timestamp = s.tracer.timeNow()
- }
- s.appendLogNoLocking(ld.ToLogRecord())
- }
-}
-
-// this function should only be called while holding a Write lock
-func (s *Span) appendLogNoLocking(lr opentracing.LogRecord) {
- maxLogs := s.tracer.options.maxLogsPerSpan
- if maxLogs == 0 || len(s.logs) < maxLogs {
- s.logs = append(s.logs, lr)
- return
- }
-
- // We have too many logs. We don't touch the first numOld logs; we treat the
- // rest as a circular buffer and overwrite the oldest log among those.
- numOld := (maxLogs - 1) / 2
- numNew := maxLogs - numOld
- s.logs[numOld+s.numDroppedLogs%numNew] = lr
- s.numDroppedLogs++
-}
-
-// rotateLogBuffer rotates the records in the buffer: records 0 to pos-1 move at
-// the end (i.e. pos circular left shifts).
-func rotateLogBuffer(buf []opentracing.LogRecord, pos int) {
- // This algorithm is described in:
- // http://www.cplusplus.com/reference/algorithm/rotate
- for first, middle, next := 0, pos, pos; first != middle; {
- buf[first], buf[next] = buf[next], buf[first]
- first++
- next++
- if next == len(buf) {
- next = middle
- } else if first == middle {
- middle = next
- }
- }
-}
-
-func fixLogs(logs []opentracing.LogRecord, numDroppedLogs int) {
- // We dropped some log events, which means that we used part of Logs as a
- // circular buffer (see appendLog). De-circularize it.
- numOld := (len(logs) - 1) / 2
- numNew := len(logs) - numOld
- rotateLogBuffer(logs[numOld:], numDroppedLogs%numNew)
-
- // Replace the log in the middle (the oldest "new" log) with information
- // about the dropped logs. This means that we are effectively dropping one
- // more "new" log.
- numDropped := numDroppedLogs + 1
- logs[numOld] = opentracing.LogRecord{
- // Keep the timestamp of the last dropped event.
- Timestamp: logs[numOld].Timestamp,
- Fields: []log.Field{
- log.String("event", "dropped Span logs"),
- log.Int("dropped_log_count", numDropped),
- log.String("component", "jaeger-client"),
- },
- }
-}
-
-func (s *Span) fixLogsIfDropped() {
- if s.numDroppedLogs == 0 {
- return
- }
- fixLogs(s.logs, s.numDroppedLogs)
- s.numDroppedLogs = 0
-}
-
-// SetBaggageItem implements SetBaggageItem() of opentracing.SpanContext
-func (s *Span) SetBaggageItem(key, value string) opentracing.Span {
- s.Lock()
- defer s.Unlock()
- s.tracer.setBaggage(s, key, value)
- return s
-}
-
-// BaggageItem implements BaggageItem() of opentracing.SpanContext
-func (s *Span) BaggageItem(key string) string {
- s.RLock()
- defer s.RUnlock()
- return s.context.baggage[key]
-}
-
-// Finish implements opentracing.Span API
-// After finishing the Span object it returns back to the allocator unless the reporter retains it again,
-// so after that, the Span object should no longer be used because it won't be valid anymore.
-func (s *Span) Finish() {
- s.FinishWithOptions(opentracing.FinishOptions{})
-}
-
-// FinishWithOptions implements opentracing.Span API
-func (s *Span) FinishWithOptions(options opentracing.FinishOptions) {
- if options.FinishTime.IsZero() {
- options.FinishTime = s.tracer.timeNow()
- }
- s.observer.OnFinish(options)
- s.Lock()
- s.duration = options.FinishTime.Sub(s.startTime)
- s.Unlock()
- if !s.isSamplingFinalized() {
- decision := s.tracer.sampler.OnFinishSpan(s)
- s.applySamplingDecision(decision, true)
- }
- if s.context.IsSampled() {
- s.Lock()
- s.fixLogsIfDropped()
- if len(options.LogRecords) > 0 || len(options.BulkLogData) > 0 {
- // Note: bulk logs are not subject to maxLogsPerSpan limit
- if options.LogRecords != nil {
- s.logs = append(s.logs, options.LogRecords...)
- }
- for _, ld := range options.BulkLogData {
- s.logs = append(s.logs, ld.ToLogRecord())
- }
- }
- s.Unlock()
- }
- // call reportSpan even for non-sampled traces, to return span to the pool
- // and update metrics counter
- s.tracer.reportSpan(s)
-}
-
-// Context implements opentracing.Span API
-func (s *Span) Context() opentracing.SpanContext {
- s.Lock()
- defer s.Unlock()
- return s.context
-}
-
-// Tracer implements opentracing.Span API
-func (s *Span) Tracer() opentracing.Tracer {
- return s.tracer
-}
-
-func (s *Span) String() string {
- s.RLock()
- defer s.RUnlock()
- return s.context.String()
-}
-
-// OperationName allows retrieving current operation name.
-func (s *Span) OperationName() string {
- s.RLock()
- defer s.RUnlock()
- return s.operationName
-}
-
-// Retain increases object counter to increase the lifetime of the object
-func (s *Span) Retain() *Span {
- atomic.AddInt32(&s.referenceCounter, 1)
- return s
-}
-
-// Release decrements object counter and return to the
-// allocator manager when counter will below zero
-func (s *Span) Release() {
- if atomic.AddInt32(&s.referenceCounter, -1) == -1 {
- s.tracer.spanAllocator.Put(s)
- }
-}
-
-// reset span state and release unused data
-func (s *Span) reset() {
- s.firstInProcess = false
- s.context = emptyContext
- s.operationName = ""
- s.tracer = nil
- s.startTime = time.Time{}
- s.duration = 0
- s.observer = nil
- atomic.StoreInt32(&s.referenceCounter, 0)
-
- // Note: To reuse memory we can save the pointers on the heap
- s.tags = s.tags[:0]
- s.logs = s.logs[:0]
- s.numDroppedLogs = 0
- s.references = s.references[:0]
-}
-
-func (s *Span) serviceName() string {
- return s.tracer.serviceName
-}
-
-func (s *Span) applySamplingDecision(decision SamplingDecision, lock bool) {
- if !decision.Retryable {
- s.context.samplingState.setFinal()
- }
- if decision.Sample {
- s.context.samplingState.setSampled()
- if len(decision.Tags) > 0 {
- if lock {
- s.Lock()
- defer s.Unlock()
- }
- for _, tag := range decision.Tags {
- s.appendTagNoLocking(tag.key, tag.value)
- }
- }
- }
-}
-
-// Span can be written to if it is sampled or the sampling decision has not been finalized.
-func (s *Span) isWriteable() bool {
- state := s.context.samplingState
- return !state.isFinal() || state.isSampled()
-}
-
-func (s *Span) isSamplingFinalized() bool {
- return s.context.samplingState.isFinal()
-}
-
-// setSamplingPriority returns true if the flag was updated successfully, false otherwise.
-// The behavior of setSamplingPriority is surprising
-// If noDebugFlagOnForcedSampling is set
-// setSamplingPriority(span, 1) always sets only flagSampled
-// If noDebugFlagOnForcedSampling is unset, and isDebugAllowed passes
-// setSamplingPriority(span, 1) sets both flagSampled and flagDebug
-// However,
-// setSamplingPriority(span, 0) always only resets flagSampled
-//
-// This means that doing a setSamplingPriority(span, 1) followed by setSamplingPriority(span, 0) can
-// leave flagDebug set
-func setSamplingPriority(s *Span, value interface{}) bool {
- val, ok := value.(uint16)
- if !ok {
- return false
- }
- if val == 0 {
- s.context.samplingState.unsetSampled()
- s.context.samplingState.setFinal()
- return true
- }
- if s.tracer.options.noDebugFlagOnForcedSampling {
- s.context.samplingState.setSampled()
- s.context.samplingState.setFinal()
- return true
- } else if s.tracer.isDebugAllowed(s.operationName) {
- s.context.samplingState.setDebugAndSampled()
- s.context.samplingState.setFinal()
- return true
- }
- return false
-}
-
-// EnableFirehose enables firehose flag on the span context
-func EnableFirehose(s *Span) {
- s.Lock()
- defer s.Unlock()
- s.context.samplingState.setFirehose()
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/span_allocator.go b/vendor/github.com/uber/jaeger-client-go/span_allocator.go
deleted file mode 100644
index 6fe0cd0ce..000000000
--- a/vendor/github.com/uber/jaeger-client-go/span_allocator.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2019 The Jaeger 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 jaeger
-
-import "sync"
-
-// SpanAllocator abstraction of managign span allocations
-type SpanAllocator interface {
- Get() *Span
- Put(*Span)
-}
-
-type syncPollSpanAllocator struct {
- spanPool sync.Pool
-}
-
-func newSyncPollSpanAllocator() SpanAllocator {
- return &syncPollSpanAllocator{
- spanPool: sync.Pool{New: func() interface{} {
- return &Span{}
- }},
- }
-}
-
-func (pool *syncPollSpanAllocator) Get() *Span {
- return pool.spanPool.Get().(*Span)
-}
-
-func (pool *syncPollSpanAllocator) Put(span *Span) {
- span.reset()
- pool.spanPool.Put(span)
-}
-
-type simpleSpanAllocator struct{}
-
-func (pool simpleSpanAllocator) Get() *Span {
- return &Span{}
-}
-
-func (pool simpleSpanAllocator) Put(span *Span) {
- // @comment https://github.com/jaegertracing/jaeger-client-go/pull/381#issuecomment-475904351
- // since finished spans are not reused, no need to reset them
- // span.reset()
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/span_context.go b/vendor/github.com/uber/jaeger-client-go/span_context.go
deleted file mode 100644
index ae9d94a9a..000000000
--- a/vendor/github.com/uber/jaeger-client-go/span_context.go
+++ /dev/null
@@ -1,387 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "errors"
- "fmt"
- "strconv"
- "strings"
- "sync"
-
- "go.uber.org/atomic"
-)
-
-const (
- flagSampled = 1
- flagDebug = 2
- flagFirehose = 8
-)
-
-var (
- errEmptyTracerStateString = errors.New("Cannot convert empty string to tracer state")
- errMalformedTracerStateString = errors.New("String does not match tracer state format")
-
- emptyContext = SpanContext{}
-)
-
-// TraceID represents unique 128bit identifier of a trace
-type TraceID struct {
- High, Low uint64
-}
-
-// SpanID represents unique 64bit identifier of a span
-type SpanID uint64
-
-// SpanContext represents propagated span identity and state
-type SpanContext struct {
- // traceID represents globally unique ID of the trace.
- // Usually generated as a random number.
- traceID TraceID
-
- // spanID represents span ID that must be unique within its trace,
- // but does not have to be globally unique.
- spanID SpanID
-
- // parentID refers to the ID of the parent span.
- // Should be 0 if the current span is a root span.
- parentID SpanID
-
- // Distributed Context baggage. The is a snapshot in time.
- baggage map[string]string
-
- // debugID can be set to some correlation ID when the context is being
- // extracted from a TextMap carrier.
- //
- // See JaegerDebugHeader in constants.go
- debugID string
-
- // samplingState is shared across all spans
- samplingState *samplingState
-
- // remote indicates that span context represents a remote parent
- remote bool
-}
-
-type samplingState struct {
- // Span context's state flags that are propagated across processes. Only lower 8 bits are used.
- // We use an int32 instead of byte to be able to use CAS operations.
- stateFlags atomic.Int32
-
- // When state is not final, sampling will be retried on other span write operations,
- // like SetOperationName / SetTag, and the spans will remain writable.
- final atomic.Bool
-
- // localRootSpan stores the SpanID of the first span created in this process for a given trace.
- localRootSpan SpanID
-
- // extendedState allows samplers to keep intermediate state.
- // The keys and values in this map are completely opaque: interface{} -> interface{}.
- extendedState sync.Map
-}
-
-func (s *samplingState) isLocalRootSpan(id SpanID) bool {
- return id == s.localRootSpan
-}
-
-func (s *samplingState) setFlag(newFlag int32) {
- swapped := false
- for !swapped {
- old := s.stateFlags.Load()
- swapped = s.stateFlags.CAS(old, old|newFlag)
- }
-}
-
-func (s *samplingState) unsetFlag(newFlag int32) {
- swapped := false
- for !swapped {
- old := s.stateFlags.Load()
- swapped = s.stateFlags.CAS(old, old&^newFlag)
- }
-}
-
-func (s *samplingState) setSampled() {
- s.setFlag(flagSampled)
-}
-
-func (s *samplingState) unsetSampled() {
- s.unsetFlag(flagSampled)
-}
-
-func (s *samplingState) setDebugAndSampled() {
- s.setFlag(flagDebug | flagSampled)
-}
-
-func (s *samplingState) setFirehose() {
- s.setFlag(flagFirehose)
-}
-
-func (s *samplingState) setFlags(flags byte) {
- s.stateFlags.Store(int32(flags))
-}
-
-func (s *samplingState) setFinal() {
- s.final.Store(true)
-}
-
-func (s *samplingState) flags() byte {
- return byte(s.stateFlags.Load())
-}
-
-func (s *samplingState) isSampled() bool {
- return s.stateFlags.Load()&flagSampled == flagSampled
-}
-
-func (s *samplingState) isDebug() bool {
- return s.stateFlags.Load()&flagDebug == flagDebug
-}
-
-func (s *samplingState) isFirehose() bool {
- return s.stateFlags.Load()&flagFirehose == flagFirehose
-}
-
-func (s *samplingState) isFinal() bool {
- return s.final.Load()
-}
-
-func (s *samplingState) extendedStateForKey(key interface{}, initValue func() interface{}) interface{} {
- if value, ok := s.extendedState.Load(key); ok {
- return value
- }
- value := initValue()
- value, _ = s.extendedState.LoadOrStore(key, value)
- return value
-}
-
-// ForeachBaggageItem implements ForeachBaggageItem() of opentracing.SpanContext
-func (c SpanContext) ForeachBaggageItem(handler func(k, v string) bool) {
- for k, v := range c.baggage {
- if !handler(k, v) {
- break
- }
- }
-}
-
-// IsSampled returns whether this trace was chosen for permanent storage
-// by the sampling mechanism of the tracer.
-func (c SpanContext) IsSampled() bool {
- return c.samplingState.isSampled()
-}
-
-// IsDebug indicates whether sampling was explicitly requested by the service.
-func (c SpanContext) IsDebug() bool {
- return c.samplingState.isDebug()
-}
-
-// IsSamplingFinalized indicates whether the sampling decision has been finalized.
-func (c SpanContext) IsSamplingFinalized() bool {
- return c.samplingState.isFinal()
-}
-
-// IsFirehose indicates whether the firehose flag was set
-func (c SpanContext) IsFirehose() bool {
- return c.samplingState.isFirehose()
-}
-
-// ExtendedSamplingState returns the custom state object for a given key. If the value for this key does not exist,
-// it is initialized via initValue function. This state can be used by samplers (e.g. x.PrioritySampler).
-func (c SpanContext) ExtendedSamplingState(key interface{}, initValue func() interface{}) interface{} {
- return c.samplingState.extendedStateForKey(key, initValue)
-}
-
-// IsValid indicates whether this context actually represents a valid trace.
-func (c SpanContext) IsValid() bool {
- return c.traceID.IsValid() && c.spanID != 0
-}
-
-// SetFirehose enables firehose mode for this trace.
-func (c SpanContext) SetFirehose() {
- c.samplingState.setFirehose()
-}
-
-func (c SpanContext) String() string {
- var flags int32
- if c.samplingState != nil {
- flags = c.samplingState.stateFlags.Load()
- }
- if c.traceID.High == 0 {
- return fmt.Sprintf("%016x:%016x:%016x:%x", c.traceID.Low, uint64(c.spanID), uint64(c.parentID), flags)
- }
- return fmt.Sprintf("%016x%016x:%016x:%016x:%x", c.traceID.High, c.traceID.Low, uint64(c.spanID), uint64(c.parentID), flags)
-}
-
-// ContextFromString reconstructs the Context encoded in a string
-func ContextFromString(value string) (SpanContext, error) {
- var context SpanContext
- if value == "" {
- return emptyContext, errEmptyTracerStateString
- }
- parts := strings.Split(value, ":")
- if len(parts) != 4 {
- return emptyContext, errMalformedTracerStateString
- }
- var err error
- if context.traceID, err = TraceIDFromString(parts[0]); err != nil {
- return emptyContext, err
- }
- if context.spanID, err = SpanIDFromString(parts[1]); err != nil {
- return emptyContext, err
- }
- if context.parentID, err = SpanIDFromString(parts[2]); err != nil {
- return emptyContext, err
- }
- flags, err := strconv.ParseUint(parts[3], 10, 8)
- if err != nil {
- return emptyContext, err
- }
- context.samplingState = &samplingState{}
- context.samplingState.setFlags(byte(flags))
- return context, nil
-}
-
-// TraceID returns the trace ID of this span context
-func (c SpanContext) TraceID() TraceID {
- return c.traceID
-}
-
-// SpanID returns the span ID of this span context
-func (c SpanContext) SpanID() SpanID {
- return c.spanID
-}
-
-// ParentID returns the parent span ID of this span context
-func (c SpanContext) ParentID() SpanID {
- return c.parentID
-}
-
-// Flags returns the bitmap containing such bits as 'sampled' and 'debug'.
-func (c SpanContext) Flags() byte {
- return c.samplingState.flags()
-}
-
-// NewSpanContext creates a new instance of SpanContext
-func NewSpanContext(traceID TraceID, spanID, parentID SpanID, sampled bool, baggage map[string]string) SpanContext {
- samplingState := &samplingState{}
- if sampled {
- samplingState.setSampled()
- }
-
- return SpanContext{
- traceID: traceID,
- spanID: spanID,
- parentID: parentID,
- samplingState: samplingState,
- baggage: baggage}
-}
-
-// CopyFrom copies data from ctx into this context, including span identity and baggage.
-// TODO This is only used by interop.go. Remove once TChannel Go supports OpenTracing.
-func (c *SpanContext) CopyFrom(ctx *SpanContext) {
- c.traceID = ctx.traceID
- c.spanID = ctx.spanID
- c.parentID = ctx.parentID
- c.samplingState = ctx.samplingState
- if l := len(ctx.baggage); l > 0 {
- c.baggage = make(map[string]string, l)
- for k, v := range ctx.baggage {
- c.baggage[k] = v
- }
- } else {
- c.baggage = nil
- }
-}
-
-// WithBaggageItem creates a new context with an extra baggage item.
-func (c SpanContext) WithBaggageItem(key, value string) SpanContext {
- var newBaggage map[string]string
- if c.baggage == nil {
- newBaggage = map[string]string{key: value}
- } else {
- newBaggage = make(map[string]string, len(c.baggage)+1)
- for k, v := range c.baggage {
- newBaggage[k] = v
- }
- newBaggage[key] = value
- }
- // Use positional parameters so the compiler will help catch new fields.
- return SpanContext{c.traceID, c.spanID, c.parentID, newBaggage, "", c.samplingState, c.remote}
-}
-
-// isDebugIDContainerOnly returns true when the instance of the context is only
-// used to return the debug/correlation ID from extract() method. This happens
-// in the situation when "jaeger-debug-id" header is passed in the carrier to
-// the extract() method, but the request otherwise has no span context in it.
-// Previously this would've returned opentracing.ErrSpanContextNotFound from the
-// extract method, but now it returns a dummy context with only debugID filled in.
-//
-// See JaegerDebugHeader in constants.go
-// See TextMapPropagator#Extract
-func (c *SpanContext) isDebugIDContainerOnly() bool {
- return !c.traceID.IsValid() && c.debugID != ""
-}
-
-// ------- TraceID -------
-
-func (t TraceID) String() string {
- if t.High == 0 {
- return fmt.Sprintf("%x", t.Low)
- }
- return fmt.Sprintf("%x%016x", t.High, t.Low)
-}
-
-// TraceIDFromString creates a TraceID from a hexadecimal string
-func TraceIDFromString(s string) (TraceID, error) {
- var hi, lo uint64
- var err error
- if len(s) > 32 {
- return TraceID{}, fmt.Errorf("TraceID cannot be longer than 32 hex characters: %s", s)
- } else if len(s) > 16 {
- hiLen := len(s) - 16
- if hi, err = strconv.ParseUint(s[0:hiLen], 16, 64); err != nil {
- return TraceID{}, err
- }
- if lo, err = strconv.ParseUint(s[hiLen:], 16, 64); err != nil {
- return TraceID{}, err
- }
- } else {
- if lo, err = strconv.ParseUint(s, 16, 64); err != nil {
- return TraceID{}, err
- }
- }
- return TraceID{High: hi, Low: lo}, nil
-}
-
-// IsValid checks if the trace ID is valid, i.e. not zero.
-func (t TraceID) IsValid() bool {
- return t.High != 0 || t.Low != 0
-}
-
-// ------- SpanID -------
-
-func (s SpanID) String() string {
- return fmt.Sprintf("%x", uint64(s))
-}
-
-// SpanIDFromString creates a SpanID from a hexadecimal string
-func SpanIDFromString(s string) (SpanID, error) {
- if len(s) > 16 {
- return SpanID(0), fmt.Errorf("SpanID cannot be longer than 16 hex characters: %s", s)
- }
- id, err := strconv.ParseUint(s, 16, 64)
- if err != nil {
- return SpanID(0), err
- }
- return SpanID(id), nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/baggagerestrictionmanager.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/baggagerestrictionmanager.go
deleted file mode 100644
index 1f79c1255..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/baggagerestrictionmanager.go
+++ /dev/null
@@ -1,435 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package baggage
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-type BaggageRestrictionManager interface {
- // getBaggageRestrictions retrieves the baggage restrictions for a specific service.
- // Usually, baggageRestrictions apply to all services however there may be situations
- // where a baggageKey might only be allowed to be set by a specific service.
- //
- // Parameters:
- // - ServiceName
- GetBaggageRestrictions(serviceName string) (r []*BaggageRestriction, err error)
-}
-
-type BaggageRestrictionManagerClient struct {
- Transport thrift.TTransport
- ProtocolFactory thrift.TProtocolFactory
- InputProtocol thrift.TProtocol
- OutputProtocol thrift.TProtocol
- SeqId int32
-}
-
-func NewBaggageRestrictionManagerClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *BaggageRestrictionManagerClient {
- return &BaggageRestrictionManagerClient{Transport: t,
- ProtocolFactory: f,
- InputProtocol: f.GetProtocol(t),
- OutputProtocol: f.GetProtocol(t),
- SeqId: 0,
- }
-}
-
-func NewBaggageRestrictionManagerClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *BaggageRestrictionManagerClient {
- return &BaggageRestrictionManagerClient{Transport: t,
- ProtocolFactory: nil,
- InputProtocol: iprot,
- OutputProtocol: oprot,
- SeqId: 0,
- }
-}
-
-// getBaggageRestrictions retrieves the baggage restrictions for a specific service.
-// Usually, baggageRestrictions apply to all services however there may be situations
-// where a baggageKey might only be allowed to be set by a specific service.
-//
-// Parameters:
-// - ServiceName
-func (p *BaggageRestrictionManagerClient) GetBaggageRestrictions(serviceName string) (r []*BaggageRestriction, err error) {
- if err = p.sendGetBaggageRestrictions(serviceName); err != nil {
- return
- }
- return p.recvGetBaggageRestrictions()
-}
-
-func (p *BaggageRestrictionManagerClient) sendGetBaggageRestrictions(serviceName string) (err error) {
- oprot := p.OutputProtocol
- if oprot == nil {
- oprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.OutputProtocol = oprot
- }
- p.SeqId++
- if err = oprot.WriteMessageBegin("getBaggageRestrictions", thrift.CALL, p.SeqId); err != nil {
- return
- }
- args := BaggageRestrictionManagerGetBaggageRestrictionsArgs{
- ServiceName: serviceName,
- }
- if err = args.Write(oprot); err != nil {
- return
- }
- if err = oprot.WriteMessageEnd(); err != nil {
- return
- }
- return oprot.Flush()
-}
-
-func (p *BaggageRestrictionManagerClient) recvGetBaggageRestrictions() (value []*BaggageRestriction, err error) {
- iprot := p.InputProtocol
- if iprot == nil {
- iprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.InputProtocol = iprot
- }
- method, mTypeId, seqId, err := iprot.ReadMessageBegin()
- if err != nil {
- return
- }
- if method != "getBaggageRestrictions" {
- err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getBaggageRestrictions failed: wrong method name")
- return
- }
- if p.SeqId != seqId {
- err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getBaggageRestrictions failed: out of sequence response")
- return
- }
- if mTypeId == thrift.EXCEPTION {
- error0 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
- var error1 error
- error1, err = error0.Read(iprot)
- if err != nil {
- return
- }
- if err = iprot.ReadMessageEnd(); err != nil {
- return
- }
- err = error1
- return
- }
- if mTypeId != thrift.REPLY {
- err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getBaggageRestrictions failed: invalid message type")
- return
- }
- result := BaggageRestrictionManagerGetBaggageRestrictionsResult{}
- if err = result.Read(iprot); err != nil {
- return
- }
- if err = iprot.ReadMessageEnd(); err != nil {
- return
- }
- value = result.GetSuccess()
- return
-}
-
-type BaggageRestrictionManagerProcessor struct {
- processorMap map[string]thrift.TProcessorFunction
- handler BaggageRestrictionManager
-}
-
-func (p *BaggageRestrictionManagerProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) {
- p.processorMap[key] = processor
-}
-
-func (p *BaggageRestrictionManagerProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) {
- processor, ok = p.processorMap[key]
- return processor, ok
-}
-
-func (p *BaggageRestrictionManagerProcessor) ProcessorMap() map[string]thrift.TProcessorFunction {
- return p.processorMap
-}
-
-func NewBaggageRestrictionManagerProcessor(handler BaggageRestrictionManager) *BaggageRestrictionManagerProcessor {
-
- self2 := &BaggageRestrictionManagerProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)}
- self2.processorMap["getBaggageRestrictions"] = &baggageRestrictionManagerProcessorGetBaggageRestrictions{handler: handler}
- return self2
-}
-
-func (p *BaggageRestrictionManagerProcessor) Process(iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- name, _, seqId, err := iprot.ReadMessageBegin()
- if err != nil {
- return false, err
- }
- if processor, ok := p.GetProcessorFunction(name); ok {
- return processor.Process(seqId, iprot, oprot)
- }
- iprot.Skip(thrift.STRUCT)
- iprot.ReadMessageEnd()
- x3 := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name)
- oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId)
- x3.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return false, x3
-
-}
-
-type baggageRestrictionManagerProcessorGetBaggageRestrictions struct {
- handler BaggageRestrictionManager
-}
-
-func (p *baggageRestrictionManagerProcessorGetBaggageRestrictions) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- args := BaggageRestrictionManagerGetBaggageRestrictionsArgs{}
- if err = args.Read(iprot); err != nil {
- iprot.ReadMessageEnd()
- x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
- oprot.WriteMessageBegin("getBaggageRestrictions", thrift.EXCEPTION, seqId)
- x.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return false, err
- }
-
- iprot.ReadMessageEnd()
- result := BaggageRestrictionManagerGetBaggageRestrictionsResult{}
- var retval []*BaggageRestriction
- var err2 error
- if retval, err2 = p.handler.GetBaggageRestrictions(args.ServiceName); err2 != nil {
- x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getBaggageRestrictions: "+err2.Error())
- oprot.WriteMessageBegin("getBaggageRestrictions", thrift.EXCEPTION, seqId)
- x.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return true, err2
- } else {
- result.Success = retval
- }
- if err2 = oprot.WriteMessageBegin("getBaggageRestrictions", thrift.REPLY, seqId); err2 != nil {
- err = err2
- }
- if err2 = result.Write(oprot); err == nil && err2 != nil {
- err = err2
- }
- if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
- err = err2
- }
- if err2 = oprot.Flush(); err == nil && err2 != nil {
- err = err2
- }
- if err != nil {
- return
- }
- return true, err
-}
-
-// HELPER FUNCTIONS AND STRUCTURES
-
-// Attributes:
-// - ServiceName
-type BaggageRestrictionManagerGetBaggageRestrictionsArgs struct {
- ServiceName string `thrift:"serviceName,1" json:"serviceName"`
-}
-
-func NewBaggageRestrictionManagerGetBaggageRestrictionsArgs() *BaggageRestrictionManagerGetBaggageRestrictionsArgs {
- return &BaggageRestrictionManagerGetBaggageRestrictionsArgs{}
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsArgs) GetServiceName() string {
- return p.ServiceName
-}
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsArgs) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsArgs) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.ServiceName = v
- }
- return nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsArgs) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("getBaggageRestrictions_args"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsArgs) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("serviceName", thrift.STRING, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:serviceName: ", p), err)
- }
- if err := oprot.WriteString(string(p.ServiceName)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.serviceName (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:serviceName: ", p), err)
- }
- return err
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsArgs) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("BaggageRestrictionManagerGetBaggageRestrictionsArgs(%+v)", *p)
-}
-
-// Attributes:
-// - Success
-type BaggageRestrictionManagerGetBaggageRestrictionsResult struct {
- Success []*BaggageRestriction `thrift:"success,0" json:"success,omitempty"`
-}
-
-func NewBaggageRestrictionManagerGetBaggageRestrictionsResult() *BaggageRestrictionManagerGetBaggageRestrictionsResult {
- return &BaggageRestrictionManagerGetBaggageRestrictionsResult{}
-}
-
-var BaggageRestrictionManagerGetBaggageRestrictionsResult_Success_DEFAULT []*BaggageRestriction
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) GetSuccess() []*BaggageRestriction {
- return p.Success
-}
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) IsSetSuccess() bool {
- return p.Success != nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 0:
- if err := p.readField0(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) readField0(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*BaggageRestriction, 0, size)
- p.Success = tSlice
- for i := 0; i < size; i++ {
- _elem4 := &BaggageRestriction{}
- if err := _elem4.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem4), err)
- }
- p.Success = append(p.Success, _elem4)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("getBaggageRestrictions_result"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField0(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) writeField0(oprot thrift.TProtocol) (err error) {
- if p.IsSetSuccess() {
- if err := oprot.WriteFieldBegin("success", thrift.LIST, 0); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.Success)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.Success {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
- }
- }
- return err
-}
-
-func (p *BaggageRestrictionManagerGetBaggageRestrictionsResult) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("BaggageRestrictionManagerGetBaggageRestrictionsResult(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/constants.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/constants.go
deleted file mode 100644
index ed35ce9ab..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/constants.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package baggage
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-func init() {
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/ttypes.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/ttypes.go
deleted file mode 100644
index 7888892f6..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/ttypes.go
+++ /dev/null
@@ -1,154 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package baggage
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-var GoUnusedProtection__ int
-
-// Attributes:
-// - BaggageKey
-// - MaxValueLength
-type BaggageRestriction struct {
- BaggageKey string `thrift:"baggageKey,1,required" json:"baggageKey"`
- MaxValueLength int32 `thrift:"maxValueLength,2,required" json:"maxValueLength"`
-}
-
-func NewBaggageRestriction() *BaggageRestriction {
- return &BaggageRestriction{}
-}
-
-func (p *BaggageRestriction) GetBaggageKey() string {
- return p.BaggageKey
-}
-
-func (p *BaggageRestriction) GetMaxValueLength() int32 {
- return p.MaxValueLength
-}
-func (p *BaggageRestriction) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetBaggageKey bool = false
- var issetMaxValueLength bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetBaggageKey = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- issetMaxValueLength = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetBaggageKey {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field BaggageKey is not set"))
- }
- if !issetMaxValueLength {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field MaxValueLength is not set"))
- }
- return nil
-}
-
-func (p *BaggageRestriction) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.BaggageKey = v
- }
- return nil
-}
-
-func (p *BaggageRestriction) readField2(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI32(); err != nil {
- return thrift.PrependError("error reading field 2: ", err)
- } else {
- p.MaxValueLength = v
- }
- return nil
-}
-
-func (p *BaggageRestriction) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("BaggageRestriction"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *BaggageRestriction) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("baggageKey", thrift.STRING, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:baggageKey: ", p), err)
- }
- if err := oprot.WriteString(string(p.BaggageKey)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.baggageKey (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:baggageKey: ", p), err)
- }
- return err
-}
-
-func (p *BaggageRestriction) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("maxValueLength", thrift.I32, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:maxValueLength: ", p), err)
- }
- if err := oprot.WriteI32(int32(p.MaxValueLength)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.maxValueLength (2) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:maxValueLength: ", p), err)
- }
- return err
-}
-
-func (p *BaggageRestriction) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("BaggageRestriction(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/constants.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/constants.go
deleted file mode 100644
index 0f6e3a884..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/constants.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package sampling
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-func init() {
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/samplingmanager.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/samplingmanager.go
deleted file mode 100644
index 33179cfeb..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/samplingmanager.go
+++ /dev/null
@@ -1,410 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package sampling
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-type SamplingManager interface {
- // Parameters:
- // - ServiceName
- GetSamplingStrategy(serviceName string) (r *SamplingStrategyResponse, err error)
-}
-
-type SamplingManagerClient struct {
- Transport thrift.TTransport
- ProtocolFactory thrift.TProtocolFactory
- InputProtocol thrift.TProtocol
- OutputProtocol thrift.TProtocol
- SeqId int32
-}
-
-func NewSamplingManagerClientFactory(t thrift.TTransport, f thrift.TProtocolFactory) *SamplingManagerClient {
- return &SamplingManagerClient{Transport: t,
- ProtocolFactory: f,
- InputProtocol: f.GetProtocol(t),
- OutputProtocol: f.GetProtocol(t),
- SeqId: 0,
- }
-}
-
-func NewSamplingManagerClientProtocol(t thrift.TTransport, iprot thrift.TProtocol, oprot thrift.TProtocol) *SamplingManagerClient {
- return &SamplingManagerClient{Transport: t,
- ProtocolFactory: nil,
- InputProtocol: iprot,
- OutputProtocol: oprot,
- SeqId: 0,
- }
-}
-
-// Parameters:
-// - ServiceName
-func (p *SamplingManagerClient) GetSamplingStrategy(serviceName string) (r *SamplingStrategyResponse, err error) {
- if err = p.sendGetSamplingStrategy(serviceName); err != nil {
- return
- }
- return p.recvGetSamplingStrategy()
-}
-
-func (p *SamplingManagerClient) sendGetSamplingStrategy(serviceName string) (err error) {
- oprot := p.OutputProtocol
- if oprot == nil {
- oprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.OutputProtocol = oprot
- }
- p.SeqId++
- if err = oprot.WriteMessageBegin("getSamplingStrategy", thrift.CALL, p.SeqId); err != nil {
- return
- }
- args := SamplingManagerGetSamplingStrategyArgs{
- ServiceName: serviceName,
- }
- if err = args.Write(oprot); err != nil {
- return
- }
- if err = oprot.WriteMessageEnd(); err != nil {
- return
- }
- return oprot.Flush()
-}
-
-func (p *SamplingManagerClient) recvGetSamplingStrategy() (value *SamplingStrategyResponse, err error) {
- iprot := p.InputProtocol
- if iprot == nil {
- iprot = p.ProtocolFactory.GetProtocol(p.Transport)
- p.InputProtocol = iprot
- }
- method, mTypeId, seqId, err := iprot.ReadMessageBegin()
- if err != nil {
- return
- }
- if method != "getSamplingStrategy" {
- err = thrift.NewTApplicationException(thrift.WRONG_METHOD_NAME, "getSamplingStrategy failed: wrong method name")
- return
- }
- if p.SeqId != seqId {
- err = thrift.NewTApplicationException(thrift.BAD_SEQUENCE_ID, "getSamplingStrategy failed: out of sequence response")
- return
- }
- if mTypeId == thrift.EXCEPTION {
- error1 := thrift.NewTApplicationException(thrift.UNKNOWN_APPLICATION_EXCEPTION, "Unknown Exception")
- var error2 error
- error2, err = error1.Read(iprot)
- if err != nil {
- return
- }
- if err = iprot.ReadMessageEnd(); err != nil {
- return
- }
- err = error2
- return
- }
- if mTypeId != thrift.REPLY {
- err = thrift.NewTApplicationException(thrift.INVALID_MESSAGE_TYPE_EXCEPTION, "getSamplingStrategy failed: invalid message type")
- return
- }
- result := SamplingManagerGetSamplingStrategyResult{}
- if err = result.Read(iprot); err != nil {
- return
- }
- if err = iprot.ReadMessageEnd(); err != nil {
- return
- }
- value = result.GetSuccess()
- return
-}
-
-type SamplingManagerProcessor struct {
- processorMap map[string]thrift.TProcessorFunction
- handler SamplingManager
-}
-
-func (p *SamplingManagerProcessor) AddToProcessorMap(key string, processor thrift.TProcessorFunction) {
- p.processorMap[key] = processor
-}
-
-func (p *SamplingManagerProcessor) GetProcessorFunction(key string) (processor thrift.TProcessorFunction, ok bool) {
- processor, ok = p.processorMap[key]
- return processor, ok
-}
-
-func (p *SamplingManagerProcessor) ProcessorMap() map[string]thrift.TProcessorFunction {
- return p.processorMap
-}
-
-func NewSamplingManagerProcessor(handler SamplingManager) *SamplingManagerProcessor {
-
- self3 := &SamplingManagerProcessor{handler: handler, processorMap: make(map[string]thrift.TProcessorFunction)}
- self3.processorMap["getSamplingStrategy"] = &samplingManagerProcessorGetSamplingStrategy{handler: handler}
- return self3
-}
-
-func (p *SamplingManagerProcessor) Process(iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- name, _, seqId, err := iprot.ReadMessageBegin()
- if err != nil {
- return false, err
- }
- if processor, ok := p.GetProcessorFunction(name); ok {
- return processor.Process(seqId, iprot, oprot)
- }
- iprot.Skip(thrift.STRUCT)
- iprot.ReadMessageEnd()
- x4 := thrift.NewTApplicationException(thrift.UNKNOWN_METHOD, "Unknown function "+name)
- oprot.WriteMessageBegin(name, thrift.EXCEPTION, seqId)
- x4.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return false, x4
-
-}
-
-type samplingManagerProcessorGetSamplingStrategy struct {
- handler SamplingManager
-}
-
-func (p *samplingManagerProcessorGetSamplingStrategy) Process(seqId int32, iprot, oprot thrift.TProtocol) (success bool, err thrift.TException) {
- args := SamplingManagerGetSamplingStrategyArgs{}
- if err = args.Read(iprot); err != nil {
- iprot.ReadMessageEnd()
- x := thrift.NewTApplicationException(thrift.PROTOCOL_ERROR, err.Error())
- oprot.WriteMessageBegin("getSamplingStrategy", thrift.EXCEPTION, seqId)
- x.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return false, err
- }
-
- iprot.ReadMessageEnd()
- result := SamplingManagerGetSamplingStrategyResult{}
- var retval *SamplingStrategyResponse
- var err2 error
- if retval, err2 = p.handler.GetSamplingStrategy(args.ServiceName); err2 != nil {
- x := thrift.NewTApplicationException(thrift.INTERNAL_ERROR, "Internal error processing getSamplingStrategy: "+err2.Error())
- oprot.WriteMessageBegin("getSamplingStrategy", thrift.EXCEPTION, seqId)
- x.Write(oprot)
- oprot.WriteMessageEnd()
- oprot.Flush()
- return true, err2
- } else {
- result.Success = retval
- }
- if err2 = oprot.WriteMessageBegin("getSamplingStrategy", thrift.REPLY, seqId); err2 != nil {
- err = err2
- }
- if err2 = result.Write(oprot); err == nil && err2 != nil {
- err = err2
- }
- if err2 = oprot.WriteMessageEnd(); err == nil && err2 != nil {
- err = err2
- }
- if err2 = oprot.Flush(); err == nil && err2 != nil {
- err = err2
- }
- if err != nil {
- return
- }
- return true, err
-}
-
-// HELPER FUNCTIONS AND STRUCTURES
-
-// Attributes:
-// - ServiceName
-type SamplingManagerGetSamplingStrategyArgs struct {
- ServiceName string `thrift:"serviceName,1" json:"serviceName"`
-}
-
-func NewSamplingManagerGetSamplingStrategyArgs() *SamplingManagerGetSamplingStrategyArgs {
- return &SamplingManagerGetSamplingStrategyArgs{}
-}
-
-func (p *SamplingManagerGetSamplingStrategyArgs) GetServiceName() string {
- return p.ServiceName
-}
-func (p *SamplingManagerGetSamplingStrategyArgs) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyArgs) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.ServiceName = v
- }
- return nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyArgs) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("getSamplingStrategy_args"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyArgs) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("serviceName", thrift.STRING, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:serviceName: ", p), err)
- }
- if err := oprot.WriteString(string(p.ServiceName)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.serviceName (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:serviceName: ", p), err)
- }
- return err
-}
-
-func (p *SamplingManagerGetSamplingStrategyArgs) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("SamplingManagerGetSamplingStrategyArgs(%+v)", *p)
-}
-
-// Attributes:
-// - Success
-type SamplingManagerGetSamplingStrategyResult struct {
- Success *SamplingStrategyResponse `thrift:"success,0" json:"success,omitempty"`
-}
-
-func NewSamplingManagerGetSamplingStrategyResult() *SamplingManagerGetSamplingStrategyResult {
- return &SamplingManagerGetSamplingStrategyResult{}
-}
-
-var SamplingManagerGetSamplingStrategyResult_Success_DEFAULT *SamplingStrategyResponse
-
-func (p *SamplingManagerGetSamplingStrategyResult) GetSuccess() *SamplingStrategyResponse {
- if !p.IsSetSuccess() {
- return SamplingManagerGetSamplingStrategyResult_Success_DEFAULT
- }
- return p.Success
-}
-func (p *SamplingManagerGetSamplingStrategyResult) IsSetSuccess() bool {
- return p.Success != nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyResult) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 0:
- if err := p.readField0(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- return nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyResult) readField0(iprot thrift.TProtocol) error {
- p.Success = &SamplingStrategyResponse{}
- if err := p.Success.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.Success), err)
- }
- return nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyResult) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("getSamplingStrategy_result"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField0(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *SamplingManagerGetSamplingStrategyResult) writeField0(oprot thrift.TProtocol) (err error) {
- if p.IsSetSuccess() {
- if err := oprot.WriteFieldBegin("success", thrift.STRUCT, 0); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 0:success: ", p), err)
- }
- if err := p.Success.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.Success), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 0:success: ", p), err)
- }
- }
- return err
-}
-
-func (p *SamplingManagerGetSamplingStrategyResult) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("SamplingManagerGetSamplingStrategyResult(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/ttypes.go b/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/ttypes.go
deleted file mode 100644
index 9abaf0542..000000000
--- a/vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/ttypes.go
+++ /dev/null
@@ -1,873 +0,0 @@
-// Autogenerated by Thrift Compiler (0.9.3)
-// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
-
-package sampling
-
-import (
- "bytes"
- "fmt"
- "github.com/uber/jaeger-client-go/thrift"
-)
-
-// (needed to ensure safety because of naive import list construction.)
-var _ = thrift.ZERO
-var _ = fmt.Printf
-var _ = bytes.Equal
-
-var GoUnusedProtection__ int
-
-type SamplingStrategyType int64
-
-const (
- SamplingStrategyType_PROBABILISTIC SamplingStrategyType = 0
- SamplingStrategyType_RATE_LIMITING SamplingStrategyType = 1
-)
-
-func (p SamplingStrategyType) String() string {
- switch p {
- case SamplingStrategyType_PROBABILISTIC:
- return "PROBABILISTIC"
- case SamplingStrategyType_RATE_LIMITING:
- return "RATE_LIMITING"
- }
- return "<UNSET>"
-}
-
-func SamplingStrategyTypeFromString(s string) (SamplingStrategyType, error) {
- switch s {
- case "PROBABILISTIC":
- return SamplingStrategyType_PROBABILISTIC, nil
- case "RATE_LIMITING":
- return SamplingStrategyType_RATE_LIMITING, nil
- }
- return SamplingStrategyType(0), fmt.Errorf("not a valid SamplingStrategyType string")
-}
-
-func SamplingStrategyTypePtr(v SamplingStrategyType) *SamplingStrategyType { return &v }
-
-func (p SamplingStrategyType) MarshalText() ([]byte, error) {
- return []byte(p.String()), nil
-}
-
-func (p *SamplingStrategyType) UnmarshalText(text []byte) error {
- q, err := SamplingStrategyTypeFromString(string(text))
- if err != nil {
- return err
- }
- *p = q
- return nil
-}
-
-// Attributes:
-// - SamplingRate
-type ProbabilisticSamplingStrategy struct {
- SamplingRate float64 `thrift:"samplingRate,1,required" json:"samplingRate"`
-}
-
-func NewProbabilisticSamplingStrategy() *ProbabilisticSamplingStrategy {
- return &ProbabilisticSamplingStrategy{}
-}
-
-func (p *ProbabilisticSamplingStrategy) GetSamplingRate() float64 {
- return p.SamplingRate
-}
-func (p *ProbabilisticSamplingStrategy) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetSamplingRate bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetSamplingRate = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetSamplingRate {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field SamplingRate is not set"))
- }
- return nil
-}
-
-func (p *ProbabilisticSamplingStrategy) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadDouble(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.SamplingRate = v
- }
- return nil
-}
-
-func (p *ProbabilisticSamplingStrategy) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("ProbabilisticSamplingStrategy"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *ProbabilisticSamplingStrategy) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("samplingRate", thrift.DOUBLE, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:samplingRate: ", p), err)
- }
- if err := oprot.WriteDouble(float64(p.SamplingRate)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.samplingRate (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:samplingRate: ", p), err)
- }
- return err
-}
-
-func (p *ProbabilisticSamplingStrategy) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("ProbabilisticSamplingStrategy(%+v)", *p)
-}
-
-// Attributes:
-// - MaxTracesPerSecond
-type RateLimitingSamplingStrategy struct {
- MaxTracesPerSecond int16 `thrift:"maxTracesPerSecond,1,required" json:"maxTracesPerSecond"`
-}
-
-func NewRateLimitingSamplingStrategy() *RateLimitingSamplingStrategy {
- return &RateLimitingSamplingStrategy{}
-}
-
-func (p *RateLimitingSamplingStrategy) GetMaxTracesPerSecond() int16 {
- return p.MaxTracesPerSecond
-}
-func (p *RateLimitingSamplingStrategy) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetMaxTracesPerSecond bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetMaxTracesPerSecond = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetMaxTracesPerSecond {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field MaxTracesPerSecond is not set"))
- }
- return nil
-}
-
-func (p *RateLimitingSamplingStrategy) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI16(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.MaxTracesPerSecond = v
- }
- return nil
-}
-
-func (p *RateLimitingSamplingStrategy) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("RateLimitingSamplingStrategy"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *RateLimitingSamplingStrategy) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("maxTracesPerSecond", thrift.I16, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:maxTracesPerSecond: ", p), err)
- }
- if err := oprot.WriteI16(int16(p.MaxTracesPerSecond)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.maxTracesPerSecond (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:maxTracesPerSecond: ", p), err)
- }
- return err
-}
-
-func (p *RateLimitingSamplingStrategy) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("RateLimitingSamplingStrategy(%+v)", *p)
-}
-
-// Attributes:
-// - Operation
-// - ProbabilisticSampling
-type OperationSamplingStrategy struct {
- Operation string `thrift:"operation,1,required" json:"operation"`
- ProbabilisticSampling *ProbabilisticSamplingStrategy `thrift:"probabilisticSampling,2,required" json:"probabilisticSampling"`
-}
-
-func NewOperationSamplingStrategy() *OperationSamplingStrategy {
- return &OperationSamplingStrategy{}
-}
-
-func (p *OperationSamplingStrategy) GetOperation() string {
- return p.Operation
-}
-
-var OperationSamplingStrategy_ProbabilisticSampling_DEFAULT *ProbabilisticSamplingStrategy
-
-func (p *OperationSamplingStrategy) GetProbabilisticSampling() *ProbabilisticSamplingStrategy {
- if !p.IsSetProbabilisticSampling() {
- return OperationSamplingStrategy_ProbabilisticSampling_DEFAULT
- }
- return p.ProbabilisticSampling
-}
-func (p *OperationSamplingStrategy) IsSetProbabilisticSampling() bool {
- return p.ProbabilisticSampling != nil
-}
-
-func (p *OperationSamplingStrategy) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetOperation bool = false
- var issetProbabilisticSampling bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetOperation = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- issetProbabilisticSampling = true
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetOperation {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Operation is not set"))
- }
- if !issetProbabilisticSampling {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field ProbabilisticSampling is not set"))
- }
- return nil
-}
-
-func (p *OperationSamplingStrategy) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadString(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.Operation = v
- }
- return nil
-}
-
-func (p *OperationSamplingStrategy) readField2(iprot thrift.TProtocol) error {
- p.ProbabilisticSampling = &ProbabilisticSamplingStrategy{}
- if err := p.ProbabilisticSampling.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.ProbabilisticSampling), err)
- }
- return nil
-}
-
-func (p *OperationSamplingStrategy) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("OperationSamplingStrategy"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *OperationSamplingStrategy) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("operation", thrift.STRING, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:operation: ", p), err)
- }
- if err := oprot.WriteString(string(p.Operation)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.operation (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:operation: ", p), err)
- }
- return err
-}
-
-func (p *OperationSamplingStrategy) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("probabilisticSampling", thrift.STRUCT, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:probabilisticSampling: ", p), err)
- }
- if err := p.ProbabilisticSampling.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.ProbabilisticSampling), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:probabilisticSampling: ", p), err)
- }
- return err
-}
-
-func (p *OperationSamplingStrategy) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("OperationSamplingStrategy(%+v)", *p)
-}
-
-// Attributes:
-// - DefaultSamplingProbability
-// - DefaultLowerBoundTracesPerSecond
-// - PerOperationStrategies
-// - DefaultUpperBoundTracesPerSecond
-type PerOperationSamplingStrategies struct {
- DefaultSamplingProbability float64 `thrift:"defaultSamplingProbability,1,required" json:"defaultSamplingProbability"`
- DefaultLowerBoundTracesPerSecond float64 `thrift:"defaultLowerBoundTracesPerSecond,2,required" json:"defaultLowerBoundTracesPerSecond"`
- PerOperationStrategies []*OperationSamplingStrategy `thrift:"perOperationStrategies,3,required" json:"perOperationStrategies"`
- DefaultUpperBoundTracesPerSecond *float64 `thrift:"defaultUpperBoundTracesPerSecond,4" json:"defaultUpperBoundTracesPerSecond,omitempty"`
-}
-
-func NewPerOperationSamplingStrategies() *PerOperationSamplingStrategies {
- return &PerOperationSamplingStrategies{}
-}
-
-func (p *PerOperationSamplingStrategies) GetDefaultSamplingProbability() float64 {
- return p.DefaultSamplingProbability
-}
-
-func (p *PerOperationSamplingStrategies) GetDefaultLowerBoundTracesPerSecond() float64 {
- return p.DefaultLowerBoundTracesPerSecond
-}
-
-func (p *PerOperationSamplingStrategies) GetPerOperationStrategies() []*OperationSamplingStrategy {
- return p.PerOperationStrategies
-}
-
-var PerOperationSamplingStrategies_DefaultUpperBoundTracesPerSecond_DEFAULT float64
-
-func (p *PerOperationSamplingStrategies) GetDefaultUpperBoundTracesPerSecond() float64 {
- if !p.IsSetDefaultUpperBoundTracesPerSecond() {
- return PerOperationSamplingStrategies_DefaultUpperBoundTracesPerSecond_DEFAULT
- }
- return *p.DefaultUpperBoundTracesPerSecond
-}
-func (p *PerOperationSamplingStrategies) IsSetDefaultUpperBoundTracesPerSecond() bool {
- return p.DefaultUpperBoundTracesPerSecond != nil
-}
-
-func (p *PerOperationSamplingStrategies) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetDefaultSamplingProbability bool = false
- var issetDefaultLowerBoundTracesPerSecond bool = false
- var issetPerOperationStrategies bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetDefaultSamplingProbability = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- issetDefaultLowerBoundTracesPerSecond = true
- case 3:
- if err := p.readField3(iprot); err != nil {
- return err
- }
- issetPerOperationStrategies = true
- case 4:
- if err := p.readField4(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetDefaultSamplingProbability {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field DefaultSamplingProbability is not set"))
- }
- if !issetDefaultLowerBoundTracesPerSecond {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field DefaultLowerBoundTracesPerSecond is not set"))
- }
- if !issetPerOperationStrategies {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field PerOperationStrategies is not set"))
- }
- return nil
-}
-
-func (p *PerOperationSamplingStrategies) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadDouble(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- p.DefaultSamplingProbability = v
- }
- return nil
-}
-
-func (p *PerOperationSamplingStrategies) readField2(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadDouble(); err != nil {
- return thrift.PrependError("error reading field 2: ", err)
- } else {
- p.DefaultLowerBoundTracesPerSecond = v
- }
- return nil
-}
-
-func (p *PerOperationSamplingStrategies) readField3(iprot thrift.TProtocol) error {
- _, size, err := iprot.ReadListBegin()
- if err != nil {
- return thrift.PrependError("error reading list begin: ", err)
- }
- tSlice := make([]*OperationSamplingStrategy, 0, size)
- p.PerOperationStrategies = tSlice
- for i := 0; i < size; i++ {
- _elem0 := &OperationSamplingStrategy{}
- if err := _elem0.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", _elem0), err)
- }
- p.PerOperationStrategies = append(p.PerOperationStrategies, _elem0)
- }
- if err := iprot.ReadListEnd(); err != nil {
- return thrift.PrependError("error reading list end: ", err)
- }
- return nil
-}
-
-func (p *PerOperationSamplingStrategies) readField4(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadDouble(); err != nil {
- return thrift.PrependError("error reading field 4: ", err)
- } else {
- p.DefaultUpperBoundTracesPerSecond = &v
- }
- return nil
-}
-
-func (p *PerOperationSamplingStrategies) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("PerOperationSamplingStrategies"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := p.writeField3(oprot); err != nil {
- return err
- }
- if err := p.writeField4(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *PerOperationSamplingStrategies) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("defaultSamplingProbability", thrift.DOUBLE, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:defaultSamplingProbability: ", p), err)
- }
- if err := oprot.WriteDouble(float64(p.DefaultSamplingProbability)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.defaultSamplingProbability (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:defaultSamplingProbability: ", p), err)
- }
- return err
-}
-
-func (p *PerOperationSamplingStrategies) writeField2(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("defaultLowerBoundTracesPerSecond", thrift.DOUBLE, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:defaultLowerBoundTracesPerSecond: ", p), err)
- }
- if err := oprot.WriteDouble(float64(p.DefaultLowerBoundTracesPerSecond)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.defaultLowerBoundTracesPerSecond (2) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:defaultLowerBoundTracesPerSecond: ", p), err)
- }
- return err
-}
-
-func (p *PerOperationSamplingStrategies) writeField3(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("perOperationStrategies", thrift.LIST, 3); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:perOperationStrategies: ", p), err)
- }
- if err := oprot.WriteListBegin(thrift.STRUCT, len(p.PerOperationStrategies)); err != nil {
- return thrift.PrependError("error writing list begin: ", err)
- }
- for _, v := range p.PerOperationStrategies {
- if err := v.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", v), err)
- }
- }
- if err := oprot.WriteListEnd(); err != nil {
- return thrift.PrependError("error writing list end: ", err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 3:perOperationStrategies: ", p), err)
- }
- return err
-}
-
-func (p *PerOperationSamplingStrategies) writeField4(oprot thrift.TProtocol) (err error) {
- if p.IsSetDefaultUpperBoundTracesPerSecond() {
- if err := oprot.WriteFieldBegin("defaultUpperBoundTracesPerSecond", thrift.DOUBLE, 4); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:defaultUpperBoundTracesPerSecond: ", p), err)
- }
- if err := oprot.WriteDouble(float64(*p.DefaultUpperBoundTracesPerSecond)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.defaultUpperBoundTracesPerSecond (4) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 4:defaultUpperBoundTracesPerSecond: ", p), err)
- }
- }
- return err
-}
-
-func (p *PerOperationSamplingStrategies) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("PerOperationSamplingStrategies(%+v)", *p)
-}
-
-// Attributes:
-// - StrategyType
-// - ProbabilisticSampling
-// - RateLimitingSampling
-// - OperationSampling
-type SamplingStrategyResponse struct {
- StrategyType SamplingStrategyType `thrift:"strategyType,1,required" json:"strategyType"`
- ProbabilisticSampling *ProbabilisticSamplingStrategy `thrift:"probabilisticSampling,2" json:"probabilisticSampling,omitempty"`
- RateLimitingSampling *RateLimitingSamplingStrategy `thrift:"rateLimitingSampling,3" json:"rateLimitingSampling,omitempty"`
- OperationSampling *PerOperationSamplingStrategies `thrift:"operationSampling,4" json:"operationSampling,omitempty"`
-}
-
-func NewSamplingStrategyResponse() *SamplingStrategyResponse {
- return &SamplingStrategyResponse{}
-}
-
-func (p *SamplingStrategyResponse) GetStrategyType() SamplingStrategyType {
- return p.StrategyType
-}
-
-var SamplingStrategyResponse_ProbabilisticSampling_DEFAULT *ProbabilisticSamplingStrategy
-
-func (p *SamplingStrategyResponse) GetProbabilisticSampling() *ProbabilisticSamplingStrategy {
- if !p.IsSetProbabilisticSampling() {
- return SamplingStrategyResponse_ProbabilisticSampling_DEFAULT
- }
- return p.ProbabilisticSampling
-}
-
-var SamplingStrategyResponse_RateLimitingSampling_DEFAULT *RateLimitingSamplingStrategy
-
-func (p *SamplingStrategyResponse) GetRateLimitingSampling() *RateLimitingSamplingStrategy {
- if !p.IsSetRateLimitingSampling() {
- return SamplingStrategyResponse_RateLimitingSampling_DEFAULT
- }
- return p.RateLimitingSampling
-}
-
-var SamplingStrategyResponse_OperationSampling_DEFAULT *PerOperationSamplingStrategies
-
-func (p *SamplingStrategyResponse) GetOperationSampling() *PerOperationSamplingStrategies {
- if !p.IsSetOperationSampling() {
- return SamplingStrategyResponse_OperationSampling_DEFAULT
- }
- return p.OperationSampling
-}
-func (p *SamplingStrategyResponse) IsSetProbabilisticSampling() bool {
- return p.ProbabilisticSampling != nil
-}
-
-func (p *SamplingStrategyResponse) IsSetRateLimitingSampling() bool {
- return p.RateLimitingSampling != nil
-}
-
-func (p *SamplingStrategyResponse) IsSetOperationSampling() bool {
- return p.OperationSampling != nil
-}
-
-func (p *SamplingStrategyResponse) Read(iprot thrift.TProtocol) error {
- if _, err := iprot.ReadStructBegin(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read error: ", p), err)
- }
-
- var issetStrategyType bool = false
-
- for {
- _, fieldTypeId, fieldId, err := iprot.ReadFieldBegin()
- if err != nil {
- return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", p, fieldId), err)
- }
- if fieldTypeId == thrift.STOP {
- break
- }
- switch fieldId {
- case 1:
- if err := p.readField1(iprot); err != nil {
- return err
- }
- issetStrategyType = true
- case 2:
- if err := p.readField2(iprot); err != nil {
- return err
- }
- case 3:
- if err := p.readField3(iprot); err != nil {
- return err
- }
- case 4:
- if err := p.readField4(iprot); err != nil {
- return err
- }
- default:
- if err := iprot.Skip(fieldTypeId); err != nil {
- return err
- }
- }
- if err := iprot.ReadFieldEnd(); err != nil {
- return err
- }
- }
- if err := iprot.ReadStructEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", p), err)
- }
- if !issetStrategyType {
- return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field StrategyType is not set"))
- }
- return nil
-}
-
-func (p *SamplingStrategyResponse) readField1(iprot thrift.TProtocol) error {
- if v, err := iprot.ReadI32(); err != nil {
- return thrift.PrependError("error reading field 1: ", err)
- } else {
- temp := SamplingStrategyType(v)
- p.StrategyType = temp
- }
- return nil
-}
-
-func (p *SamplingStrategyResponse) readField2(iprot thrift.TProtocol) error {
- p.ProbabilisticSampling = &ProbabilisticSamplingStrategy{}
- if err := p.ProbabilisticSampling.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.ProbabilisticSampling), err)
- }
- return nil
-}
-
-func (p *SamplingStrategyResponse) readField3(iprot thrift.TProtocol) error {
- p.RateLimitingSampling = &RateLimitingSamplingStrategy{}
- if err := p.RateLimitingSampling.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.RateLimitingSampling), err)
- }
- return nil
-}
-
-func (p *SamplingStrategyResponse) readField4(iprot thrift.TProtocol) error {
- p.OperationSampling = &PerOperationSamplingStrategies{}
- if err := p.OperationSampling.Read(iprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", p.OperationSampling), err)
- }
- return nil
-}
-
-func (p *SamplingStrategyResponse) Write(oprot thrift.TProtocol) error {
- if err := oprot.WriteStructBegin("SamplingStrategyResponse"); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", p), err)
- }
- if err := p.writeField1(oprot); err != nil {
- return err
- }
- if err := p.writeField2(oprot); err != nil {
- return err
- }
- if err := p.writeField3(oprot); err != nil {
- return err
- }
- if err := p.writeField4(oprot); err != nil {
- return err
- }
- if err := oprot.WriteFieldStop(); err != nil {
- return thrift.PrependError("write field stop error: ", err)
- }
- if err := oprot.WriteStructEnd(); err != nil {
- return thrift.PrependError("write struct stop error: ", err)
- }
- return nil
-}
-
-func (p *SamplingStrategyResponse) writeField1(oprot thrift.TProtocol) (err error) {
- if err := oprot.WriteFieldBegin("strategyType", thrift.I32, 1); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:strategyType: ", p), err)
- }
- if err := oprot.WriteI32(int32(p.StrategyType)); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T.strategyType (1) field write error: ", p), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 1:strategyType: ", p), err)
- }
- return err
-}
-
-func (p *SamplingStrategyResponse) writeField2(oprot thrift.TProtocol) (err error) {
- if p.IsSetProbabilisticSampling() {
- if err := oprot.WriteFieldBegin("probabilisticSampling", thrift.STRUCT, 2); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:probabilisticSampling: ", p), err)
- }
- if err := p.ProbabilisticSampling.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.ProbabilisticSampling), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 2:probabilisticSampling: ", p), err)
- }
- }
- return err
-}
-
-func (p *SamplingStrategyResponse) writeField3(oprot thrift.TProtocol) (err error) {
- if p.IsSetRateLimitingSampling() {
- if err := oprot.WriteFieldBegin("rateLimitingSampling", thrift.STRUCT, 3); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:rateLimitingSampling: ", p), err)
- }
- if err := p.RateLimitingSampling.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.RateLimitingSampling), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 3:rateLimitingSampling: ", p), err)
- }
- }
- return err
-}
-
-func (p *SamplingStrategyResponse) writeField4(oprot thrift.TProtocol) (err error) {
- if p.IsSetOperationSampling() {
- if err := oprot.WriteFieldBegin("operationSampling", thrift.STRUCT, 4); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:operationSampling: ", p), err)
- }
- if err := p.OperationSampling.Write(oprot); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", p.OperationSampling), err)
- }
- if err := oprot.WriteFieldEnd(); err != nil {
- return thrift.PrependError(fmt.Sprintf("%T write field end error 4:operationSampling: ", p), err)
- }
- }
- return err
-}
-
-func (p *SamplingStrategyResponse) String() string {
- if p == nil {
- return "<nil>"
- }
- return fmt.Sprintf("SamplingStrategyResponse(%+v)", *p)
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/tracer.go b/vendor/github.com/uber/jaeger-client-go/tracer.go
deleted file mode 100644
index 477c6eae3..000000000
--- a/vendor/github.com/uber/jaeger-client-go/tracer.go
+++ /dev/null
@@ -1,491 +0,0 @@
-// Copyright (c) 2017-2018 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "fmt"
- "io"
- "math/rand"
- "os"
- "reflect"
- "strconv"
- "sync"
- "time"
-
- "github.com/opentracing/opentracing-go"
- "github.com/opentracing/opentracing-go/ext"
-
- "github.com/uber/jaeger-client-go/internal/baggage"
- "github.com/uber/jaeger-client-go/internal/throttler"
- "github.com/uber/jaeger-client-go/log"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-// Tracer implements opentracing.Tracer.
-type Tracer struct {
- serviceName string
- hostIPv4 uint32 // this is for zipkin endpoint conversion
-
- sampler SamplerV2
- reporter Reporter
- metrics Metrics
- logger log.DebugLogger
-
- timeNow func() time.Time
- randomNumber func() uint64
-
- options struct {
- gen128Bit bool // whether to generate 128bit trace IDs
- zipkinSharedRPCSpan bool
- highTraceIDGenerator func() uint64 // custom high trace ID generator
- maxTagValueLength int
- noDebugFlagOnForcedSampling bool
- maxLogsPerSpan int
- // more options to come
- }
- // allocator of Span objects
- spanAllocator SpanAllocator
-
- injectors map[interface{}]Injector
- extractors map[interface{}]Extractor
-
- observer compositeObserver
-
- tags []Tag
- process Process
-
- baggageRestrictionManager baggage.RestrictionManager
- baggageSetter *baggageSetter
-
- debugThrottler throttler.Throttler
-}
-
-// NewTracer creates Tracer implementation that reports tracing to Jaeger.
-// The returned io.Closer can be used in shutdown hooks to ensure that the internal
-// queue of the Reporter is drained and all buffered spans are submitted to collectors.
-// TODO (breaking change) return *Tracer only, without closer.
-func NewTracer(
- serviceName string,
- sampler Sampler,
- reporter Reporter,
- options ...TracerOption,
-) (opentracing.Tracer, io.Closer) {
- t := &Tracer{
- serviceName: serviceName,
- sampler: samplerV1toV2(sampler),
- reporter: reporter,
- injectors: make(map[interface{}]Injector),
- extractors: make(map[interface{}]Extractor),
- metrics: *NewNullMetrics(),
- spanAllocator: simpleSpanAllocator{},
- }
-
- for _, option := range options {
- option(t)
- }
-
- // register default injectors/extractors unless they are already provided via options
- textPropagator := NewTextMapPropagator(getDefaultHeadersConfig(), t.metrics)
- t.addCodec(opentracing.TextMap, textPropagator, textPropagator)
-
- httpHeaderPropagator := NewHTTPHeaderPropagator(getDefaultHeadersConfig(), t.metrics)
- t.addCodec(opentracing.HTTPHeaders, httpHeaderPropagator, httpHeaderPropagator)
-
- binaryPropagator := NewBinaryPropagator(t)
- t.addCodec(opentracing.Binary, binaryPropagator, binaryPropagator)
-
- // TODO remove after TChannel supports OpenTracing
- interopPropagator := &jaegerTraceContextPropagator{tracer: t}
- t.addCodec(SpanContextFormat, interopPropagator, interopPropagator)
-
- zipkinPropagator := &zipkinPropagator{tracer: t}
- t.addCodec(ZipkinSpanFormat, zipkinPropagator, zipkinPropagator)
-
- if t.baggageRestrictionManager != nil {
- t.baggageSetter = newBaggageSetter(t.baggageRestrictionManager, &t.metrics)
- } else {
- t.baggageSetter = newBaggageSetter(baggage.NewDefaultRestrictionManager(0), &t.metrics)
- }
- if t.debugThrottler == nil {
- t.debugThrottler = throttler.DefaultThrottler{}
- }
-
- if t.randomNumber == nil {
- seedGenerator := utils.NewRand(time.Now().UnixNano())
- pool := sync.Pool{
- New: func() interface{} {
- return rand.NewSource(seedGenerator.Int63())
- },
- }
-
- t.randomNumber = func() uint64 {
- generator := pool.Get().(rand.Source)
- number := uint64(generator.Int63())
- pool.Put(generator)
- return number
- }
- }
- if t.timeNow == nil {
- t.timeNow = time.Now
- }
- if t.logger == nil {
- t.logger = log.NullLogger
- }
- // Set tracer-level tags
- t.tags = append(t.tags, Tag{key: JaegerClientVersionTagKey, value: JaegerClientVersion})
- if hostname, err := os.Hostname(); err == nil {
- t.tags = append(t.tags, Tag{key: TracerHostnameTagKey, value: hostname})
- }
- if ipval, ok := t.getTag(TracerIPTagKey); ok {
- ipv4, err := utils.ParseIPToUint32(ipval.(string))
- if err != nil {
- t.hostIPv4 = 0
- t.logger.Error("Unable to convert the externally provided ip to uint32: " + err.Error())
- } else {
- t.hostIPv4 = ipv4
- }
- } else if ip, err := utils.HostIP(); err == nil {
- t.tags = append(t.tags, Tag{key: TracerIPTagKey, value: ip.String()})
- t.hostIPv4 = utils.PackIPAsUint32(ip)
- } else {
- t.logger.Error("Unable to determine this host's IP address: " + err.Error())
- }
-
- if t.options.gen128Bit {
- if t.options.highTraceIDGenerator == nil {
- t.options.highTraceIDGenerator = t.randomNumber
- }
- } else if t.options.highTraceIDGenerator != nil {
- t.logger.Error("Overriding high trace ID generator but not generating " +
- "128 bit trace IDs, consider enabling the \"Gen128Bit\" option")
- }
- if t.options.maxTagValueLength == 0 {
- t.options.maxTagValueLength = DefaultMaxTagValueLength
- }
- t.process = Process{
- Service: serviceName,
- UUID: strconv.FormatUint(t.randomNumber(), 16),
- Tags: t.tags,
- }
- if throttler, ok := t.debugThrottler.(ProcessSetter); ok {
- throttler.SetProcess(t.process)
- }
-
- return t, t
-}
-
-// addCodec adds registers injector and extractor for given propagation format if not already defined.
-func (t *Tracer) addCodec(format interface{}, injector Injector, extractor Extractor) {
- if _, ok := t.injectors[format]; !ok {
- t.injectors[format] = injector
- }
- if _, ok := t.extractors[format]; !ok {
- t.extractors[format] = extractor
- }
-}
-
-// StartSpan implements StartSpan() method of opentracing.Tracer.
-func (t *Tracer) StartSpan(
- operationName string,
- options ...opentracing.StartSpanOption,
-) opentracing.Span {
- sso := opentracing.StartSpanOptions{}
- for _, o := range options {
- o.Apply(&sso)
- }
- return t.startSpanWithOptions(operationName, sso)
-}
-
-func (t *Tracer) startSpanWithOptions(
- operationName string,
- options opentracing.StartSpanOptions,
-) opentracing.Span {
- if options.StartTime.IsZero() {
- options.StartTime = t.timeNow()
- }
-
- // Predicate whether the given span context is an empty reference
- // or may be used as parent / debug ID / baggage items source
- isEmptyReference := func(ctx SpanContext) bool {
- return !ctx.IsValid() && !ctx.isDebugIDContainerOnly() && len(ctx.baggage) == 0
- }
-
- var references []Reference
- var parent SpanContext
- var hasParent bool // need this because `parent` is a value, not reference
- var ctx SpanContext
- var isSelfRef bool
- for _, ref := range options.References {
- ctxRef, ok := ref.ReferencedContext.(SpanContext)
- if !ok {
- t.logger.Error(fmt.Sprintf(
- "Reference contains invalid type of SpanReference: %s",
- reflect.ValueOf(ref.ReferencedContext)))
- continue
- }
- if isEmptyReference(ctxRef) {
- continue
- }
-
- if ref.Type == selfRefType {
- isSelfRef = true
- ctx = ctxRef
- continue
- }
-
- if ctxRef.IsValid() {
- // we don't want empty context that contains only debug-id or baggage
- references = append(references, Reference{Type: ref.Type, Context: ctxRef})
- }
-
- if !hasParent {
- parent = ctxRef
- hasParent = ref.Type == opentracing.ChildOfRef
- }
- }
- if !hasParent && !isEmptyReference(parent) {
- // If ChildOfRef wasn't found but a FollowFromRef exists, use the context from
- // the FollowFromRef as the parent
- hasParent = true
- }
-
- rpcServer := false
- if v, ok := options.Tags[ext.SpanKindRPCServer.Key]; ok {
- rpcServer = (v == ext.SpanKindRPCServerEnum || v == string(ext.SpanKindRPCServerEnum))
- }
-
- var internalTags []Tag
- newTrace := false
- if !isSelfRef {
- if !hasParent || !parent.IsValid() {
- newTrace = true
- ctx.traceID.Low = t.randomID()
- if t.options.gen128Bit {
- ctx.traceID.High = t.options.highTraceIDGenerator()
- }
- ctx.spanID = SpanID(ctx.traceID.Low)
- ctx.parentID = 0
- ctx.samplingState = &samplingState{
- localRootSpan: ctx.spanID,
- }
- if hasParent && parent.isDebugIDContainerOnly() && t.isDebugAllowed(operationName) {
- ctx.samplingState.setDebugAndSampled()
- internalTags = append(internalTags, Tag{key: JaegerDebugHeader, value: parent.debugID})
- }
- } else {
- ctx.traceID = parent.traceID
- if rpcServer && t.options.zipkinSharedRPCSpan {
- // Support Zipkin's one-span-per-RPC model
- ctx.spanID = parent.spanID
- ctx.parentID = parent.parentID
- } else {
- ctx.spanID = SpanID(t.randomID())
- ctx.parentID = parent.spanID
- }
- ctx.samplingState = parent.samplingState
- if parent.remote {
- ctx.samplingState.setFinal()
- ctx.samplingState.localRootSpan = ctx.spanID
- }
- }
- if hasParent {
- // copy baggage items
- if l := len(parent.baggage); l > 0 {
- ctx.baggage = make(map[string]string, len(parent.baggage))
- for k, v := range parent.baggage {
- ctx.baggage[k] = v
- }
- }
- }
- }
-
- sp := t.newSpan()
- sp.context = ctx
- sp.tracer = t
- sp.operationName = operationName
- sp.startTime = options.StartTime
- sp.duration = 0
- sp.references = references
- sp.firstInProcess = rpcServer || sp.context.parentID == 0
-
- if !sp.isSamplingFinalized() {
- decision := t.sampler.OnCreateSpan(sp)
- sp.applySamplingDecision(decision, false)
- }
- sp.observer = t.observer.OnStartSpan(sp, operationName, options)
-
- if tagsTotalLength := len(options.Tags) + len(internalTags); tagsTotalLength > 0 {
- if sp.tags == nil || cap(sp.tags) < tagsTotalLength {
- sp.tags = make([]Tag, 0, tagsTotalLength)
- }
- sp.tags = append(sp.tags, internalTags...)
- for k, v := range options.Tags {
- sp.setTagInternal(k, v, false)
- }
- }
- t.emitNewSpanMetrics(sp, newTrace)
- return sp
-}
-
-// Inject implements Inject() method of opentracing.Tracer
-func (t *Tracer) Inject(ctx opentracing.SpanContext, format interface{}, carrier interface{}) error {
- c, ok := ctx.(SpanContext)
- if !ok {
- return opentracing.ErrInvalidSpanContext
- }
- if injector, ok := t.injectors[format]; ok {
- return injector.Inject(c, carrier)
- }
- return opentracing.ErrUnsupportedFormat
-}
-
-// Extract implements Extract() method of opentracing.Tracer
-func (t *Tracer) Extract(
- format interface{},
- carrier interface{},
-) (opentracing.SpanContext, error) {
- if extractor, ok := t.extractors[format]; ok {
- spanCtx, err := extractor.Extract(carrier)
- if err != nil {
- return nil, err // ensure returned spanCtx is nil
- }
- spanCtx.remote = true
- return spanCtx, nil
- }
- return nil, opentracing.ErrUnsupportedFormat
-}
-
-// Close releases all resources used by the Tracer and flushes any remaining buffered spans.
-func (t *Tracer) Close() error {
- t.logger.Debugf("closing tracer")
- t.reporter.Close()
- t.sampler.Close()
- if mgr, ok := t.baggageRestrictionManager.(io.Closer); ok {
- _ = mgr.Close()
- }
- if throttler, ok := t.debugThrottler.(io.Closer); ok {
- _ = throttler.Close()
- }
- return nil
-}
-
-// Tags returns a slice of tracer-level tags.
-func (t *Tracer) Tags() []opentracing.Tag {
- tags := make([]opentracing.Tag, len(t.tags))
- for i, tag := range t.tags {
- tags[i] = opentracing.Tag{Key: tag.key, Value: tag.value}
- }
- return tags
-}
-
-// getTag returns the value of specific tag, if not exists, return nil.
-// TODO only used by tests, move there.
-func (t *Tracer) getTag(key string) (interface{}, bool) {
- for _, tag := range t.tags {
- if tag.key == key {
- return tag.value, true
- }
- }
- return nil, false
-}
-
-// newSpan returns an instance of a clean Span object.
-// If options.PoolSpans is true, the spans are retrieved from an object pool.
-func (t *Tracer) newSpan() *Span {
- return t.spanAllocator.Get()
-}
-
-// emitNewSpanMetrics generates metrics on the number of started spans and traces.
-// newTrace param: we cannot simply check for parentID==0 because in Zipkin model the
-// server-side RPC span has the exact same trace/span/parent IDs as the
-// calling client-side span, but obviously the server side span is
-// no longer a root span of the trace.
-func (t *Tracer) emitNewSpanMetrics(sp *Span, newTrace bool) {
- if !sp.isSamplingFinalized() {
- t.metrics.SpansStartedDelayedSampling.Inc(1)
- if newTrace {
- t.metrics.TracesStartedDelayedSampling.Inc(1)
- }
- // joining a trace is not possible, because sampling decision inherited from upstream is final
- } else if sp.context.IsSampled() {
- t.metrics.SpansStartedSampled.Inc(1)
- if newTrace {
- t.metrics.TracesStartedSampled.Inc(1)
- } else if sp.firstInProcess {
- t.metrics.TracesJoinedSampled.Inc(1)
- }
- } else {
- t.metrics.SpansStartedNotSampled.Inc(1)
- if newTrace {
- t.metrics.TracesStartedNotSampled.Inc(1)
- } else if sp.firstInProcess {
- t.metrics.TracesJoinedNotSampled.Inc(1)
- }
- }
-}
-
-func (t *Tracer) reportSpan(sp *Span) {
- if !sp.isSamplingFinalized() {
- t.metrics.SpansFinishedDelayedSampling.Inc(1)
- } else if sp.context.IsSampled() {
- t.metrics.SpansFinishedSampled.Inc(1)
- } else {
- t.metrics.SpansFinishedNotSampled.Inc(1)
- }
-
- // Note: if the reporter is processing Span asynchronously then it needs to Retain() the span,
- // and then Release() it when no longer needed.
- // Otherwise, the span may be reused for another trace and its data may be overwritten.
- if sp.context.IsSampled() {
- t.reporter.Report(sp)
- }
-
- sp.Release()
-}
-
-// randomID generates a random trace/span ID, using tracer.random() generator.
-// It never returns 0.
-func (t *Tracer) randomID() uint64 {
- val := t.randomNumber()
- for val == 0 {
- val = t.randomNumber()
- }
- return val
-}
-
-// (NB) span must hold the lock before making this call
-func (t *Tracer) setBaggage(sp *Span, key, value string) {
- t.baggageSetter.setBaggage(sp, key, value)
-}
-
-// (NB) span must hold the lock before making this call
-func (t *Tracer) isDebugAllowed(operation string) bool {
- return t.debugThrottler.IsAllowed(operation)
-}
-
-// Sampler returns the sampler given to the tracer at creation.
-func (t *Tracer) Sampler() SamplerV2 {
- return t.sampler
-}
-
-// SelfRef creates an opentracing compliant SpanReference from a jaeger
-// SpanContext. This is a factory function in order to encapsulate jaeger specific
-// types.
-func SelfRef(ctx SpanContext) opentracing.SpanReference {
- return opentracing.SpanReference{
- Type: selfRefType,
- ReferencedContext: ctx,
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/tracer_options.go b/vendor/github.com/uber/jaeger-client-go/tracer_options.go
deleted file mode 100644
index f0734b772..000000000
--- a/vendor/github.com/uber/jaeger-client-go/tracer_options.go
+++ /dev/null
@@ -1,182 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "time"
-
- "github.com/opentracing/opentracing-go"
-
- "github.com/uber/jaeger-client-go/internal/baggage"
- "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
-type TracerOption func(tracer *Tracer)
-
-// TracerOptions is a factory for all available TracerOption's
-var TracerOptions tracerOptions
-
-type tracerOptions struct{}
-
-// Metrics creates a TracerOption that initializes Metrics on the tracer,
-// which is used to emit statistics.
-func (tracerOptions) Metrics(m *Metrics) TracerOption {
- return func(tracer *Tracer) {
- tracer.metrics = *m
- }
-}
-
-// Logger creates a TracerOption that gives the tracer a Logger.
-func (tracerOptions) Logger(logger Logger) TracerOption {
- return func(tracer *Tracer) {
- tracer.logger = log.DebugLogAdapter(logger)
- }
-}
-
-func (tracerOptions) CustomHeaderKeys(headerKeys *HeadersConfig) TracerOption {
- return func(tracer *Tracer) {
- if headerKeys == nil {
- return
- }
- textPropagator := NewTextMapPropagator(headerKeys.ApplyDefaults(), tracer.metrics)
- tracer.addCodec(opentracing.TextMap, textPropagator, textPropagator)
-
- httpHeaderPropagator := NewHTTPHeaderPropagator(headerKeys.ApplyDefaults(), tracer.metrics)
- tracer.addCodec(opentracing.HTTPHeaders, httpHeaderPropagator, httpHeaderPropagator)
- }
-}
-
-// TimeNow creates a TracerOption that gives the tracer a function
-// used to generate timestamps for spans.
-func (tracerOptions) TimeNow(timeNow func() time.Time) TracerOption {
- return func(tracer *Tracer) {
- tracer.timeNow = timeNow
- }
-}
-
-// RandomNumber creates a TracerOption that gives the tracer
-// a thread-safe random number generator function for generating trace IDs.
-func (tracerOptions) RandomNumber(randomNumber func() uint64) TracerOption {
- return func(tracer *Tracer) {
- tracer.randomNumber = randomNumber
- }
-}
-
-// PoolSpans creates a TracerOption that tells the tracer whether it should use
-// an object pool to minimize span allocations.
-// This should be used with care, only if the service is not running any async tasks
-// that can access parent spans after those spans have been finished.
-func (tracerOptions) PoolSpans(poolSpans bool) TracerOption {
- return func(tracer *Tracer) {
- if poolSpans {
- tracer.spanAllocator = newSyncPollSpanAllocator()
- } else {
- tracer.spanAllocator = simpleSpanAllocator{}
- }
- }
-}
-
-// Deprecated: HostIPv4 creates a TracerOption that identifies the current service/process.
-// If not set, the factory method will obtain the current IP address.
-// The TracerOption is deprecated; the tracer will attempt to automatically detect the IP.
-func (tracerOptions) HostIPv4(hostIPv4 uint32) TracerOption {
- return func(tracer *Tracer) {
- tracer.hostIPv4 = hostIPv4
- }
-}
-
-func (tracerOptions) Injector(format interface{}, injector Injector) TracerOption {
- return func(tracer *Tracer) {
- tracer.injectors[format] = injector
- }
-}
-
-func (tracerOptions) Extractor(format interface{}, extractor Extractor) TracerOption {
- return func(tracer *Tracer) {
- tracer.extractors[format] = extractor
- }
-}
-
-func (t tracerOptions) Observer(observer Observer) TracerOption {
- return t.ContribObserver(&oldObserver{obs: observer})
-}
-
-func (tracerOptions) ContribObserver(observer ContribObserver) TracerOption {
- return func(tracer *Tracer) {
- tracer.observer.append(observer)
- }
-}
-
-func (tracerOptions) Gen128Bit(gen128Bit bool) TracerOption {
- return func(tracer *Tracer) {
- tracer.options.gen128Bit = gen128Bit
- }
-}
-
-func (tracerOptions) NoDebugFlagOnForcedSampling(noDebugFlagOnForcedSampling bool) TracerOption {
- return func(tracer *Tracer) {
- tracer.options.noDebugFlagOnForcedSampling = noDebugFlagOnForcedSampling
- }
-}
-
-func (tracerOptions) HighTraceIDGenerator(highTraceIDGenerator func() uint64) TracerOption {
- return func(tracer *Tracer) {
- tracer.options.highTraceIDGenerator = highTraceIDGenerator
- }
-}
-
-func (tracerOptions) MaxTagValueLength(maxTagValueLength int) TracerOption {
- return func(tracer *Tracer) {
- tracer.options.maxTagValueLength = maxTagValueLength
- }
-}
-
-// MaxLogsPerSpan limits the number of Logs in a span (if set to a nonzero
-// value). If a span has more logs than this value, logs are dropped as
-// necessary (and replaced with a log describing how many were dropped).
-//
-// About half of the MaxLogsPerSpan logs kept are the oldest logs, and about
-// half are the newest logs.
-func (tracerOptions) MaxLogsPerSpan(maxLogsPerSpan int) TracerOption {
- return func(tracer *Tracer) {
- tracer.options.maxLogsPerSpan = maxLogsPerSpan
- }
-}
-
-func (tracerOptions) ZipkinSharedRPCSpan(zipkinSharedRPCSpan bool) TracerOption {
- return func(tracer *Tracer) {
- tracer.options.zipkinSharedRPCSpan = zipkinSharedRPCSpan
- }
-}
-
-func (tracerOptions) Tag(key string, value interface{}) TracerOption {
- return func(tracer *Tracer) {
- tracer.tags = append(tracer.tags, Tag{key: key, value: value})
- }
-}
-
-func (tracerOptions) BaggageRestrictionManager(mgr baggage.RestrictionManager) TracerOption {
- return func(tracer *Tracer) {
- tracer.baggageRestrictionManager = mgr
- }
-}
-
-func (tracerOptions) DebugThrottler(throttler throttler.Throttler) TracerOption {
- return func(tracer *Tracer) {
- tracer.debugThrottler = throttler
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/transport.go b/vendor/github.com/uber/jaeger-client-go/transport.go
deleted file mode 100644
index c5f5b1955..000000000
--- a/vendor/github.com/uber/jaeger-client-go/transport.go
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "io"
-)
-
-// Transport abstracts the method of sending spans out of process.
-// Implementations are NOT required to be thread-safe; the RemoteReporter
-// is expected to only call methods on the Transport from the same go-routine.
-type Transport interface {
- // Append converts the span to the wire representation and adds it
- // to sender's internal buffer. If the buffer exceeds its designated
- // size, the transport should call Flush() and return the number of spans
- // flushed, otherwise return 0. If error is returned, the returned number
- // of spans is treated as failed span, and reported to metrics accordingly.
- Append(span *Span) (int, error)
-
- // Flush submits the internal buffer to the remote server. It returns the
- // number of spans flushed. If error is returned, the returned number of
- // spans is treated as failed span, and reported to metrics accordingly.
- Flush() (int, error)
-
- io.Closer
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/transport/doc.go b/vendor/github.com/uber/jaeger-client-go/transport/doc.go
deleted file mode 100644
index 6b961fb63..000000000
--- a/vendor/github.com/uber/jaeger-client-go/transport/doc.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 transport defines various transports that can be used with
-// RemoteReporter to send spans out of process. Transport is responsible
-// for serializing the spans into a specific format suitable for sending
-// to the tracing backend. Examples may include Thrift over UDP, Thrift
-// or JSON over HTTP, Thrift over Kafka, etc.
-//
-// Implementations are NOT required to be thread-safe; the RemoteReporter
-// is expected to only call methods on the Transport from the same go-routine.
-package transport
diff --git a/vendor/github.com/uber/jaeger-client-go/transport/http.go b/vendor/github.com/uber/jaeger-client-go/transport/http.go
deleted file mode 100644
index bb7eb00c9..000000000
--- a/vendor/github.com/uber/jaeger-client-go/transport/http.go
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 transport
-
-import (
- "bytes"
- "fmt"
- "io"
- "io/ioutil"
- "net/http"
- "time"
-
- "github.com/uber/jaeger-client-go/thrift"
-
- "github.com/uber/jaeger-client-go"
- j "github.com/uber/jaeger-client-go/thrift-gen/jaeger"
-)
-
-// Default timeout for http request in seconds
-const defaultHTTPTimeout = time.Second * 5
-
-// HTTPTransport implements Transport by forwarding spans to a http server.
-type HTTPTransport struct {
- url string
- client *http.Client
- batchSize int
- spans []*j.Span
- process *j.Process
- httpCredentials *HTTPBasicAuthCredentials
- headers map[string]string
-}
-
-// HTTPBasicAuthCredentials stores credentials for HTTP basic auth.
-type HTTPBasicAuthCredentials struct {
- username string
- password string
-}
-
-// HTTPOption sets a parameter for the HttpCollector
-type HTTPOption func(c *HTTPTransport)
-
-// HTTPTimeout sets maximum timeout for http request.
-func HTTPTimeout(duration time.Duration) HTTPOption {
- return func(c *HTTPTransport) { c.client.Timeout = duration }
-}
-
-// HTTPBatchSize sets the maximum batch size, after which a collect will be
-// triggered. The default batch size is 100 spans.
-func HTTPBatchSize(n int) HTTPOption {
- return func(c *HTTPTransport) { c.batchSize = n }
-}
-
-// HTTPBasicAuth sets the credentials required to perform HTTP basic auth
-func HTTPBasicAuth(username string, password string) HTTPOption {
- return func(c *HTTPTransport) {
- c.httpCredentials = &HTTPBasicAuthCredentials{username: username, password: password}
- }
-}
-
-// HTTPRoundTripper configures the underlying Transport on the *http.Client
-// that is used
-func HTTPRoundTripper(transport http.RoundTripper) HTTPOption {
- return func(c *HTTPTransport) {
- c.client.Transport = transport
- }
-}
-
-// HTTPHeaders defines the HTTP headers that will be attached to the jaeger client's HTTP request
-func HTTPHeaders(headers map[string]string) HTTPOption {
- return func(c *HTTPTransport) {
- c.headers = headers
- }
-}
-
-// NewHTTPTransport returns a new HTTP-backend transport. url should be an http
-// url of the collector to handle POST request, typically something like:
-// http://hostname:14268/api/traces?format=jaeger.thrift
-func NewHTTPTransport(url string, options ...HTTPOption) *HTTPTransport {
- c := &HTTPTransport{
- url: url,
- client: &http.Client{Timeout: defaultHTTPTimeout},
- batchSize: 100,
- spans: []*j.Span{},
- }
-
- for _, option := range options {
- option(c)
- }
- return c
-}
-
-// Append implements Transport.
-func (c *HTTPTransport) Append(span *jaeger.Span) (int, error) {
- if c.process == nil {
- c.process = jaeger.BuildJaegerProcessThrift(span)
- }
- jSpan := jaeger.BuildJaegerThrift(span)
- c.spans = append(c.spans, jSpan)
- if len(c.spans) >= c.batchSize {
- return c.Flush()
- }
- return 0, nil
-}
-
-// Flush implements Transport.
-func (c *HTTPTransport) Flush() (int, error) {
- count := len(c.spans)
- if count == 0 {
- return 0, nil
- }
- err := c.send(c.spans)
- c.spans = c.spans[:0]
- return count, err
-}
-
-// Close implements Transport.
-func (c *HTTPTransport) Close() error {
- return nil
-}
-
-func (c *HTTPTransport) send(spans []*j.Span) error {
- batch := &j.Batch{
- Spans: spans,
- Process: c.process,
- }
- body, err := serializeThrift(batch)
- if err != nil {
- return err
- }
- req, err := http.NewRequest("POST", c.url, body)
- if err != nil {
- return err
- }
- req.Header.Set("Content-Type", "application/x-thrift")
- for k, v := range c.headers {
- req.Header.Set(k, v)
- }
-
- if c.httpCredentials != nil {
- req.SetBasicAuth(c.httpCredentials.username, c.httpCredentials.password)
- }
-
- resp, err := c.client.Do(req)
- if err != nil {
- return err
- }
- io.Copy(ioutil.Discard, resp.Body)
- resp.Body.Close()
- if resp.StatusCode >= http.StatusBadRequest {
- return fmt.Errorf("error from collector: %d", resp.StatusCode)
- }
- return nil
-}
-
-func serializeThrift(obj thrift.TStruct) (*bytes.Buffer, error) {
- t := thrift.NewTMemoryBuffer()
- p := thrift.NewTBinaryProtocolTransport(t)
- if err := obj.Write(p); err != nil {
- return nil, err
- }
- return t.Buffer, nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/transport_udp.go b/vendor/github.com/uber/jaeger-client-go/transport_udp.go
deleted file mode 100644
index 5734819ab..000000000
--- a/vendor/github.com/uber/jaeger-client-go/transport_udp.go
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "errors"
- "fmt"
-
- "github.com/uber/jaeger-client-go/internal/reporterstats"
- "github.com/uber/jaeger-client-go/log"
- "github.com/uber/jaeger-client-go/thrift"
- j "github.com/uber/jaeger-client-go/thrift-gen/jaeger"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-// Empirically obtained constant for how many bytes in the message are used for envelope.
-// The total datagram size is:
-// sizeof(Span) * numSpans + processByteSize + emitBatchOverhead <= maxPacketSize
-//
-// Note that due to the use of Compact Thrift protocol, overhead grows with the number of spans
-// in the batch, because the length of the list is encoded as varint32, as well as SeqId.
-//
-// There is a unit test `TestEmitBatchOverhead` that validates this number, it fails at <68.
-const emitBatchOverhead = 70
-
-var errSpanTooLarge = errors.New("span is too large")
-
-type udpSender struct {
- client *utils.AgentClientUDP
- maxPacketSize int // max size of datagram in bytes
- maxSpanBytes int // max number of bytes to record spans (excluding envelope) in the datagram
- byteBufferSize int // current number of span bytes accumulated in the buffer
- spanBuffer []*j.Span // spans buffered before a flush
- thriftBuffer *thrift.TMemoryBuffer // buffer used to calculate byte size of a span
- thriftProtocol thrift.TProtocol
- process *j.Process
- processByteSize int
-
- // reporterStats provides access to stats that are only known to Reporter
- reporterStats reporterstats.ReporterStats
-
- // The following counters are always non-negative, but we need to send them in signed i64 Thrift fields,
- // so we keep them as signed. At 10k QPS, overflow happens in about 300 million years.
- batchSeqNo int64
- tooLargeDroppedSpans int64
- failedToEmitSpans int64
-}
-
-// UDPTransportParams allows specifying options for initializing a UDPTransport. An instance of this struct should
-// be passed to NewUDPTransportWithParams.
-type UDPTransportParams struct {
- utils.AgentClientUDPParams
-}
-
-// NewUDPTransportWithParams creates a reporter that submits spans to jaeger-agent.
-// TODO: (breaking change) move to transport/ package.
-func NewUDPTransportWithParams(params UDPTransportParams) (Transport, error) {
- if len(params.HostPort) == 0 {
- params.HostPort = fmt.Sprintf("%s:%d", DefaultUDPSpanServerHost, DefaultUDPSpanServerPort)
- }
-
- if params.Logger == nil {
- params.Logger = log.StdLogger
- }
-
- if params.MaxPacketSize == 0 {
- params.MaxPacketSize = utils.UDPPacketMaxLength
- }
-
- protocolFactory := thrift.NewTCompactProtocolFactory()
-
- // Each span is first written to thriftBuffer to determine its size in bytes.
- thriftBuffer := thrift.NewTMemoryBufferLen(params.MaxPacketSize)
- thriftProtocol := protocolFactory.GetProtocol(thriftBuffer)
-
- client, err := utils.NewAgentClientUDPWithParams(params.AgentClientUDPParams)
- if err != nil {
- return nil, err
- }
-
- return &udpSender{
- client: client,
- maxSpanBytes: params.MaxPacketSize - emitBatchOverhead,
- thriftBuffer: thriftBuffer,
- thriftProtocol: thriftProtocol,
- }, nil
-}
-
-// NewUDPTransport creates a reporter that submits spans to jaeger-agent.
-// TODO: (breaking change) move to transport/ package.
-func NewUDPTransport(hostPort string, maxPacketSize int) (Transport, error) {
- return NewUDPTransportWithParams(UDPTransportParams{
- AgentClientUDPParams: utils.AgentClientUDPParams{
- HostPort: hostPort,
- MaxPacketSize: maxPacketSize,
- },
- })
-}
-
-// SetReporterStats implements reporterstats.Receiver.
-func (s *udpSender) SetReporterStats(rs reporterstats.ReporterStats) {
- s.reporterStats = rs
-}
-
-func (s *udpSender) calcSizeOfSerializedThrift(thriftStruct thrift.TStruct) int {
- s.thriftBuffer.Reset()
- _ = thriftStruct.Write(s.thriftProtocol)
- return s.thriftBuffer.Len()
-}
-
-func (s *udpSender) Append(span *Span) (int, error) {
- if s.process == nil {
- s.process = BuildJaegerProcessThrift(span)
- s.processByteSize = s.calcSizeOfSerializedThrift(s.process)
- s.byteBufferSize += s.processByteSize
- }
- jSpan := BuildJaegerThrift(span)
- spanSize := s.calcSizeOfSerializedThrift(jSpan)
- if spanSize > s.maxSpanBytes {
- s.tooLargeDroppedSpans++
- return 1, errSpanTooLarge
- }
-
- s.byteBufferSize += spanSize
- if s.byteBufferSize <= s.maxSpanBytes {
- s.spanBuffer = append(s.spanBuffer, jSpan)
- if s.byteBufferSize < s.maxSpanBytes {
- return 0, nil
- }
- return s.Flush()
- }
- // the latest span did not fit in the buffer
- n, err := s.Flush()
- s.spanBuffer = append(s.spanBuffer, jSpan)
- s.byteBufferSize = spanSize + s.processByteSize
- return n, err
-}
-
-func (s *udpSender) Flush() (int, error) {
- n := len(s.spanBuffer)
- if n == 0 {
- return 0, nil
- }
- s.batchSeqNo++
- batchSeqNo := int64(s.batchSeqNo)
- err := s.client.EmitBatch(&j.Batch{
- Process: s.process,
- Spans: s.spanBuffer,
- SeqNo: &batchSeqNo,
- Stats: s.makeStats(),
- })
- s.resetBuffers()
- if err != nil {
- s.failedToEmitSpans += int64(n)
- }
- return n, err
-}
-
-func (s *udpSender) Close() error {
- return s.client.Close()
-}
-
-func (s *udpSender) resetBuffers() {
- for i := range s.spanBuffer {
- s.spanBuffer[i] = nil
- }
- s.spanBuffer = s.spanBuffer[:0]
- s.byteBufferSize = s.processByteSize
-}
-
-func (s *udpSender) makeStats() *j.ClientStats {
- var dropped int64
- if s.reporterStats != nil {
- dropped = s.reporterStats.SpansDroppedFromQueue()
- }
- return &j.ClientStats{
- FullQueueDroppedSpans: dropped,
- TooLargeDroppedSpans: s.tooLargeDroppedSpans,
- FailedToEmitSpans: s.failedToEmitSpans,
- }
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/zipkin.go b/vendor/github.com/uber/jaeger-client-go/zipkin.go
deleted file mode 100644
index 98cab4b6e..000000000
--- a/vendor/github.com/uber/jaeger-client-go/zipkin.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "github.com/opentracing/opentracing-go"
-)
-
-// ZipkinSpanFormat is an OpenTracing carrier format constant
-const ZipkinSpanFormat = "zipkin-span-format"
-
-// ExtractableZipkinSpan is a type of Carrier used for integration with Zipkin-aware
-// RPC frameworks (like TChannel). It does not support baggage, only trace IDs.
-type ExtractableZipkinSpan interface {
- TraceID() uint64
- SpanID() uint64
- ParentID() uint64
- Flags() byte
-}
-
-// InjectableZipkinSpan is a type of Carrier used for integration with Zipkin-aware
-// RPC frameworks (like TChannel). It does not support baggage, only trace IDs.
-type InjectableZipkinSpan interface {
- SetTraceID(traceID uint64)
- SetSpanID(spanID uint64)
- SetParentID(parentID uint64)
- SetFlags(flags byte)
-}
-
-type zipkinPropagator struct {
- tracer *Tracer
-}
-
-func (p *zipkinPropagator) Inject(
- ctx SpanContext,
- abstractCarrier interface{},
-) error {
- carrier, ok := abstractCarrier.(InjectableZipkinSpan)
- if !ok {
- return opentracing.ErrInvalidCarrier
- }
-
- carrier.SetTraceID(ctx.TraceID().Low) // TODO this cannot work with 128bit IDs
- carrier.SetSpanID(uint64(ctx.SpanID()))
- carrier.SetParentID(uint64(ctx.ParentID()))
- carrier.SetFlags(ctx.samplingState.flags())
- return nil
-}
-
-func (p *zipkinPropagator) Extract(abstractCarrier interface{}) (SpanContext, error) {
- carrier, ok := abstractCarrier.(ExtractableZipkinSpan)
- if !ok {
- return emptyContext, opentracing.ErrInvalidCarrier
- }
- if carrier.TraceID() == 0 {
- return emptyContext, opentracing.ErrSpanContextNotFound
- }
- var ctx SpanContext
- ctx.traceID.Low = carrier.TraceID()
- ctx.spanID = SpanID(carrier.SpanID())
- ctx.parentID = SpanID(carrier.ParentID())
- ctx.samplingState = &samplingState{}
- ctx.samplingState.setFlags(carrier.Flags())
- return ctx, nil
-}
diff --git a/vendor/github.com/uber/jaeger-client-go/zipkin_thrift_span.go b/vendor/github.com/uber/jaeger-client-go/zipkin_thrift_span.go
deleted file mode 100644
index 73aeb000f..000000000
--- a/vendor/github.com/uber/jaeger-client-go/zipkin_thrift_span.go
+++ /dev/null
@@ -1,329 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 jaeger
-
-import (
- "encoding/binary"
- "fmt"
- "time"
-
- "github.com/opentracing/opentracing-go/ext"
-
- "github.com/uber/jaeger-client-go/internal/spanlog"
- z "github.com/uber/jaeger-client-go/thrift-gen/zipkincore"
- "github.com/uber/jaeger-client-go/utils"
-)
-
-const (
- // Zipkin UI does not work well with non-string tag values
- allowPackedNumbers = false
-)
-
-var specialTagHandlers = map[string]func(*zipkinSpan, interface{}){
- string(ext.SpanKind): setSpanKind,
- string(ext.PeerHostIPv4): setPeerIPv4,
- string(ext.PeerPort): setPeerPort,
- string(ext.PeerService): setPeerService,
- TracerIPTagKey: removeTag,
-}
-
-// BuildZipkinThrift builds thrift span based on internal span.
-// TODO: (breaking change) move to transport/zipkin and make private.
-func BuildZipkinThrift(s *Span) *z.Span {
- span := &zipkinSpan{Span: s}
- span.handleSpecialTags()
- parentID := int64(span.context.parentID)
- var ptrParentID *int64
- if parentID != 0 {
- ptrParentID = &parentID
- }
- traceIDHigh := int64(span.context.traceID.High)
- var ptrTraceIDHigh *int64
- if traceIDHigh != 0 {
- ptrTraceIDHigh = &traceIDHigh
- }
- timestamp := utils.TimeToMicrosecondsSinceEpochInt64(span.startTime)
- duration := span.duration.Nanoseconds() / int64(time.Microsecond)
- endpoint := &z.Endpoint{
- ServiceName: span.tracer.serviceName,
- Ipv4: int32(span.tracer.hostIPv4)}
- thriftSpan := &z.Span{
- TraceID: int64(span.context.traceID.Low),
- TraceIDHigh: ptrTraceIDHigh,
- ID: int64(span.context.spanID),
- ParentID: ptrParentID,
- Name: span.operationName,
- Timestamp: &timestamp,
- Duration: &duration,
- Debug: span.context.IsDebug(),
- Annotations: buildAnnotations(span, endpoint),
- BinaryAnnotations: buildBinaryAnnotations(span, endpoint)}
- return thriftSpan
-}
-
-func buildAnnotations(span *zipkinSpan, endpoint *z.Endpoint) []*z.Annotation {
- // automatically adding 2 Zipkin CoreAnnotations
- annotations := make([]*z.Annotation, 0, 2+len(span.logs))
- var startLabel, endLabel string
- if span.spanKind == string(ext.SpanKindRPCClientEnum) {
- startLabel, endLabel = z.CLIENT_SEND, z.CLIENT_RECV
- } else if span.spanKind == string(ext.SpanKindRPCServerEnum) {
- startLabel, endLabel = z.SERVER_RECV, z.SERVER_SEND
- }
- if !span.startTime.IsZero() && startLabel != "" {
- start := &z.Annotation{
- Timestamp: utils.TimeToMicrosecondsSinceEpochInt64(span.startTime),
- Value: startLabel,
- Host: endpoint}
- annotations = append(annotations, start)
- if span.duration != 0 {
- endTs := span.startTime.Add(span.duration)
- end := &z.Annotation{
- Timestamp: utils.TimeToMicrosecondsSinceEpochInt64(endTs),
- Value: endLabel,
- Host: endpoint}
- annotations = append(annotations, end)
- }
- }
- for _, log := range span.logs {
- anno := &z.Annotation{
- Timestamp: utils.TimeToMicrosecondsSinceEpochInt64(log.Timestamp),
- Host: endpoint}
- if content, err := spanlog.MaterializeWithJSON(log.Fields); err == nil {
- anno.Value = truncateString(string(content), span.tracer.options.maxTagValueLength)
- } else {
- anno.Value = err.Error()
- }
- annotations = append(annotations, anno)
- }
- return annotations
-}
-
-func buildBinaryAnnotations(span *zipkinSpan, endpoint *z.Endpoint) []*z.BinaryAnnotation {
- // automatically adding local component or server/client address tag, and client version
- annotations := make([]*z.BinaryAnnotation, 0, 2+len(span.tags))
-
- if span.peerDefined() && span.isRPC() {
- peer := z.Endpoint{
- Ipv4: span.peer.Ipv4,
- Port: span.peer.Port,
- ServiceName: span.peer.ServiceName}
- label := z.CLIENT_ADDR
- if span.isRPCClient() {
- label = z.SERVER_ADDR
- }
- anno := &z.BinaryAnnotation{
- Key: label,
- Value: []byte{1},
- AnnotationType: z.AnnotationType_BOOL,
- Host: &peer}
- annotations = append(annotations, anno)
- }
- if !span.isRPC() {
- componentName := endpoint.ServiceName
- for _, tag := range span.tags {
- if tag.key == string(ext.Component) {
- componentName = stringify(tag.value)
- break
- }
- }
- local := &z.BinaryAnnotation{
- Key: z.LOCAL_COMPONENT,
- Value: []byte(componentName),
- AnnotationType: z.AnnotationType_STRING,
- Host: endpoint}
- annotations = append(annotations, local)
- }
- for _, tag := range span.tags {
- // "Special tags" are already handled by this point, we'd be double reporting the
- // tags if we don't skip here
- if _, ok := specialTagHandlers[tag.key]; ok {
- continue
- }
- if anno := buildBinaryAnnotation(tag.key, tag.value, span.tracer.options.maxTagValueLength, nil); anno != nil {
- annotations = append(annotations, anno)
- }
- }
- return annotations
-}
-
-func buildBinaryAnnotation(key string, val interface{}, maxTagValueLength int, endpoint *z.Endpoint) *z.BinaryAnnotation {
- bann := &z.BinaryAnnotation{Key: key, Host: endpoint}
- if value, ok := val.(string); ok {
- bann.Value = []byte(truncateString(value, maxTagValueLength))
- bann.AnnotationType = z.AnnotationType_STRING
- } else if value, ok := val.([]byte); ok {
- if len(value) > maxTagValueLength {
- value = value[:maxTagValueLength]
- }
- bann.Value = value
- bann.AnnotationType = z.AnnotationType_BYTES
- } else if value, ok := val.(int32); ok && allowPackedNumbers {
- bann.Value = int32ToBytes(value)
- bann.AnnotationType = z.AnnotationType_I32
- } else if value, ok := val.(int64); ok && allowPackedNumbers {
- bann.Value = int64ToBytes(value)
- bann.AnnotationType = z.AnnotationType_I64
- } else if value, ok := val.(int); ok && allowPackedNumbers {
- bann.Value = int64ToBytes(int64(value))
- bann.AnnotationType = z.AnnotationType_I64
- } else if value, ok := val.(bool); ok {
- bann.Value = []byte{boolToByte(value)}
- bann.AnnotationType = z.AnnotationType_BOOL
- } else {
- value := stringify(val)
- bann.Value = []byte(truncateString(value, maxTagValueLength))
- bann.AnnotationType = z.AnnotationType_STRING
- }
- return bann
-}
-
-func stringify(value interface{}) string {
- if s, ok := value.(string); ok {
- return s
- }
- return fmt.Sprintf("%+v", value)
-}
-
-func truncateString(value string, maxLength int) string {
- // we ignore the problem of utf8 runes possibly being sliced in the middle,
- // as it is rather expensive to iterate through each tag just to find rune
- // boundaries.
- if len(value) > maxLength {
- return value[:maxLength]
- }
- return value
-}
-
-func boolToByte(b bool) byte {
- if b {
- return 1
- }
- return 0
-}
-
-// int32ToBytes converts int32 to bytes.
-func int32ToBytes(i int32) []byte {
- buf := make([]byte, 4)
- binary.BigEndian.PutUint32(buf, uint32(i))
- return buf
-}
-
-// int64ToBytes converts int64 to bytes.
-func int64ToBytes(i int64) []byte {
- buf := make([]byte, 8)
- binary.BigEndian.PutUint64(buf, uint64(i))
- return buf
-}
-
-type zipkinSpan struct {
- *Span
-
- // peer points to the peer service participating in this span,
- // e.g. the Client if this span is a server span,
- // or Server if this span is a client span
- peer struct {
- Ipv4 int32
- Port int16
- ServiceName string
- }
-
- // used to distinguish local vs. RPC Server vs. RPC Client spans
- spanKind string
-}
-
-func (s *zipkinSpan) handleSpecialTags() {
- s.Lock()
- defer s.Unlock()
- if s.firstInProcess {
- // append the process tags
- s.tags = append(s.tags, s.tracer.tags...)
- }
- filteredTags := make([]Tag, 0, len(s.tags))
- for _, tag := range s.tags {
- if handler, ok := specialTagHandlers[tag.key]; ok {
- handler(s, tag.value)
- } else {
- filteredTags = append(filteredTags, tag)
- }
- }
- s.tags = filteredTags
-}
-
-func setSpanKind(s *zipkinSpan, value interface{}) {
- if val, ok := value.(string); ok {
- s.spanKind = val
- return
- }
- if val, ok := value.(ext.SpanKindEnum); ok {
- s.spanKind = string(val)
- }
-}
-
-func setPeerIPv4(s *zipkinSpan, value interface{}) {
- if val, ok := value.(string); ok {
- if ip, err := utils.ParseIPToUint32(val); err == nil {
- s.peer.Ipv4 = int32(ip)
- return
- }
- }
- if val, ok := value.(uint32); ok {
- s.peer.Ipv4 = int32(val)
- return
- }
- if val, ok := value.(int32); ok {
- s.peer.Ipv4 = val
- }
-}
-
-func setPeerPort(s *zipkinSpan, value interface{}) {
- if val, ok := value.(string); ok {
- if port, err := utils.ParsePort(val); err == nil {
- s.peer.Port = int16(port)
- return
- }
- }
- if val, ok := value.(uint16); ok {
- s.peer.Port = int16(val)
- return
- }
- if val, ok := value.(int); ok {
- s.peer.Port = int16(val)
- }
-}
-
-func setPeerService(s *zipkinSpan, value interface{}) {
- if val, ok := value.(string); ok {
- s.peer.ServiceName = val
- }
-}
-
-func removeTag(s *zipkinSpan, value interface{}) {}
-
-func (s *zipkinSpan) peerDefined() bool {
- return s.peer.ServiceName != "" || s.peer.Ipv4 != 0 || s.peer.Port != 0
-}
-
-func (s *zipkinSpan) isRPC() bool {
- s.RLock()
- defer s.RUnlock()
- return s.spanKind == string(ext.SpanKindRPCClientEnum) || s.spanKind == string(ext.SpanKindRPCServerEnum)
-}
-
-func (s *zipkinSpan) isRPCClient() bool {
- s.RLock()
- defer s.RUnlock()
- return s.spanKind == string(ext.SpanKindRPCClientEnum)
-}
diff --git a/vendor/github.com/uber/jaeger-lib/LICENSE b/vendor/github.com/uber/jaeger-lib/LICENSE
deleted file mode 100644
index 261eeb9e9..000000000
--- a/vendor/github.com/uber/jaeger-lib/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/counter.go b/vendor/github.com/uber/jaeger-lib/metrics/counter.go
deleted file mode 100644
index 2a6a43efd..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/counter.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-// Counter tracks the number of times an event has occurred
-type Counter interface {
- // Inc adds the given value to the counter.
- Inc(int64)
-}
-
-// NullCounter counter that does nothing
-var NullCounter Counter = nullCounter{}
-
-type nullCounter struct{}
-
-func (nullCounter) Inc(int64) {}
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/factory.go b/vendor/github.com/uber/jaeger-lib/metrics/factory.go
deleted file mode 100644
index 0ead061eb..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/factory.go
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-import (
- "time"
-)
-
-// NSOptions defines the name and tags map associated with a factory namespace
-type NSOptions struct {
- Name string
- Tags map[string]string
-}
-
-// Options defines the information associated with a metric
-type Options struct {
- Name string
- Tags map[string]string
- Help string
-}
-
-// TimerOptions defines the information associated with a metric
-type TimerOptions struct {
- Name string
- Tags map[string]string
- Help string
- Buckets []time.Duration
-}
-
-// HistogramOptions defines the information associated with a metric
-type HistogramOptions struct {
- Name string
- Tags map[string]string
- Help string
- Buckets []float64
-}
-
-// Factory creates new metrics
-type Factory interface {
- Counter(metric Options) Counter
- Timer(metric TimerOptions) Timer
- Gauge(metric Options) Gauge
- Histogram(metric HistogramOptions) Histogram
-
- // Namespace returns a nested metrics factory.
- Namespace(scope NSOptions) Factory
-}
-
-// NullFactory is a metrics factory that returns NullCounter, NullTimer, and NullGauge.
-var NullFactory Factory = nullFactory{}
-
-type nullFactory struct{}
-
-func (nullFactory) Counter(options Options) Counter {
- return NullCounter
-}
-func (nullFactory) Timer(options TimerOptions) Timer {
- return NullTimer
-}
-func (nullFactory) Gauge(options Options) Gauge {
- return NullGauge
-}
-func (nullFactory) Histogram(options HistogramOptions) Histogram {
- return NullHistogram
-}
-func (nullFactory) Namespace(scope NSOptions) Factory { return NullFactory }
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/gauge.go b/vendor/github.com/uber/jaeger-lib/metrics/gauge.go
deleted file mode 100644
index 3c606391a..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/gauge.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-// Gauge returns instantaneous measurements of something as an int64 value
-type Gauge interface {
- // Update the gauge to the value passed in.
- Update(int64)
-}
-
-// NullGauge gauge that does nothing
-var NullGauge Gauge = nullGauge{}
-
-type nullGauge struct{}
-
-func (nullGauge) Update(int64) {}
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/histogram.go b/vendor/github.com/uber/jaeger-lib/metrics/histogram.go
deleted file mode 100644
index d3bd6174f..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/histogram.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2018 The Jaeger 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 metrics
-
-// Histogram that keeps track of a distribution of values.
-type Histogram interface {
- // Records the value passed in.
- Record(float64)
-}
-
-// NullHistogram that does nothing
-var NullHistogram Histogram = nullHistogram{}
-
-type nullHistogram struct{}
-
-func (nullHistogram) Record(float64) {}
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/keys.go b/vendor/github.com/uber/jaeger-lib/metrics/keys.go
deleted file mode 100644
index c24445a10..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/keys.go
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-import (
- "sort"
-)
-
-// GetKey converts name+tags into a single string of the form
-// "name|tag1=value1|...|tagN=valueN", where tag names are
-// sorted alphabetically.
-func GetKey(name string, tags map[string]string, tagsSep string, tagKVSep string) string {
- keys := make([]string, 0, len(tags))
- for k := range tags {
- keys = append(keys, k)
- }
- sort.Strings(keys)
- key := name
- for _, k := range keys {
- key = key + tagsSep + k + tagKVSep + tags[k]
- }
- return key
-}
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/metrics.go b/vendor/github.com/uber/jaeger-lib/metrics/metrics.go
deleted file mode 100644
index 0df0c662e..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/metrics.go
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-import (
- "fmt"
- "reflect"
- "strconv"
- "strings"
-)
-
-// MustInit initializes the passed in metrics and initializes its fields using the passed in factory.
-//
-// It uses reflection to initialize a struct containing metrics fields
-// by assigning new Counter/Gauge/Timer values with the metric name retrieved
-// from the `metric` tag and stats tags retrieved from the `tags` tag.
-//
-// Note: all fields of the struct must be exported, have a `metric` tag, and be
-// of type Counter or Gauge or Timer.
-//
-// Errors during Init lead to a panic.
-func MustInit(metrics interface{}, factory Factory, globalTags map[string]string) {
- if err := Init(metrics, factory, globalTags); err != nil {
- panic(err.Error())
- }
-}
-
-// Init does the same as MustInit, but returns an error instead of
-// panicking.
-func Init(m interface{}, factory Factory, globalTags map[string]string) error {
- // Allow user to opt out of reporting metrics by passing in nil.
- if factory == nil {
- factory = NullFactory
- }
-
- counterPtrType := reflect.TypeOf((*Counter)(nil)).Elem()
- gaugePtrType := reflect.TypeOf((*Gauge)(nil)).Elem()
- timerPtrType := reflect.TypeOf((*Timer)(nil)).Elem()
- histogramPtrType := reflect.TypeOf((*Histogram)(nil)).Elem()
-
- v := reflect.ValueOf(m).Elem()
- t := v.Type()
- for i := 0; i < t.NumField(); i++ {
- tags := make(map[string]string)
- for k, v := range globalTags {
- tags[k] = v
- }
- var buckets []float64
- field := t.Field(i)
- metric := field.Tag.Get("metric")
- if metric == "" {
- return fmt.Errorf("Field %s is missing a tag 'metric'", field.Name)
- }
- if tagString := field.Tag.Get("tags"); tagString != "" {
- tagPairs := strings.Split(tagString, ",")
- for _, tagPair := range tagPairs {
- tag := strings.Split(tagPair, "=")
- if len(tag) != 2 {
- return fmt.Errorf(
- "Field [%s]: Tag [%s] is not of the form key=value in 'tags' string [%s]",
- field.Name, tagPair, tagString)
- }
- tags[tag[0]] = tag[1]
- }
- }
- if bucketString := field.Tag.Get("buckets"); bucketString != "" {
- if field.Type.AssignableTo(timerPtrType) {
- // TODO: Parse timer duration buckets
- return fmt.Errorf(
- "Field [%s]: Buckets are not currently initialized for timer metrics",
- field.Name)
- } else if field.Type.AssignableTo(histogramPtrType) {
- bucketValues := strings.Split(bucketString, ",")
- for _, bucket := range bucketValues {
- b, err := strconv.ParseFloat(bucket, 64)
- if err != nil {
- return fmt.Errorf(
- "Field [%s]: Bucket [%s] could not be converted to float64 in 'buckets' string [%s]",
- field.Name, bucket, bucketString)
- }
- buckets = append(buckets, b)
- }
- } else {
- return fmt.Errorf(
- "Field [%s]: Buckets should only be defined for Timer and Histogram metric types",
- field.Name)
- }
- }
- help := field.Tag.Get("help")
- var obj interface{}
- if field.Type.AssignableTo(counterPtrType) {
- obj = factory.Counter(Options{
- Name: metric,
- Tags: tags,
- Help: help,
- })
- } else if field.Type.AssignableTo(gaugePtrType) {
- obj = factory.Gauge(Options{
- Name: metric,
- Tags: tags,
- Help: help,
- })
- } else if field.Type.AssignableTo(timerPtrType) {
- // TODO: Add buckets once parsed (see TODO above)
- obj = factory.Timer(TimerOptions{
- Name: metric,
- Tags: tags,
- Help: help,
- })
- } else if field.Type.AssignableTo(histogramPtrType) {
- obj = factory.Histogram(HistogramOptions{
- Name: metric,
- Tags: tags,
- Help: help,
- Buckets: buckets,
- })
- } else {
- return fmt.Errorf(
- "Field %s is not a pointer to timer, gauge, or counter",
- field.Name)
- }
- v.Field(i).Set(reflect.ValueOf(obj))
- }
- return nil
-}
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/stopwatch.go b/vendor/github.com/uber/jaeger-lib/metrics/stopwatch.go
deleted file mode 100644
index 4a8abdb53..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/stopwatch.go
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-import (
- "time"
-)
-
-// StartStopwatch begins recording the executing time of an event, returning
-// a Stopwatch that should be used to stop the recording the time for
-// that event. Multiple events can be occurring simultaneously each
-// represented by different active Stopwatches
-func StartStopwatch(timer Timer) Stopwatch {
- return Stopwatch{t: timer, start: time.Now()}
-}
-
-// A Stopwatch tracks the execution time of a specific event
-type Stopwatch struct {
- t Timer
- start time.Time
-}
-
-// Stop stops executing of the stopwatch and records the amount of elapsed time
-func (s Stopwatch) Stop() {
- s.t.Record(s.ElapsedTime())
-}
-
-// ElapsedTime returns the amount of elapsed time (in time.Duration)
-func (s Stopwatch) ElapsedTime() time.Duration {
- return time.Since(s.start)
-}
diff --git a/vendor/github.com/uber/jaeger-lib/metrics/timer.go b/vendor/github.com/uber/jaeger-lib/metrics/timer.go
deleted file mode 100644
index e18d222ab..000000000
--- a/vendor/github.com/uber/jaeger-lib/metrics/timer.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// 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 metrics
-
-import (
- "time"
-)
-
-// Timer accumulates observations about how long some operation took,
-// and also maintains a historgam of percentiles.
-type Timer interface {
- // Records the time passed in.
- Record(time.Duration)
-}
-
-// NullTimer timer that does nothing
-var NullTimer Timer = nullTimer{}
-
-type nullTimer struct{}
-
-func (nullTimer) Record(time.Duration) {}