From 5ae502f326666878b60ac5c6555419ab0f650dce Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Tue, 2 May 2023 11:29:13 -0700 Subject: [PATCH 01/12] restructure part 1 --- lightstep/sdk/metric/asyncinst.go | 58 +++--- lightstep/sdk/metric/go.mod | 14 +- lightstep/sdk/metric/go.sum | 28 +-- .../sdk/metric/internal/asyncstate/async.go | 17 +- .../metric/internal/asyncstate/async_test.go | 4 +- .../metric/internal/asyncstate/callback.go | 14 +- .../sdk/metric/internal/syncstate/sync.go | 196 +++++++++++------- lightstep/sdk/metric/meter.go | 6 +- lightstep/sdk/metric/provider.go | 3 + lightstep/sdk/metric/syncinst.go | 88 +++++--- 10 files changed, 250 insertions(+), 178 deletions(-) diff --git a/lightstep/sdk/metric/asyncinst.go b/lightstep/sdk/metric/asyncinst.go index 88fec6e8..54c44075 100644 --- a/lightstep/sdk/metric/asyncinst.go +++ b/lightstep/sdk/metric/asyncinst.go @@ -20,56 +20,58 @@ import ( "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/internal/asyncstate" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/number" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/sdkinstrument" - "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" - "go.opentelemetry.io/otel/metric/instrument" ) type ( int64ObservableCounter struct { - instrument.Int64ObservableCounter + metric.Int64ObservableCounter *asyncstate.Observer } int64ObservableUpDownCounter struct { - instrument.Int64ObservableUpDownCounter + metric.Int64ObservableUpDownCounter *asyncstate.Observer } int64ObservableGauge struct { - instrument.Int64ObservableGauge + metric.Int64ObservableGauge *asyncstate.Observer } float64ObservableCounter struct { - instrument.Float64ObservableCounter + metric.Float64ObservableCounter *asyncstate.Observer } float64ObservableUpDownCounter struct { - instrument.Float64ObservableUpDownCounter + metric.Float64ObservableUpDownCounter *asyncstate.Observer } float64ObservableGauge struct { - instrument.Float64ObservableGauge + metric.Float64ObservableGauge *asyncstate.Observer } intObserver struct { + metric.Int64Observer + observer metric.Observer - observable instrument.Int64Observable + observable metric.Int64Observable } floatObserver struct { + metric.Float64Observer + observer metric.Observer - observable instrument.Float64Observable + observable metric.Float64Observable } ) -func (io intObserver) Observe(value int64, attrs ...attribute.KeyValue) { - io.observer.ObserveInt64(io.observable, value, attrs...) +func (io intObserver) Observe(value int64, options ...metric.ObserveOption) { + io.observer.ObserveInt64(io.observable, value, options...) } -func (fo floatObserver) Observe(value float64, attrs ...attribute.KeyValue) { - fo.observer.ObserveFloat64(fo.observable, value, attrs...) +func (fo floatObserver) Observe(value float64, options ...metric.ObserveOption) { + fo.observer.ObserveFloat64(fo.observable, value, options...) } -func registerIntCallbacks[T instrument.Int64Observable](m *meter, inst T, cbs []instrument.Int64Callback) { +func registerIntCallbacks[T metric.Int64Observable](m *meter, inst T, cbs []metric.Int64Callback) { for _, cb := range cbs { _, _ = m.RegisterCallback(func(ctx context.Context, obs metric.Observer) error { return cb(ctx, intObserver{ @@ -80,7 +82,7 @@ func registerIntCallbacks[T instrument.Int64Observable](m *meter, inst T, cbs [] } } -func registerFloatCallbacks[T instrument.Float64Observable](m *meter, inst T, cbs []instrument.Float64Callback) { +func registerFloatCallbacks[T metric.Float64Observable](m *meter, inst T, cbs []metric.Float64Callback) { for _, cb := range cbs { _, _ = m.RegisterCallback(func(ctx context.Context, obs metric.Observer) error { return cb(ctx, floatObserver{ @@ -91,8 +93,8 @@ func registerFloatCallbacks[T instrument.Float64Observable](m *meter, inst T, cb } } -func (m *meter) Int64ObservableCounter(name string, opts ...instrument.Int64ObserverOption) (instrument.Int64ObservableCounter, error) { - cfg := instrument.NewInt64ObserverConfig(opts...) +func (m *meter) Int64ObservableCounter(name string, opts ...metric.Int64ObservableCounterOption) (metric.Int64ObservableCounter, error) { + cfg := metric.NewInt64ObservableCounterConfig(opts...) impl, err := m.asynchronousInstrument(name, cfg, number.Int64Kind, sdkinstrument.AsyncCounter) inst := int64ObservableCounter{ Observer: impl, @@ -101,8 +103,8 @@ func (m *meter) Int64ObservableCounter(name string, opts ...instrument.Int64Obse return inst, err } -func (m *meter) Int64ObservableUpDownCounter(name string, opts ...instrument.Int64ObserverOption) (instrument.Int64ObservableUpDownCounter, error) { - cfg := instrument.NewInt64ObserverConfig(opts...) +func (m *meter) Int64ObservableUpDownCounter(name string, opts ...metric.Int64ObservableUpDownCounterOption) (metric.Int64ObservableUpDownCounter, error) { + cfg := metric.NewInt64ObservableUpDownCounterConfig(opts...) impl, err := m.asynchronousInstrument(name, cfg, number.Int64Kind, sdkinstrument.AsyncUpDownCounter) inst := int64ObservableUpDownCounter{ Observer: impl, @@ -111,8 +113,8 @@ func (m *meter) Int64ObservableUpDownCounter(name string, opts ...instrument.Int return inst, err } -func (m *meter) Int64ObservableGauge(name string, opts ...instrument.Int64ObserverOption) (instrument.Int64ObservableGauge, error) { - cfg := instrument.NewInt64ObserverConfig(opts...) +func (m *meter) Int64ObservableGauge(name string, opts ...metric.Int64ObservableGaugeOption) (metric.Int64ObservableGauge, error) { + cfg := metric.NewInt64ObservableGaugeConfig(opts...) impl, err := m.asynchronousInstrument(name, cfg, number.Int64Kind, sdkinstrument.AsyncGauge) inst := int64ObservableGauge{ Observer: impl, @@ -121,8 +123,8 @@ func (m *meter) Int64ObservableGauge(name string, opts ...instrument.Int64Observ return inst, err } -func (m *meter) Float64ObservableCounter(name string, opts ...instrument.Float64ObserverOption) (instrument.Float64ObservableCounter, error) { - cfg := instrument.NewFloat64ObserverConfig(opts...) +func (m *meter) Float64ObservableCounter(name string, opts ...metric.Float64ObservableCounterOption) (metric.Float64ObservableCounter, error) { + cfg := metric.NewFloat64ObservableCounterConfig(opts...) impl, err := m.asynchronousInstrument(name, cfg, number.Float64Kind, sdkinstrument.AsyncCounter) inst := float64ObservableCounter{ Observer: impl, @@ -131,8 +133,8 @@ func (m *meter) Float64ObservableCounter(name string, opts ...instrument.Float64 return inst, err } -func (m *meter) Float64ObservableUpDownCounter(name string, opts ...instrument.Float64ObserverOption) (instrument.Float64ObservableUpDownCounter, error) { - cfg := instrument.NewFloat64ObserverConfig(opts...) +func (m *meter) Float64ObservableUpDownCounter(name string, opts ...metric.Float64ObservableUpDownCounterOption) (metric.Float64ObservableUpDownCounter, error) { + cfg := metric.NewFloat64ObservableUpDownCounterConfig(opts...) impl, err := m.asynchronousInstrument(name, cfg, number.Float64Kind, sdkinstrument.AsyncUpDownCounter) inst := float64ObservableUpDownCounter{ Observer: impl, @@ -141,8 +143,8 @@ func (m *meter) Float64ObservableUpDownCounter(name string, opts ...instrument.F return inst, err } -func (m *meter) Float64ObservableGauge(name string, opts ...instrument.Float64ObserverOption) (instrument.Float64ObservableGauge, error) { - cfg := instrument.NewFloat64ObserverConfig(opts...) +func (m *meter) Float64ObservableGauge(name string, opts ...metric.Float64ObservableGaugeOption) (metric.Float64ObservableGauge, error) { + cfg := metric.NewFloat64ObservableGaugeConfig(opts...) impl, err := m.asynchronousInstrument(name, cfg, number.Float64Kind, sdkinstrument.AsyncGauge) inst := float64ObservableGauge{ Observer: impl, diff --git a/lightstep/sdk/metric/go.mod b/lightstep/sdk/metric/go.mod index c1b5d775..15946ed9 100644 --- a/lightstep/sdk/metric/go.mod +++ b/lightstep/sdk/metric/go.mod @@ -5,16 +5,16 @@ go 1.18 require ( github.com/cenkalti/backoff/v4 v4.2.0 github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 - github.com/go-logr/logr v1.2.3 + github.com/go-logr/logr v1.2.4 github.com/go-logr/stdr v1.2.2 github.com/golang/mock v1.6.0 github.com/google/go-cmp v0.5.9 github.com/lightstep/go-expohisto v1.0.0 github.com/stretchr/testify v1.8.2 - go.opentelemetry.io/otel v1.14.0 - go.opentelemetry.io/otel/metric v0.37.0 - go.opentelemetry.io/otel/sdk v1.14.0 - go.opentelemetry.io/otel/sdk/metric v0.37.0 + go.opentelemetry.io/otel v1.15.0 + go.opentelemetry.io/otel/metric v0.38.0 + go.opentelemetry.io/otel/sdk v1.15.0 + go.opentelemetry.io/otel/sdk/metric v0.38.0 go.opentelemetry.io/proto/otlp v0.19.0 go.uber.org/multierr v1.8.0 golang.org/x/sync v0.1.0 @@ -30,10 +30,10 @@ require ( github.com/kr/pretty v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.9.0 // indirect - go.opentelemetry.io/otel/trace v1.14.0 // indirect + go.opentelemetry.io/otel/trace v1.15.0 // indirect go.uber.org/atomic v1.7.0 // indirect golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect + golang.org/x/sys v0.7.0 // indirect golang.org/x/text v0.7.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/lightstep/sdk/metric/go.sum b/lightstep/sdk/metric/go.sum index fbac4257..45b97abe 100644 --- a/lightstep/sdk/metric/go.sum +++ b/lightstep/sdk/metric/go.sum @@ -71,8 +71,8 @@ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -181,16 +181,16 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= -go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= -go.opentelemetry.io/otel/metric v0.37.0 h1:pHDQuLQOZwYD+Km0eb657A25NaRzy0a+eLyKfDXedEs= -go.opentelemetry.io/otel/metric v0.37.0/go.mod h1:DmdaHfGt54iV6UKxsV9slj2bBRJcKC1B1uvDLIioc1s= -go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= -go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= -go.opentelemetry.io/otel/sdk/metric v0.37.0 h1:haYBBtZZxiI3ROwSmkZnI+d0+AVzBWeviuYQDeBWosU= -go.opentelemetry.io/otel/sdk/metric v0.37.0/go.mod h1:mO2WV1AZKKwhwHTV3AKOoIEb9LbUaENZDuGUQd+j4A0= -go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= -go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= +go.opentelemetry.io/otel v1.15.0 h1:NIl24d4eiLJPM0vKn4HjLYM+UZf6gSfi9Z+NmCxkWbk= +go.opentelemetry.io/otel v1.15.0/go.mod h1:qfwLEbWhLPk5gyWrne4XnF0lC8wtywbuJbgfAE3zbek= +go.opentelemetry.io/otel/metric v0.38.0 h1:vv/Nv/44S3GzMMmeUhaesBKsAenE6xLkTVWL+zuv30w= +go.opentelemetry.io/otel/metric v0.38.0/go.mod h1:uAtxN5hl8aXh5irD8afBtSwQU5Zjg64WWSz6KheZxBg= +go.opentelemetry.io/otel/sdk v1.15.0 h1:jZTCkRRd08nxD6w7rIaZeDNGZGGQstH3SfLQ3ZsKICk= +go.opentelemetry.io/otel/sdk v1.15.0/go.mod h1:XDEMrYWzJ4YlC17i6Luih2lwDw2j6G0PkUfr1ZqE+rQ= +go.opentelemetry.io/otel/sdk/metric v0.38.0 h1:c/6/VZihe+5ink8ERufY1/o1QtnoON+k1YonZF2jYR4= +go.opentelemetry.io/otel/sdk/metric v0.38.0/go.mod h1:tqrguFLaGJ3i+uyG67bzxJgsG6Y2bL6HmAn9V/cVRRo= +go.opentelemetry.io/otel/trace v1.15.0 h1:5Fwje4O2ooOxkfyqI/kJwxWotggDLix4BSAvpE1wlpo= +go.opentelemetry.io/otel/trace v1.15.0/go.mod h1:CUsmE2Ht1CRkvE8OsMESvraoZrrcgD1J2W8GV1ev0Y4= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -311,8 +311,8 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/lightstep/sdk/metric/internal/asyncstate/async.go b/lightstep/sdk/metric/internal/asyncstate/async.go index a5d867dd..8078a721 100644 --- a/lightstep/sdk/metric/internal/asyncstate/async.go +++ b/lightstep/sdk/metric/internal/asyncstate/async.go @@ -25,7 +25,7 @@ import ( "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/sdkinstrument" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/metric/instrument" + "go.opentelemetry.io/otel/metric" ) type ( @@ -47,7 +47,7 @@ type ( // Observer is the implementation object associated with one // asynchronous instrument. Observer struct { - instrument.Asynchronous + metric.Observable // opaque is used to ensure that callbacks are // registered with instruments from the same provider. @@ -115,7 +115,7 @@ func (obs *Observer) SnapshotAndProcess(state *State) { } } -func (obs *Observer) getOrCreate(cs *callbackState, attrs []attribute.KeyValue) viewstate.Accumulator { +func (obs *Observer) getOrCreate(cs *callbackState, options []metric.ObserveOption) viewstate.Accumulator { comp := obs.compiled[cs.state.pipe] if comp == nil { @@ -133,11 +133,8 @@ func (obs *Observer) getOrCreate(cs *callbackState, attrs []attribute.KeyValue) cs.state.store[obs] = imap } - // Copy the attribute list in case the caller has multiple - // concurrent callers. - acpy := make([]attribute.KeyValue, len(attrs)) - copy(acpy, attrs) - aset := attribute.NewSet(acpy...) + ocfg := metric.NewObserveConfig(options) + aset := ocfg.Attributes() se, has := imap[aset] if !has { se = comp.NewAccumulator(aset) @@ -146,7 +143,7 @@ func (obs *Observer) getOrCreate(cs *callbackState, attrs []attribute.KeyValue) return se } -func Observe[N number.Any, Traits number.Traits[N]](inst instrument.Asynchronous, cs *callbackState, value N, attrs []attribute.KeyValue) { +func Observe[N number.Any, Traits number.Traits[N]](inst metric.Observable, cs *callbackState, value N, options []metric.ObserveOption) { cb := cs.getCallback() if cb == nil { otel.Handle(fmt.Errorf("async instrument used after callback return")) @@ -167,7 +164,7 @@ func Observe[N number.Any, Traits number.Traits[N]](inst instrument.Asynchronous return } - if acc := obs.getOrCreate(cs, attrs); acc != nil { + if acc := obs.getOrCreate(cs, options); acc != nil { acc.(viewstate.Updater[N]).Update(value) } } diff --git a/lightstep/sdk/metric/internal/asyncstate/async_test.go b/lightstep/sdk/metric/internal/asyncstate/async_test.go index 8aa64f01..0e3db9ba 100644 --- a/lightstep/sdk/metric/internal/asyncstate/async_test.go +++ b/lightstep/sdk/metric/internal/asyncstate/async_test.go @@ -100,12 +100,12 @@ func testState(num int) *State { type intObserver struct { *Observer - instrument.Int64Observable + metric.Int64Observable } type floatObserver struct { *Observer - instrument.Float64Observable + metric.Float64Observable } func testIntObserver(tsdk *testSDK, name string, ik sdkinstrument.Kind) intObserver { diff --git a/lightstep/sdk/metric/internal/asyncstate/callback.go b/lightstep/sdk/metric/internal/asyncstate/callback.go index 06c39f72..e615215f 100644 --- a/lightstep/sdk/metric/internal/asyncstate/callback.go +++ b/lightstep/sdk/metric/internal/asyncstate/callback.go @@ -20,9 +20,7 @@ import ( "sync" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/number" - "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" - "go.opentelemetry.io/otel/metric/instrument" ) // Callback is the implementation object associated with one @@ -38,7 +36,7 @@ type Callback struct { // NewCallback returns a new Callback; this checks that each of the // provided instruments belongs to the same meter provider. -func NewCallback(instruments []instrument.Asynchronous, opaque interface{}, function metric.Callback) (*Callback, error) { +func NewCallback(instruments []metric.Observer, opaque interface{}, function metric.Callback) (*Callback, error) { if len(instruments) == 0 { return nil, fmt.Errorf("asynchronous callback without instruments") } @@ -81,6 +79,8 @@ func (c *Callback) Run(ctx context.Context, state *State) { // callbackState is used to lookup the current callback and // pipeline from within an executing callback function. type callbackState struct { + metric.Observer + // lock protects callback, see invalidate() and getCallback() lock sync.Mutex @@ -104,10 +104,10 @@ func (cs *callbackState) getCallback() *Callback { return cs.callback } -func (cs *callbackState) ObserveFloat64(obsrv instrument.Float64Observable, value float64, attributes ...attribute.KeyValue) { - Observe[float64, number.Float64Traits](obsrv, cs, value, attributes) +func (cs *callbackState) ObserveFloat64(obsrv metric.Float64Observable, value float64, options ...metric.ObserveOption) { + Observe[float64, number.Float64Traits](obsrv, cs, value, options) } -func (cs *callbackState) ObserveInt64(obsrv instrument.Int64Observable, value int64, attributes ...attribute.KeyValue) { - Observe[int64, number.Int64Traits](obsrv, cs, value, attributes) +func (cs *callbackState) ObserveInt64(obsrv metric.Int64Observable, value int64, options ...metric.ObserveOption) { + Observe[int64, number.Int64Traits](obsrv, cs, value, options) } diff --git a/lightstep/sdk/metric/internal/syncstate/sync.go b/lightstep/sdk/metric/internal/syncstate/sync.go index c9fa09e9..0eb3d6bf 100644 --- a/lightstep/sdk/metric/internal/syncstate/sync.go +++ b/lightstep/sdk/metric/internal/syncstate/sync.go @@ -27,7 +27,7 @@ import ( "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/number" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/sdkinstrument" "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/metric/instrument" + "go.opentelemetry.io/otel/metric" ) var overflowAttributesFingerprint = fingerprintAttributes(pipeline.OverflowAttributes) @@ -40,8 +40,6 @@ var overflowAttributesFingerprint = fingerprintAttributes(pipeline.OverflowAttri // method called whenever they are removed from the map, which can // happen when any reader collects the instrument. type Observer struct { - instrument.Synchronous - // descriptor is the API-provided descriptor for the // instrument, unmodified by views. descriptor sdkinstrument.Descriptor @@ -58,8 +56,41 @@ type Observer struct { // lock protects current. lock sync.RWMutex - // current is protected by lock. - current map[uint64]*record + // currentFP is protected by lock. + currentFP mapByFP + + // currentAS is protected by lock. + currentAS mapByAS +} + +// mapByFP is a map of records where fingerprint-based lookup is being used. +type mapByFP map[uint64]*record + +// mapByAS is a map of records where attribute.Set-based lookup is being used. +type mapByAS map[attribute.Set]*record + +type anyMap[Key any] interface { + Delete(Key) + Put(Key, *record) +} + +var _ anyMap[uint64] = mapByFP{} +var _ anyMap[attribute.Set] = mapByAS{} + +func (m mapByFP) Delete(key uint64) { + delete(m, key) +} + +func (m mapByFP) Put(key uint64, rec *record) { + m[key] = rec +} + +func (m mapByAS) Delete(key attribute.Set) { + delete(m, key) +} + +func (m mapByAS) Put(key attribute.Set, rec *record) { + m[key] = rec } // New builds a new synchronous instrument *Observer given the @@ -81,7 +112,8 @@ func New(desc sdkinstrument.Descriptor, performance sdkinstrument.Performance, _ performance = performance.Validate() return &Observer{ descriptor: desc, - current: map[uint64]*record{}, + currentFP: mapByFP{}, + currentAS: mapByAS{}, performance: performance, // Note that viewstate.Combine is used to eliminate @@ -96,6 +128,49 @@ func New(desc sdkinstrument.Descriptor, performance sdkinstrument.Performance, _ } } +func snapshotAndProcessInMap[Key any, Map anyMap[Key]](records Map, key Key, reclist *record, inst *Observer) { + // reclist is a list of records for this fingerprint. + var head *record + var tail *record + + // Scan reclist and modify the list. We're holding the + // lock giving exclusive access to the head-of-list + // and each next field, so the process here builds a new + // linked list after filtering records that are no longer + // in use. + for rec := reclist; rec != nil; rec = rec.next { + if inst.collect(rec) { + if head == nil { + // The first time a record will be kept, + // it becomes the head and tail. + head = rec + tail = rec + } else { + // Subsequently, update the tail of the + // list. Note that this creates a + // temporarily invalid list will be + // repaired outside the loop, below. + tail.next = rec + tail = rec + } + } + } + + // When no records are kept, delete the map entry. + if head == nil { + records.Delete(key) + return + } + + // Otherwise, terminate the list that was built. + tail.next = nil + + if head != reclist { + // If the head changes, update the map. + records.Put(key, head) + } +} + // SnapshotAndProcess calls SnapshotAndProcess() for all live // accumulators of this instrument. Inactive accumulators will be // subsequently removed from the map. @@ -103,53 +178,14 @@ func (inst *Observer) SnapshotAndProcess() { inst.lock.Lock() defer inst.lock.Unlock() - for key, reclist := range inst.current { - // reclist is a list of records for this fingerprint. - var head *record - var tail *record - - // Scan reclist and modify the list. We're holding the - // lock giving exclusive access to the head-of-list - // and each next field, so the process here builds a new - // linked list after filtering records that are no longer - // in use. - for rec := reclist; rec != nil; rec = rec.next { - if inst.collect(key, rec) { - if head == nil { - // The first time a record will be kept, - // it becomes the head and tail. - head = rec - tail = rec - } else { - // Subsequently, update the tail of the - // list. Note that this creates a - // temporarily invalid list will be - // repaired outside the loop, below. - tail.next = rec - tail = rec - } - } - } - - // When no records are kept, delete the map entry. - if head == nil { - delete(inst.current, key) - continue - } - - // Otherwise, terminate the list that was built. - tail.next = nil - - if head != reclist { - // If the head changes, update the map. - inst.current[key] = head - } + for key, reclist := range inst.currentFP { + snapshotAndProcessInMap(inst.currentFP, key, reclist, inst) } } // collect collects the record. When the record has been inactive for // the configured number of periods, it is removed from memory. -func (inst *Observer) collect(fp uint64, rec *record) bool { +func (inst *Observer) collect(rec *record) bool { if rec.normalCollect() { rec.inactiveCount = 0 return true @@ -312,16 +348,22 @@ func (rec *record) computeAttrsUnderLock(attrs []attribute.KeyValue) { rec.attrsList = acpy } -func (inst *Observer) ObserveInt64(ctx context.Context, num int64, attrs ...attribute.KeyValue) { - Observe[int64, number.Int64Traits](ctx, inst, num, attrs...) +func (inst *Observer) AddInt64(ctx context.Context, num int64, options ...metric.AddOption) { + Observe[int64, number.Int64Traits](ctx, inst, num, metric.NewAddConfig(options)) } -func (inst *Observer) ObserveFloat64(ctx context.Context, num float64, attrs ...attribute.KeyValue) { - Observe[float64, number.Float64Traits](ctx, inst, num, attrs...) +func (inst *Observer) AddFloat64(ctx context.Context, num float64, options ...metric.AddOption) { + Observe[float64, number.Float64Traits](ctx, inst, num, metric.NewAddConfig(options)) +} + +type anyConfig interface { + Attributes() attribute.Set + HasKeyValues() bool + KeyValues() []attribute.KeyValue } // Observe performs a generic update for any synchronous instrument. -func Observe[N number.Any, Traits number.Traits[N]](_ context.Context, inst *Observer, num N, attrs ...attribute.KeyValue) { +func Observe[N number.Any, Traits number.Traits[N]](_ context.Context, inst *Observer, num N, cfg anyConfig) { if inst == nil { // Instrument was completely disabled by the view. return @@ -333,9 +375,15 @@ func Observe[N number.Any, Traits number.Traits[N]](_ context.Context, inst *Obs return } - rec := acquireUninitialized[N](inst, attrs) + var rec *record defer rec.refMapped.unref() + if cfg.HasKeyValues() { + rec = acquireListUninitialized[N](inst, cfg.KeyValues()) + } else { + rec = acquireSetUninitialized[N](inst, cfg.Attributes()) + } + rec.readAccumulator().(viewstate.Updater[N]).Update(num) // Record was modified. @@ -436,16 +484,16 @@ func attributesEqual(a, b []attribute.KeyValue) bool { return true } -// acquireRead acquires the lock and searches for a `*record`. +// acquireListRead acquires the lock and searches for a `*record`. // This returns the overflow attributes and fingerprint in case the // the cardinality limit is reached. The caller should exchange their // fp and attrs for the ones returned by this call. -func acquireRead(inst *Observer, fp uint64, attrs []attribute.KeyValue) (uint64, []attribute.KeyValue, *record) { +func acquireListRead(inst *Observer, fp uint64, attrs []attribute.KeyValue) (uint64, []attribute.KeyValue, *record) { inst.lock.RLock() defer inst.lock.RUnlock() overflow := false - fp, attrs, rec := acquireReadLocked(inst, fp, attrs, &overflow) + fp, attrs, rec := acquireListReadLocked(inst, fp, attrs, &overflow) if rec != nil { return fp, attrs, rec @@ -457,11 +505,11 @@ func acquireRead(inst *Observer, fp uint64, attrs []attribute.KeyValue) (uint64, return fp, attrs, nil } // In which case fp and attrs are now the overflow attributes. - return acquireReadLocked(inst, fp, attrs, &overflow) + return acquireListReadLocked(inst, fp, attrs, &overflow) } -func acquireReadLocked(inst *Observer, fp uint64, attrs []attribute.KeyValue, overflow *bool) (uint64, []attribute.KeyValue, *record) { - rec := inst.current[fp] +func acquireListReadLocked(inst *Observer, fp uint64, attrs []attribute.KeyValue, overflow *bool) (uint64, []attribute.KeyValue, *record) { + rec := inst.currentFP[fp] // Potentially test for hash collisions. if !inst.performance.IgnoreCollisions { @@ -481,7 +529,7 @@ func acquireReadLocked(inst *Observer, fp uint64, attrs []attribute.KeyValue, ov // attribute set. Note this means we are performing // two map lookups for overflowing attributes and only // one lookup if the attribute set was preexisting. - if !*overflow && uint32(len(inst.current)) >= inst.performance.InstrumentCardinalityLimit-1 { + if !*overflow && uint32(len(inst.currentFP)) >= inst.performance.InstrumentCardinalityLimit-1 { // Use the overflow attributes, repeat. attrs = pipeline.OverflowAttributes fp = overflowAttributesFingerprint @@ -491,25 +539,25 @@ func acquireReadLocked(inst *Observer, fp uint64, attrs []attribute.KeyValue, ov return fp, attrs, nil } -// acquireUninitialized gets or creates a `*record` corresponding to +// acquireListUninitialized gets or creates a `*record` corresponding to // `attrs`, the input attributes. The returned record is mapped but // possibly not initialized. -func acquireUninitialized[N number.Any](inst *Observer, attrs []attribute.KeyValue) *record { +func acquireListUninitialized[N number.Any](inst *Observer, attrs []attribute.KeyValue) *record { fp := fingerprintAttributes(attrs) - // acquireRead may replace fp and attrs when there is overflow. + // acquireListRead may replace fp and attrs when there is overflow. var rec *record - fp, attrs, rec = acquireRead(inst, fp, attrs) + fp, attrs, rec = acquireListRead(inst, fp, attrs) if rec != nil { return rec } - return acquireNotfound[N](inst, fp, attrs) + return acquireListNotfound[N](inst, fp, attrs) } -// acquireNotfound is the code path taken when acquireRead does not +// acquireListNotfound is the code path taken when acquireRead does not // locate a record. -func acquireNotfound[N number.Any](inst *Observer, fp uint64, attrs []attribute.KeyValue) *record { +func acquireListNotfound[N number.Any](inst *Observer, fp uint64, attrs []attribute.KeyValue) *record { newRec := &record{ inst: inst, refMapped: newRefcountMapped(), @@ -517,7 +565,7 @@ func acquireNotfound[N number.Any](inst *Observer, fp uint64, attrs []attribute. newRec.computeAttrsUnderLock(attrs) for { - acquired, loaded := acquireWrite(inst, fp, newRec) + acquired, loaded := acquireListWrite(inst, fp, newRec) if !loaded { // When this happens, we are waiting for the call to delete() @@ -531,12 +579,12 @@ func acquireNotfound[N number.Any](inst *Observer, fp uint64, attrs []attribute. } } -// acquireWrite acquires the write lock and gets or sets a `*record`. -func acquireWrite(inst *Observer, fp uint64, newRec *record) (*record, bool) { +// acquireListWrite acquires the write lock and gets or sets a `*record`. +func acquireListWrite(inst *Observer, fp uint64, newRec *record) (*record, bool) { inst.lock.Lock() defer inst.lock.Unlock() - for oldRec := inst.current[fp]; oldRec != nil; oldRec = oldRec.next { + for oldRec := inst.currentFP[fp]; oldRec != nil; oldRec = oldRec.next { if inst.performance.IgnoreCollisions || attributesEqual(oldRec.attrsList, newRec.attrsList) { if oldRec.refMapped.ref() { @@ -547,7 +595,7 @@ func acquireWrite(inst *Observer, fp uint64, newRec *record) (*record, bool) { } } - newRec.next = inst.current[fp] - inst.current[fp] = newRec + newRec.next = inst.currentFP[fp] + inst.currentFP[fp] = newRec return newRec, true } diff --git a/lightstep/sdk/metric/meter.go b/lightstep/sdk/metric/meter.go index 7721ca1d..8bee7a78 100644 --- a/lightstep/sdk/metric/meter.go +++ b/lightstep/sdk/metric/meter.go @@ -26,7 +26,7 @@ import ( "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/sdkinstrument" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/metric" - "go.opentelemetry.io/otel/metric/instrument" + "go.opentelemetry.io/otel/metric/embedded" "go.opentelemetry.io/otel/sdk/instrumentation" ) @@ -36,6 +36,8 @@ type ( // produced by an instrumentation scope will use metric instruments from a // single meter. meter struct { + embedded.Meter + library instrumentation.Library provider *MeterProvider compilers pipeline.Register[*viewstate.Compiler] @@ -69,7 +71,7 @@ var ErrAlreadyUnregistered = fmt.Errorf("callback was already unregistered") // RegisterCallback registers the function f to be called when any of the // insts Collect method is called. -func (m *meter) RegisterCallback(function metric.Callback, instruments ...instrument.Asynchronous) (metric.Registration, error) { +func (m *meter) RegisterCallback(function metric.Callback, instruments ...metric.Observable) (metric.Registration, error) { cb, err := asyncstate.NewCallback(instruments, m, function) var reg metric.Registration diff --git a/lightstep/sdk/metric/provider.go b/lightstep/sdk/metric/provider.go index 3b9076d3..593ae9b0 100644 --- a/lightstep/sdk/metric/provider.go +++ b/lightstep/sdk/metric/provider.go @@ -26,6 +26,7 @@ import ( "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/view" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/metric/embedded" "go.opentelemetry.io/otel/sdk/instrumentation" "go.opentelemetry.io/otel/sdk/resource" "go.uber.org/multierr" @@ -36,6 +37,8 @@ import ( // the same Views applied to them, and have their produced metric telemetry // passed to the configured Readers. type MeterProvider struct { + embedded.MeterProvider + cfg config startTime time.Time lock sync.Mutex diff --git a/lightstep/sdk/metric/syncinst.go b/lightstep/sdk/metric/syncinst.go index d6fb73c3..44e35f2e 100644 --- a/lightstep/sdk/metric/syncinst.go +++ b/lightstep/sdk/metric/syncinst.go @@ -20,67 +20,87 @@ import ( "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/internal/syncstate" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/number" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/sdkinstrument" - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/metric/instrument" + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/metric/embedded" ) type ( - int64AnyCounter struct { - *syncstate.Observer + int64Counter struct { + embedded.Int64Counter + observer *syncstate.Observer + } + int64UpDownCounter struct { + embedded.Int64UpDownCounter + observer *syncstate.Observer } int64Histogram struct { - *syncstate.Observer + embedded.Int64Histogram + observer *syncstate.Observer + } + float64Counter struct { + embedded.Float64Counter + observer *syncstate.Observer } - float64AnyCounter struct { - *syncstate.Observer + float64UpDownCounter struct { + embedded.Float64UpDownCounter + observer *syncstate.Observer } float64Histogram struct { - *syncstate.Observer + embedded.Float64Histogram + observer *syncstate.Observer } ) -func (i int64AnyCounter) Add(ctx context.Context, value int64, attrs ...attribute.KeyValue) { - i.ObserveInt64(ctx, value, attrs...) +func (i int64Counter) Add(ctx context.Context, value int64, options ...metric.AddOption) { + i.observer.ObserveInt64(ctx, value, options...) +} + +func (i int64UpDownCounter) Add(ctx context.Context, value int64, options ...metric.AddOption) { + i.observer.ObserveInt64(ctx, value, options...) +} + +func (i int64Histogram) Record(ctx context.Context, value int64, options ...metric.AddOption) { + i.observer.ObserveInt64(ctx, value, options...) } -func (i int64Histogram) Record(ctx context.Context, value int64, attrs ...attribute.KeyValue) { - i.ObserveInt64(ctx, value, attrs...) +func (i float64Counter) Add(ctx context.Context, value float64, options ...metric.AddOption) { + i.observer.ObserveFloat64(ctx, value, options...) } -func (i float64AnyCounter) Add(ctx context.Context, value float64, attrs ...attribute.KeyValue) { - i.ObserveFloat64(ctx, value, attrs...) +func (i float64UpDownCounter) Add(ctx context.Context, value float64, options ...metric.AddOption) { + i.observer.ObserveFloat64(ctx, value, options...) } -func (i float64Histogram) Record(ctx context.Context, value float64, attrs ...attribute.KeyValue) { - i.ObserveFloat64(ctx, value, attrs...) +func (i float64Histogram) Record(ctx context.Context, value float64, options ...metric.AddOption) { + i.observer.ObserveFloat64(ctx, value, options...) } -func (m *meter) Int64Counter(name string, opts ...instrument.Int64Option) (instrument.Int64Counter, error) { - inst, err := m.synchronousInstrument(name, instrument.NewInt64Config(opts...), number.Int64Kind, sdkinstrument.SyncCounter) - return int64AnyCounter{Observer: inst}, err +func (m *meter) Int64Counter(name string, opts ...metric.Int64CounterOption) (metric.Int64Counter, error) { + inst, err := m.synchronousInstrument(name, metric.NewInt64CounterConfig(opts...), number.Int64Kind, sdkinstrument.SyncCounter) + return int64Counter{observer: inst}, err } -func (m *meter) Int64UpDownCounter(name string, opts ...instrument.Int64Option) (instrument.Int64UpDownCounter, error) { - inst, err := m.synchronousInstrument(name, instrument.NewInt64Config(opts...), number.Int64Kind, sdkinstrument.SyncUpDownCounter) - return int64AnyCounter{Observer: inst}, err +func (m *meter) Int64UpDownCounter(name string, opts ...metric.Int64UpDownCounterOption) (metric.Int64UpDownCounter, error) { + inst, err := m.synchronousInstrument(name, metric.NewInt64UpDownCounterConfig(opts...), number.Int64Kind, sdkinstrument.SyncUpDownCounter) + return int64UpDownCounter{observer: inst}, err } -func (m *meter) Int64Histogram(name string, opts ...instrument.Int64Option) (instrument.Int64Histogram, error) { - inst, err := m.synchronousInstrument(name, instrument.NewInt64Config(opts...), number.Int64Kind, sdkinstrument.SyncHistogram) - return int64Histogram{Observer: inst}, err +func (m *meter) Int64Histogram(name string, opts ...metric.Int64HistogramOption) (metric.Int64Histogram, error) { + inst, err := m.synchronousInstrument(name, metric.NewInt64Config(opts...), number.Int64Kind, sdkinstrument.SyncHistogram) + return int64Histogram{observer: inst}, err } -func (m *meter) Float64Counter(name string, opts ...instrument.Float64Option) (instrument.Float64Counter, error) { - inst, err := m.synchronousInstrument(name, instrument.NewFloat64Config(opts...), number.Float64Kind, sdkinstrument.SyncCounter) - return float64AnyCounter{Observer: inst}, err +func (m *meter) Float64Counter(name string, opts ...metric.Float64CounterOption) (metric.Float64Counter, error) { + inst, err := m.synchronousInstrument(name, metric.NewFloat64Config(opts...), number.Float64Kind, sdkinstrument.SyncCounter) + return float64Counter{observer: inst}, err } -func (m *meter) Float64UpDownCounter(name string, opts ...instrument.Float64Option) (instrument.Float64UpDownCounter, error) { - inst, err := m.synchronousInstrument(name, instrument.NewFloat64Config(opts...), number.Float64Kind, sdkinstrument.SyncUpDownCounter) - return float64AnyCounter{Observer: inst}, err +func (m *meter) Float64UpDownCounter(name string, opts ...metric.Float64UpDownCounterOption) (metric.Float64UpDownCounter, error) { + inst, err := m.synchronousInstrument(name, metric.NewFloat64Config(opts...), number.Float64Kind, sdkinstrument.SyncUpDownCounter) + return float64UpDownCounter{observer: inst}, err } -func (m *meter) Float64Histogram(name string, opts ...instrument.Float64Option) (instrument.Float64Histogram, error) { - inst, err := m.synchronousInstrument(name, instrument.NewFloat64Config(opts...), number.Float64Kind, sdkinstrument.SyncHistogram) - return float64Histogram{Observer: inst}, err +func (m *meter) Float64Histogram(name string, opts ...metric.Float64HistogramOption) (metric.Float64Histogram, error) { + inst, err := m.synchronousInstrument(name, metric.NewFloat64Config(opts...), number.Float64Kind, sdkinstrument.SyncHistogram) + return float64Histogram{observer: inst}, err } From 3afa669c68b87f0f01305514cda414356c446add Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Tue, 2 May 2023 12:06:49 -0700 Subject: [PATCH 02/12] finish update --- lightstep/sdk/metric/asyncinst_test.go | 49 +++-- lightstep/sdk/metric/benchmark_test.go | 29 +-- .../metric/internal/asyncstate/async_test.go | 27 ++- .../metric/internal/asyncstate/callback.go | 2 +- .../sdk/metric/internal/syncstate/sync.go | 195 +++++++----------- .../metric/internal/syncstate/sync_test.go | 92 +++++---- lightstep/sdk/metric/meter.go | 2 + lightstep/sdk/metric/provider_test.go | 11 +- lightstep/sdk/metric/syncinst.go | 24 +-- lightstep/sdk/metric/syncinst_test.go | 21 +- 10 files changed, 213 insertions(+), 239 deletions(-) diff --git a/lightstep/sdk/metric/asyncinst_test.go b/lightstep/sdk/metric/asyncinst_test.go index f526449c..9613ae91 100644 --- a/lightstep/sdk/metric/asyncinst_test.go +++ b/lightstep/sdk/metric/asyncinst_test.go @@ -28,7 +28,6 @@ import ( "github.com/stretchr/testify/require" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" - "go.opentelemetry.io/otel/metric/instrument" "go.opentelemetry.io/otel/sdk/resource" ) @@ -47,12 +46,12 @@ func TestAsyncInstsMultiCallback(t *testing.T) { attr := attribute.String("a", "B") reg, err := provider.Meter("test").RegisterCallback(func(ctx context.Context, observer metric.Observer) error { - observer.ObserveInt64(ci, 2, attr) - observer.ObserveFloat64(cf, 3, attr) - observer.ObserveInt64(ui, 4, attr) - observer.ObserveFloat64(uf, 5, attr) - observer.ObserveInt64(gi, 6, attr) - observer.ObserveFloat64(gf, 7, attr) + observer.ObserveInt64(ci, 2, metric.WithAttributes(attr)) + observer.ObserveFloat64(cf, 3, metric.WithAttributes(attr)) + observer.ObserveInt64(ui, 4, metric.WithAttributes(attr)) + observer.ObserveFloat64(uf, 5, metric.WithAttributes(attr)) + observer.ObserveInt64(gi, 6, metric.WithAttributes(attr)) + observer.ObserveFloat64(gf, 7, metric.WithAttributes(attr)) return nil }, ci, cf, ui, uf, gi, gf) @@ -137,49 +136,49 @@ func TestAsyncInstsSingleCallback(t *testing.T) { attr := attribute.String("a", "B") _ = must(tm.Int64ObservableCounter("icount", - instrument.WithInt64Callback( - func(ctx context.Context, obs instrument.Int64Observer) error { - obs.Observe(2, attr) + metric.WithInt64Callback( + func(ctx context.Context, obs metric.Int64Observer) error { + obs.Observe(2, metric.WithAttributes(attr)) return nil }, ), )) _ = must(tm.Float64ObservableCounter("fcount", - instrument.WithFloat64Callback( - func(ctx context.Context, obs instrument.Float64Observer) error { - obs.Observe(3, attr) + metric.WithFloat64Callback( + func(ctx context.Context, obs metric.Float64Observer) error { + obs.Observe(3, metric.WithAttributes(attr)) return nil }, ), )) _ = must(tm.Int64ObservableUpDownCounter("iupcount", - instrument.WithInt64Callback( - func(ctx context.Context, obs instrument.Int64Observer) error { - obs.Observe(4, attr) + metric.WithInt64Callback( + func(ctx context.Context, obs metric.Int64Observer) error { + obs.Observe(4, metric.WithAttributes(attr)) return nil }, ), )) _ = must(tm.Float64ObservableUpDownCounter("fupcount", - instrument.WithFloat64Callback( - func(ctx context.Context, obs instrument.Float64Observer) error { - obs.Observe(5, attr) + metric.WithFloat64Callback( + func(ctx context.Context, obs metric.Float64Observer) error { + obs.Observe(5, metric.WithAttributes(attr)) return nil }, ), )) _ = must(tm.Int64ObservableGauge("igauge", - instrument.WithInt64Callback( - func(ctx context.Context, obs instrument.Int64Observer) error { - obs.Observe(6, attr) + metric.WithInt64Callback( + func(ctx context.Context, obs metric.Int64Observer) error { + obs.Observe(6, metric.WithAttributes(attr)) return nil }, ), )) _ = must(tm.Float64ObservableGauge("fgauge", - instrument.WithFloat64Callback( - func(ctx context.Context, obs instrument.Float64Observer) error { - obs.Observe(7, attr) + metric.WithFloat64Callback( + func(ctx context.Context, obs metric.Float64Observer) error { + obs.Observe(7, metric.WithAttributes(attr)) return nil }, ), diff --git a/lightstep/sdk/metric/benchmark_test.go b/lightstep/sdk/metric/benchmark_test.go index 1bc89942..88ab9ffd 100644 --- a/lightstep/sdk/metric/benchmark_test.go +++ b/lightstep/sdk/metric/benchmark_test.go @@ -22,6 +22,7 @@ import ( "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/sdkinstrument" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/view" "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" ) var unsafePerf = WithPerformance(sdkinstrument.Performance{ @@ -65,7 +66,7 @@ func BenchmarkCounterAddOneAttrSafe(b *testing.B) { cntr, _ := provider.Meter("test").Int64Counter("hello") for i := 0; i < b.N; i++ { - cntr.Add(ctx, 1, attribute.String("K", "V")) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.String("K", "V"))) } } @@ -78,7 +79,7 @@ func BenchmarkCounterAddOneAttrUnsafe(b *testing.B) { cntr, _ := provider.Meter("test").Int64Counter("hello") for i := 0; i < b.N; i++ { - cntr.Add(ctx, 1, attribute.String("K", "V")) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.String("K", "V"))) } } @@ -94,7 +95,7 @@ func BenchmarkCounterAddOneAttrSliceReuseSafe(b *testing.B) { cntr, _ := provider.Meter("test").Int64Counter("hello") for i := 0; i < b.N; i++ { - cntr.Add(ctx, 1, attrs...) + cntr.Add(ctx, 1, metric.WithAttributes(attrs...)) } } @@ -110,7 +111,7 @@ func BenchmarkCounterAddOneAttrSliceReuseUnsafe(b *testing.B) { cntr, _ := provider.Meter("test").Int64Counter("hello") for i := 0; i < b.N; i++ { - cntr.Add(ctx, 1, attrs...) + cntr.Add(ctx, 1, metric.WithAttributes(attrs...)) } } @@ -123,7 +124,7 @@ func BenchmarkCounterAddOneInvalidAttr(b *testing.B) { cntr, _ := provider.Meter("test").Int64Counter("hello") for i := 0; i < b.N; i++ { - cntr.Add(ctx, 1, attribute.String("", "V"), attribute.String("K", "V")) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.String("", "V"), attribute.String("K", "V"))) } } @@ -136,7 +137,7 @@ func BenchmarkCounterAddManyAttrs(b *testing.B) { cntr, _ := provider.Meter("test").Int64Counter("hello") for i := 0; i < b.N; i++ { - cntr.Add(ctx, 1, attribute.Int("K", i)) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.Int("K", i))) } } @@ -149,7 +150,7 @@ func BenchmarkCounterAddManyAttrsUnsafe(b *testing.B) { cntr, _ := provider.Meter("test").Int64Counter("hello") for i := 0; i < b.N; i++ { - cntr.Add(ctx, 1, attribute.Int("K", i)) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.Int("K", i))) } } @@ -162,7 +163,7 @@ func BenchmarkCounterAddManyInvalidAttrs(b *testing.B) { cntr, _ := provider.Meter("test").Int64Counter("hello") for i := 0; i < b.N; i++ { - cntr.Add(ctx, 1, attribute.Int("", i), attribute.Int("K", i)) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.Int("", i), attribute.Int("K", i))) } } @@ -175,7 +176,7 @@ func BenchmarkCounterAddManyInvalidAttrsUnsafe(b *testing.B) { cntr, _ := provider.Meter("test").Int64Counter("hello") for i := 0; i < b.N; i++ { - cntr.Add(ctx, 1, attribute.Int("", i), attribute.Int("K", i)) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.Int("", i), attribute.Int("K", i))) } } @@ -192,7 +193,7 @@ func BenchmarkCounterAddManyFilteredAttrs(b *testing.B) { cntr, _ := provider.Meter("test").Int64Counter("hello") for i := 0; i < b.N; i++ { - cntr.Add(ctx, 1, attribute.Int("L", i), attribute.Int("K", i)) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.Int("L", i), attribute.Int("K", i))) } } @@ -205,7 +206,7 @@ func BenchmarkCounterCollectOneAttrNoReuse(b *testing.B) { cntr, _ := provider.Meter("test").Int64Counter("hello") for i := 0; i < b.N; i++ { - cntr.Add(ctx, 1, attribute.Int("K", 1)) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.Int("K", 1))) _ = rdr.Produce(nil) } @@ -222,7 +223,7 @@ func BenchmarkCounterCollectOneAttrWithReuse(b *testing.B) { var reuse data.Metrics for i := 0; i < b.N; i++ { - cntr.Add(ctx, 1, attribute.Int("K", 1)) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.Int("K", 1))) reuse = rdr.Produce(&reuse) } @@ -240,7 +241,7 @@ func BenchmarkCounterCollectTenAttrs(b *testing.B) { for i := 0; i < b.N; i++ { for j := 0; j < 10; j++ { - cntr.Add(ctx, 1, attribute.Int("K", j)) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.Int("K", j))) } reuse = rdr.Produce(&reuse) } @@ -259,7 +260,7 @@ func BenchmarkCounterCollectTenAttrsTenTimes(b *testing.B) { for i := 0; i < b.N; i++ { for k := 0; k < 10; k++ { for j := 0; j < 10; j++ { - cntr.Add(ctx, 1, attribute.Int("K", j)) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.Int("K", j))) } reuse = rdr.Produce(&reuse) } diff --git a/lightstep/sdk/metric/internal/asyncstate/async_test.go b/lightstep/sdk/metric/internal/asyncstate/async_test.go index 0e3db9ba..e3ee94b2 100644 --- a/lightstep/sdk/metric/internal/asyncstate/async_test.go +++ b/lightstep/sdk/metric/internal/asyncstate/async_test.go @@ -35,7 +35,6 @@ import ( "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/sdkinstrument" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/view" "go.opentelemetry.io/otel/metric" - "go.opentelemetry.io/otel/metric/instrument" "go.opentelemetry.io/otel/sdk/instrumentation" ) @@ -132,7 +131,7 @@ func TestNewCallbackError(t *testing.T) { // nil callback error cntr := testIntObserver(tsdk, "counter", sdkinstrument.AsyncCounter) - cb, err = NewCallback([]instrument.Asynchronous{cntr}, tsdk, nil) + cb, err = NewCallback([]metric.Observable{cntr}, tsdk, nil) require.Error(t, err) require.Nil(t, cb) } @@ -144,36 +143,36 @@ func TestNewCallbackProviderMismatch(t *testing.T) { instA0 := testIntObserver(test0, "A", sdkinstrument.AsyncCounter) instB1 := testFloatObserver(test1, "A", sdkinstrument.AsyncCounter) - cb, err := NewCallback([]instrument.Asynchronous{instA0, instB1}, test0, nopCB) + cb, err := NewCallback([]metric.Observable{instA0, instB1}, test0, nopCB) require.Error(t, err) require.Contains(t, err.Error(), "asynchronous instrument belongs to a different meter") require.Nil(t, cb) - cb, err = NewCallback([]instrument.Asynchronous{instA0, instB1}, test1, nopCB) + cb, err = NewCallback([]metric.Observable{instA0, instB1}, test1, nopCB) require.Error(t, err) require.Contains(t, err.Error(), "asynchronous instrument belongs to a different meter") require.Nil(t, cb) - cb, err = NewCallback([]instrument.Asynchronous{instA0}, test0, nopCB) + cb, err = NewCallback([]metric.Observable{instA0}, test0, nopCB) require.NoError(t, err) require.NotNil(t, cb) - cb, err = NewCallback([]instrument.Asynchronous{instB1}, test1, nopCB) + cb, err = NewCallback([]metric.Observable{instB1}, test1, nopCB) require.NoError(t, err) require.NotNil(t, cb) // nil value not of this SDK - var fake0 instrument.Asynchronous - cb, err = NewCallback([]instrument.Asynchronous{fake0}, test0, nopCB) + var fake0 metric.Observable + cb, err = NewCallback([]metric.Observable{fake0}, test0, nopCB) require.Error(t, err) require.Contains(t, err.Error(), "asynchronous instrument does not belong to this SDK") require.Nil(t, cb) // non-nil value not of this SDK var fake1 struct { - instrument.Asynchronous + metric.Observable } - cb, err = NewCallback([]instrument.Asynchronous{fake1}, test0, nopCB) + cb, err = NewCallback([]metric.Observable{fake1}, test0, nopCB) require.Error(t, err) require.Contains(t, err.Error(), "asynchronous instrument does not belong to this SDK") require.Nil(t, cb) @@ -188,7 +187,7 @@ func TestCallbackInvalidation(t *testing.T) { var saveObs metric.Observer cntr := testIntObserver(tsdk, "counter", sdkinstrument.AsyncCounter) - cb, err := NewCallback([]instrument.Asynchronous{cntr}, tsdk, func(ctx context.Context, obs metric.Observer) error { + cb, err := NewCallback([]metric.Observable{cntr}, tsdk, func(ctx context.Context, obs metric.Observer) error { obs.ObserveInt64(cntr, called) saveObs = obs called++ @@ -234,7 +233,7 @@ func TestCallbackInstrumentUndeclaredForCalback(t *testing.T) { cntr1 := testIntObserver(tt, "counter1", sdkinstrument.AsyncCounter) cntr2 := testIntObserver(tt, "counter2", sdkinstrument.AsyncCounter) - cb, err := NewCallback([]instrument.Asynchronous{cntr1}, tt, func(ctx context.Context, obs metric.Observer) error { + cb, err := NewCallback([]metric.Observable{cntr1}, tt, func(ctx context.Context, obs metric.Observer) error { obs.ObserveInt64(cntr2, called) called++ return nil @@ -294,7 +293,7 @@ func TestCallbackDisabledInstrument(t *testing.T) { cntrDrop2 := testFloatObserver(tt, "drop2", sdkinstrument.AsyncCounter) cntrKeep := testFloatObserver(tt, "keep", sdkinstrument.AsyncCounter) - cb, _ := NewCallback([]instrument.Asynchronous{cntrDrop1, cntrDrop2, cntrKeep}, tt, func(ctx context.Context, obs metric.Observer) error { + cb, _ := NewCallback([]metric.Observable{cntrDrop1, cntrDrop2, cntrKeep}, tt, func(ctx context.Context, obs metric.Observer) error { obs.ObserveFloat64(cntrKeep, 1000) obs.ObserveFloat64(cntrDrop1, 1001) obs.ObserveFloat64(cntrDrop2, 1002) @@ -353,7 +352,7 @@ func TestOutOfRangeValues(t *testing.T) { u := testFloatObserver(tt, "testPatternU", sdkinstrument.AsyncUpDownCounter) g := testFloatObserver(tt, "testPatternG", sdkinstrument.AsyncGauge) - cb, _ := NewCallback([]instrument.Asynchronous{ + cb, _ := NewCallback([]metric.Observable{ c, u, g, }, tt, func(ctx context.Context, obs metric.Observer) error { obs.ObserveFloat64(c, math.NaN()) diff --git a/lightstep/sdk/metric/internal/asyncstate/callback.go b/lightstep/sdk/metric/internal/asyncstate/callback.go index e615215f..4dc117a7 100644 --- a/lightstep/sdk/metric/internal/asyncstate/callback.go +++ b/lightstep/sdk/metric/internal/asyncstate/callback.go @@ -36,7 +36,7 @@ type Callback struct { // NewCallback returns a new Callback; this checks that each of the // provided instruments belongs to the same meter provider. -func NewCallback(instruments []metric.Observer, opaque interface{}, function metric.Callback) (*Callback, error) { +func NewCallback(instruments []metric.Observable, opaque interface{}, function metric.Callback) (*Callback, error) { if len(instruments) == 0 { return nil, fmt.Errorf("asynchronous callback without instruments") } diff --git a/lightstep/sdk/metric/internal/syncstate/sync.go b/lightstep/sdk/metric/internal/syncstate/sync.go index 0eb3d6bf..deda8ec4 100644 --- a/lightstep/sdk/metric/internal/syncstate/sync.go +++ b/lightstep/sdk/metric/internal/syncstate/sync.go @@ -27,7 +27,6 @@ import ( "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/number" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/sdkinstrument" "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/metric" ) var overflowAttributesFingerprint = fingerprintAttributes(pipeline.OverflowAttributes) @@ -56,41 +55,8 @@ type Observer struct { // lock protects current. lock sync.RWMutex - // currentFP is protected by lock. - currentFP mapByFP - - // currentAS is protected by lock. - currentAS mapByAS -} - -// mapByFP is a map of records where fingerprint-based lookup is being used. -type mapByFP map[uint64]*record - -// mapByAS is a map of records where attribute.Set-based lookup is being used. -type mapByAS map[attribute.Set]*record - -type anyMap[Key any] interface { - Delete(Key) - Put(Key, *record) -} - -var _ anyMap[uint64] = mapByFP{} -var _ anyMap[attribute.Set] = mapByAS{} - -func (m mapByFP) Delete(key uint64) { - delete(m, key) -} - -func (m mapByFP) Put(key uint64, rec *record) { - m[key] = rec -} - -func (m mapByAS) Delete(key attribute.Set) { - delete(m, key) -} - -func (m mapByAS) Put(key attribute.Set, rec *record) { - m[key] = rec + // current is protected by lock. + current map[uint64]*record } // New builds a new synchronous instrument *Observer given the @@ -112,8 +78,7 @@ func New(desc sdkinstrument.Descriptor, performance sdkinstrument.Performance, _ performance = performance.Validate() return &Observer{ descriptor: desc, - currentFP: mapByFP{}, - currentAS: mapByAS{}, + current: map[uint64]*record{}, performance: performance, // Note that viewstate.Combine is used to eliminate @@ -128,49 +93,6 @@ func New(desc sdkinstrument.Descriptor, performance sdkinstrument.Performance, _ } } -func snapshotAndProcessInMap[Key any, Map anyMap[Key]](records Map, key Key, reclist *record, inst *Observer) { - // reclist is a list of records for this fingerprint. - var head *record - var tail *record - - // Scan reclist and modify the list. We're holding the - // lock giving exclusive access to the head-of-list - // and each next field, so the process here builds a new - // linked list after filtering records that are no longer - // in use. - for rec := reclist; rec != nil; rec = rec.next { - if inst.collect(rec) { - if head == nil { - // The first time a record will be kept, - // it becomes the head and tail. - head = rec - tail = rec - } else { - // Subsequently, update the tail of the - // list. Note that this creates a - // temporarily invalid list will be - // repaired outside the loop, below. - tail.next = rec - tail = rec - } - } - } - - // When no records are kept, delete the map entry. - if head == nil { - records.Delete(key) - return - } - - // Otherwise, terminate the list that was built. - tail.next = nil - - if head != reclist { - // If the head changes, update the map. - records.Put(key, head) - } -} - // SnapshotAndProcess calls SnapshotAndProcess() for all live // accumulators of this instrument. Inactive accumulators will be // subsequently removed from the map. @@ -178,14 +100,53 @@ func (inst *Observer) SnapshotAndProcess() { inst.lock.Lock() defer inst.lock.Unlock() - for key, reclist := range inst.currentFP { - snapshotAndProcessInMap(inst.currentFP, key, reclist, inst) + for key, reclist := range inst.current { + // reclist is a list of records for this fingerprint. + var head *record + var tail *record + + // Scan reclist and modify the list. We're holding the + // lock giving exclusive access to the head-of-list + // and each next field, so the process here builds a new + // linked list after filtering records that are no longer + // in use. + for rec := reclist; rec != nil; rec = rec.next { + if inst.collect(key, rec) { + if head == nil { + // The first time a record will be kept, + // it becomes the head and tail. + head = rec + tail = rec + } else { + // Subsequently, update the tail of the + // list. Note that this creates a + // temporarily invalid list will be + // repaired outside the loop, below. + tail.next = rec + tail = rec + } + } + } + + // When no records are kept, delete the map entry. + if head == nil { + delete(inst.current, key) + continue + } + + // Otherwise, terminate the list that was built. + tail.next = nil + + if head != reclist { + // If the head changes, update the map. + inst.current[key] = head + } } } // collect collects the record. When the record has been inactive for // the configured number of periods, it is removed from memory. -func (inst *Observer) collect(rec *record) bool { +func (inst *Observer) collect(fp uint64, rec *record) bool { if rec.normalCollect() { rec.inactiveCount = 0 return true @@ -348,20 +309,20 @@ func (rec *record) computeAttrsUnderLock(attrs []attribute.KeyValue) { rec.attrsList = acpy } -func (inst *Observer) AddInt64(ctx context.Context, num int64, options ...metric.AddOption) { - Observe[int64, number.Int64Traits](ctx, inst, num, metric.NewAddConfig(options)) -} - -func (inst *Observer) AddFloat64(ctx context.Context, num float64, options ...metric.AddOption) { - Observe[float64, number.Float64Traits](ctx, inst, num, metric.NewAddConfig(options)) -} - type anyConfig interface { Attributes() attribute.Set HasKeyValues() bool KeyValues() []attribute.KeyValue } +func (inst *Observer) ObserveInt64(ctx context.Context, num int64, cfg anyConfig) { + Observe[int64, number.Int64Traits](ctx, inst, num, cfg) +} + +func (inst *Observer) ObserveFloat64(ctx context.Context, num float64, cfg anyConfig) { + Observe[float64, number.Float64Traits](ctx, inst, num, cfg) +} + // Observe performs a generic update for any synchronous instrument. func Observe[N number.Any, Traits number.Traits[N]](_ context.Context, inst *Observer, num N, cfg anyConfig) { if inst == nil { @@ -375,15 +336,11 @@ func Observe[N number.Any, Traits number.Traits[N]](_ context.Context, inst *Obs return } - var rec *record + // @@@ Not what we want. @@@ + aset := cfg.Attributes() + rec := acquireUninitialized[N](inst, aset.ToSlice()) defer rec.refMapped.unref() - if cfg.HasKeyValues() { - rec = acquireListUninitialized[N](inst, cfg.KeyValues()) - } else { - rec = acquireSetUninitialized[N](inst, cfg.Attributes()) - } - rec.readAccumulator().(viewstate.Updater[N]).Update(num) // Record was modified. @@ -484,16 +441,16 @@ func attributesEqual(a, b []attribute.KeyValue) bool { return true } -// acquireListRead acquires the lock and searches for a `*record`. +// acquireRead acquires the lock and searches for a `*record`. // This returns the overflow attributes and fingerprint in case the // the cardinality limit is reached. The caller should exchange their // fp and attrs for the ones returned by this call. -func acquireListRead(inst *Observer, fp uint64, attrs []attribute.KeyValue) (uint64, []attribute.KeyValue, *record) { +func acquireRead(inst *Observer, fp uint64, attrs []attribute.KeyValue) (uint64, []attribute.KeyValue, *record) { inst.lock.RLock() defer inst.lock.RUnlock() overflow := false - fp, attrs, rec := acquireListReadLocked(inst, fp, attrs, &overflow) + fp, attrs, rec := acquireReadLocked(inst, fp, attrs, &overflow) if rec != nil { return fp, attrs, rec @@ -505,11 +462,11 @@ func acquireListRead(inst *Observer, fp uint64, attrs []attribute.KeyValue) (uin return fp, attrs, nil } // In which case fp and attrs are now the overflow attributes. - return acquireListReadLocked(inst, fp, attrs, &overflow) + return acquireReadLocked(inst, fp, attrs, &overflow) } -func acquireListReadLocked(inst *Observer, fp uint64, attrs []attribute.KeyValue, overflow *bool) (uint64, []attribute.KeyValue, *record) { - rec := inst.currentFP[fp] +func acquireReadLocked(inst *Observer, fp uint64, attrs []attribute.KeyValue, overflow *bool) (uint64, []attribute.KeyValue, *record) { + rec := inst.current[fp] // Potentially test for hash collisions. if !inst.performance.IgnoreCollisions { @@ -529,7 +486,7 @@ func acquireListReadLocked(inst *Observer, fp uint64, attrs []attribute.KeyValue // attribute set. Note this means we are performing // two map lookups for overflowing attributes and only // one lookup if the attribute set was preexisting. - if !*overflow && uint32(len(inst.currentFP)) >= inst.performance.InstrumentCardinalityLimit-1 { + if !*overflow && uint32(len(inst.current)) >= inst.performance.InstrumentCardinalityLimit-1 { // Use the overflow attributes, repeat. attrs = pipeline.OverflowAttributes fp = overflowAttributesFingerprint @@ -539,25 +496,25 @@ func acquireListReadLocked(inst *Observer, fp uint64, attrs []attribute.KeyValue return fp, attrs, nil } -// acquireListUninitialized gets or creates a `*record` corresponding to +// acquireUninitialized gets or creates a `*record` corresponding to // `attrs`, the input attributes. The returned record is mapped but // possibly not initialized. -func acquireListUninitialized[N number.Any](inst *Observer, attrs []attribute.KeyValue) *record { +func acquireUninitialized[N number.Any](inst *Observer, attrs []attribute.KeyValue) *record { fp := fingerprintAttributes(attrs) - // acquireListRead may replace fp and attrs when there is overflow. + // acquireRead may replace fp and attrs when there is overflow. var rec *record - fp, attrs, rec = acquireListRead(inst, fp, attrs) + fp, attrs, rec = acquireRead(inst, fp, attrs) if rec != nil { return rec } - return acquireListNotfound[N](inst, fp, attrs) + return acquireNotfound[N](inst, fp, attrs) } -// acquireListNotfound is the code path taken when acquireRead does not +// acquireNotfound is the code path taken when acquireRead does not // locate a record. -func acquireListNotfound[N number.Any](inst *Observer, fp uint64, attrs []attribute.KeyValue) *record { +func acquireNotfound[N number.Any](inst *Observer, fp uint64, attrs []attribute.KeyValue) *record { newRec := &record{ inst: inst, refMapped: newRefcountMapped(), @@ -565,7 +522,7 @@ func acquireListNotfound[N number.Any](inst *Observer, fp uint64, attrs []attrib newRec.computeAttrsUnderLock(attrs) for { - acquired, loaded := acquireListWrite(inst, fp, newRec) + acquired, loaded := acquireWrite(inst, fp, newRec) if !loaded { // When this happens, we are waiting for the call to delete() @@ -579,12 +536,12 @@ func acquireListNotfound[N number.Any](inst *Observer, fp uint64, attrs []attrib } } -// acquireListWrite acquires the write lock and gets or sets a `*record`. -func acquireListWrite(inst *Observer, fp uint64, newRec *record) (*record, bool) { +// acquireWrite acquires the write lock and gets or sets a `*record`. +func acquireWrite(inst *Observer, fp uint64, newRec *record) (*record, bool) { inst.lock.Lock() defer inst.lock.Unlock() - for oldRec := inst.currentFP[fp]; oldRec != nil; oldRec = oldRec.next { + for oldRec := inst.current[fp]; oldRec != nil; oldRec = oldRec.next { if inst.performance.IgnoreCollisions || attributesEqual(oldRec.attrsList, newRec.attrsList) { if oldRec.refMapped.ref() { @@ -595,7 +552,7 @@ func acquireListWrite(inst *Observer, fp uint64, newRec *record) (*record, bool) } } - newRec.next = inst.currentFP[fp] - inst.currentFP[fp] = newRec + newRec.next = inst.current[fp] + inst.current[fp] = newRec return newRec, true } diff --git a/lightstep/sdk/metric/internal/syncstate/sync_test.go b/lightstep/sdk/metric/internal/syncstate/sync_test.go index efd4cd7c..a382e00c 100644 --- a/lightstep/sdk/metric/internal/syncstate/sync_test.go +++ b/lightstep/sdk/metric/internal/syncstate/sync_test.go @@ -38,6 +38,7 @@ import ( "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/view" "github.com/stretchr/testify/require" "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/sdk/instrumentation" ) @@ -61,8 +62,16 @@ var ( IgnoreCollisions: true, InactiveCollectionPeriods: 1, } + + noAttrsCfg = metric.NewAddConfig(nil) ) +func attrsConfig(attrs ...attribute.KeyValue) metric.AddConfig { + return metric.NewAddConfig([]metric.AddOption{ + metric.WithAttributes(attrs...), + }) +} + func deltaUpdate[N number.Any](old, new N) N { return old + new } @@ -214,8 +223,13 @@ func testSyncStateConcurrencyWithPerf[N number.Any, Traits number.Traits[N]](t * defer writers.Done() rnd := rand.New(rand.NewSource(rand.Int63())) + // Note: actual config struct does not matter + cfg := metric.NewAddConfig([]metric.AddOption{ + metric.WithAttributes(attrs[rnd.Intn(len(attrs))]), + }) + for j := 0; j < numUpdates/numRoutines; j++ { - Observe[N, Traits](ctx, inst, 1, attrs[rnd.Intn(len(attrs))]) + Observe[N, Traits](ctx, inst, 1, cfg) } }() } @@ -260,9 +274,9 @@ func TestSyncStatePartialNoopInstrument(t *testing.T) { inst := New(desc, safePerf, nil, pipes) require.NotNil(t, inst) - inst.ObserveFloat64(ctx, 1) - inst.ObserveFloat64(ctx, 2) - inst.ObserveFloat64(ctx, 3) + inst.ObserveFloat64(ctx, 1, noAttrsCfg) + inst.ObserveFloat64(ctx, 2, noAttrsCfg) + inst.ObserveFloat64(ctx, 3, noAttrsCfg) inst.SnapshotAndProcess() @@ -328,9 +342,9 @@ func TestSyncStateFullNoopInstrument(t *testing.T) { inst := New(desc, safePerf, nil, pipes) require.Nil(t, inst) - inst.ObserveFloat64(ctx, 1) - inst.ObserveFloat64(ctx, 2) - inst.ObserveFloat64(ctx, 3) + inst.ObserveFloat64(ctx, 1, noAttrsCfg) + inst.ObserveFloat64(ctx, 2, noAttrsCfg) + inst.ObserveFloat64(ctx, 3, noAttrsCfg) // There's no instrument, nothing to Snapshot require.Equal(t, 0, len(vcs[0].Collectors())) @@ -364,13 +378,13 @@ func TestOutOfRangeValues(t *testing.T) { var negOne aggregation.Aggregation if desc.NumberKind == number.Float64Kind { - inst.ObserveFloat64(ctx, -1) - inst.ObserveFloat64(ctx, math.NaN()) - inst.ObserveFloat64(ctx, math.Inf(+1)) - inst.ObserveFloat64(ctx, math.Inf(-1)) + inst.ObserveFloat64(ctx, -1, noAttrsCfg) + inst.ObserveFloat64(ctx, math.NaN(), noAttrsCfg) + inst.ObserveFloat64(ctx, math.Inf(+1), noAttrsCfg) + inst.ObserveFloat64(ctx, math.Inf(-1), noAttrsCfg) negOne = sum.NewNonMonotonicFloat64(-1) } else { - inst.ObserveInt64(ctx, -1) + inst.ObserveInt64(ctx, -1, noAttrsCfg) negOne = sum.NewNonMonotonicInt64(-1) } @@ -462,9 +476,9 @@ func TestSyncGaugeDeltaInstrument(t *testing.T) { inst := New(indesc, safePerf, nil, pipes) require.NotNil(t, inst) - inst.ObserveFloat64(ctx, 1) - inst.ObserveFloat64(ctx, 2) - inst.ObserveFloat64(ctx, 3) + inst.ObserveFloat64(ctx, 1, noAttrsCfg) + inst.ObserveFloat64(ctx, 2, noAttrsCfg) + inst.ObserveFloat64(ctx, 3, noAttrsCfg) inst.SnapshotAndProcess() test.RequireEqualMetrics( @@ -498,8 +512,8 @@ func TestSyncGaugeDeltaInstrument(t *testing.T) { ) // Set again - inst.ObserveFloat64(ctx, 172) - inst.ObserveFloat64(ctx, 175) + inst.ObserveFloat64(ctx, 172, noAttrsCfg) + inst.ObserveFloat64(ctx, 175, noAttrsCfg) inst.SnapshotAndProcess() test.RequireEqualMetrics( @@ -519,8 +533,8 @@ func TestSyncGaugeDeltaInstrument(t *testing.T) { ) // Set different attribute sets, leave the first (empty set) unused. - inst.ObserveFloat64(ctx, 1333, attribute.String("A", "B")) - inst.ObserveFloat64(ctx, 1337, attribute.String("C", "D")) + inst.ObserveFloat64(ctx, 1333, attrsConfig(attribute.String("A", "B"))) + inst.ObserveFloat64(ctx, 1337, attrsConfig(attribute.String("C", "D"))) inst.SnapshotAndProcess() test.RequireEqualMetrics( @@ -549,10 +563,10 @@ func TestSyncGaugeDeltaInstrument(t *testing.T) { // sequence number (as opposed to random choice, which would // happen naturally b/c of map iteration). for i := 0; i < 1000; i++ { - inst.ObserveFloat64(ctx, float64(i), attribute.Int("ignored", i), attribute.String("A", "B")) + inst.ObserveFloat64(ctx, float64(i), attrsConfig(attribute.Int("ignored", i), attribute.String("A", "B"))) } for i := 1000; i > 0; i-- { - inst.ObserveFloat64(ctx, float64(i), attribute.Int("ignored", i), attribute.String("C", "D")) + inst.ObserveFloat64(ctx, float64(i), attrsConfig(attribute.Int("ignored", i), attribute.String("C", "D"))) } inst.SnapshotAndProcess() @@ -762,8 +776,8 @@ func TestDuplicateFingerprintSafety(t *testing.T) { attr1 := attribute.Int64(fpKey, fpInt1) attr2 := attribute.Int64(fpKey, fpInt2) - inst.ObserveFloat64(ctx, 1, attr1) - inst.ObserveFloat64(ctx, 2, attr2) + inst.ObserveFloat64(ctx, 1, attrsConfig(attr1)) + inst.ObserveFloat64(ctx, 2, attrsConfig(attr2)) // collect reader 0 inst.SnapshotAndProcess() @@ -810,8 +824,8 @@ func TestDuplicateFingerprintSafety(t *testing.T) { require.Equal(t, 0, vcs[0].Collectors()[0].InMemorySize()) // Use both again, collect reader 0 again - inst.ObserveFloat64(ctx, 5, attr1) - inst.ObserveFloat64(ctx, 6, attr2) + inst.ObserveFloat64(ctx, 5, attrsConfig(attr1)) + inst.ObserveFloat64(ctx, 6, attrsConfig(attr2)) inst.SnapshotAndProcess() test.RequireEqualMetrics( @@ -840,7 +854,7 @@ func TestDuplicateFingerprintSafety(t *testing.T) { require.Equal(t, 2, vcs[0].Collectors()[0].InMemorySize()) // Update attr1, collect reader 0 - inst.ObserveFloat64(ctx, 25, attr1) + inst.ObserveFloat64(ctx, 25, attrsConfig(attr1)) inst.SnapshotAndProcess() test.RequireEqualMetrics( @@ -864,7 +878,7 @@ func TestDuplicateFingerprintSafety(t *testing.T) { require.Equal(t, 1, vcs[0].Collectors()[0].InMemorySize()) // Update attr2, collect reader 0 - inst.ObserveFloat64(ctx, 32, attr2) + inst.ObserveFloat64(ctx, 32, attrsConfig(attr2)) inst.SnapshotAndProcess() test.RequireEqualMetrics( @@ -953,8 +967,8 @@ func TestDuplicateFingerprintCollisionIgnored(t *testing.T) { attr2 := attribute.Int64(fpKey, fpInt2) // Because of the duplicate, the first attribute set wins. - inst.ObserveFloat64(ctx, 1, attr1) - inst.ObserveFloat64(ctx, 2, attr2) + inst.ObserveFloat64(ctx, 1, attrsConfig(attr1)) + inst.ObserveFloat64(ctx, 2, attrsConfig(attr2)) // collect reader inst.SnapshotAndProcess() @@ -997,8 +1011,8 @@ func TestDuplicateFingerprintCollisionIgnored(t *testing.T) { // Use both attribute sets in the opposite order, collect // reader again. - inst.ObserveFloat64(ctx, 6, attr2) - inst.ObserveFloat64(ctx, 5, attr1) + inst.ObserveFloat64(ctx, 6, attrsConfig(attr2)) + inst.ObserveFloat64(ctx, 5, attrsConfig(attr1)) inst.SnapshotAndProcess() test.RequireEqualMetrics( @@ -1079,7 +1093,7 @@ func TestRecordInactivity(t *testing.T) { ) } - inst.ObserveFloat64(ctx, 17, attr) + inst.ObserveFloat64(ctx, 17, attrsConfig(attr)) // collect reader inst.SnapshotAndProcess() @@ -1105,7 +1119,7 @@ func TestRecordInactivity(t *testing.T) { // Inactive for the up to the allowed inactivity. repeatedlyNothing() - inst.ObserveFloat64(ctx, 23, attr) + inst.ObserveFloat64(ctx, 23, attrsConfig(attr)) // collect reader again, but an update came in. inst.SnapshotAndProcess() @@ -1154,7 +1168,7 @@ func TestCardinalityOverflowCumulative(t *testing.T) { var oflow int for i := 0; i < total; i++ { - inst.ObserveFloat64(ctx, 1, attribute.Int("i", i)) + inst.ObserveFloat64(ctx, 1, attrsConfig(attribute.Int("i", i))) if i < int(perf.InstrumentCardinalityLimit)-1 { expectPoints = append(expectPoints, test.Point( @@ -1193,7 +1207,7 @@ func TestCardinalityOverflowCumulative(t *testing.T) { // Repeat with all new attributes; since this is cumulative, // the original set is retained an this goes entirely to overflow. for i := 0; i < total; i++ { - inst.ObserveFloat64(ctx, 1, attribute.Int("i", total+i)) + inst.ObserveFloat64(ctx, 1, attrsConfig(attribute.Int("i", total+i))) oflow++ } // Replace the overflow value @@ -1254,7 +1268,7 @@ func TestCardinalityOverflowAvoidedDelta(t *testing.T) { // attr is unique on every iteration attr := attribute.String("s", fmt.Sprint(uniq)) uniq++ - inst.ObserveInt64(ctx, 1, attr) + inst.ObserveInt64(ctx, 1, attrsConfig(attr)) expectPoints = append(expectPoints, test.Point( middleTime, endTime, @@ -1317,7 +1331,7 @@ func TestCardinalityOverflowOscillationDelta(t *testing.T) { var oflow int for i := 0; i < total; i++ { - inst.ObserveFloat64(ctx, 1, attribute.Int("uniq", uniq)) + inst.ObserveFloat64(ctx, 1, attrsConfig(attribute.Int("uniq", uniq))) // Note: on even intervals, the overflow will // be as we expect, and in odd intervals, the @@ -1404,14 +1418,14 @@ func TestInputAttributeSliceRaceCondition(t *testing.T) { go func() { defer wg.Done() for i := 0; i < 1000; i++ { - inst.ObserveFloat64(ctx, 1, attrs...) + inst.ObserveFloat64(ctx, 1, attrsConfig(attrs...)) } }() go func() { defer wg.Done() for i := 0; i < 1000; i++ { - inst.ObserveFloat64(ctx, 1, attrs...) + inst.ObserveFloat64(ctx, 1, attrsConfig(attrs...)) } }() diff --git a/lightstep/sdk/metric/meter.go b/lightstep/sdk/metric/meter.go index 8bee7a78..0abf4ec9 100644 --- a/lightstep/sdk/metric/meter.go +++ b/lightstep/sdk/metric/meter.go @@ -51,6 +51,8 @@ type ( // metricRegistration implements metric.Registration metricRegistration struct { + embedded.Registration + lock sync.Mutex meter *meter callback *asyncstate.Callback diff --git a/lightstep/sdk/metric/provider_test.go b/lightstep/sdk/metric/provider_test.go index abe6ab17..99af99e5 100644 --- a/lightstep/sdk/metric/provider_test.go +++ b/lightstep/sdk/metric/provider_test.go @@ -30,6 +30,7 @@ import ( "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/sdkinstrument" "github.com/stretchr/testify/require" "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/sdk/resource" ) @@ -56,7 +57,7 @@ func TestOutputReuse(t *testing.T) { attr := attribute.Int("K", 1) attr2 := attribute.Int("L", 1) - cntr.Add(ctx, 1, attr) + cntr.Add(ctx, 1, metric.WithAttributes(attr)) // With a single point, check correct initial result. reuse = rdr.Produce(&reuse) @@ -76,7 +77,7 @@ func TestOutputReuse(t *testing.T) { // address, new result. pointAddrBefore := &reuse.Scopes[0].Instruments[0].Points[0] - cntr.Add(ctx, 1, attribute.Int("K", 1)) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.Int("K", 1))) reuse = rdr.Produce(&reuse) @@ -98,7 +99,7 @@ func TestOutputReuse(t *testing.T) { // Give the points list a cap of 17 and make a second point, ensure reuse.Scopes[0].Instruments[0].Points = make([]data.Point, 0, 17) - cntr.Add(ctx, 1, attr2) + cntr.Add(ctx, 1, metric.WithAttributes(attr2)) reuse = rdr.Produce(&reuse) @@ -118,7 +119,7 @@ func TestOutputReuse(t *testing.T) { // Make 20 more points, ensure capacity is greater than 17 for i := 0; i < 20; i++ { - cntr.Add(ctx, 1, attribute.Int("I", i)) + cntr.Add(ctx, 1, metric.WithAttributes(attribute.Int("I", i))) } reuse = rdr.Produce(&reuse) @@ -134,7 +135,7 @@ func TestOutputReuse(t *testing.T) { fcntr := must(provider.Meter("real").Float64Counter("goodbye")) - fcntr.Add(ctx, 2, attr) + fcntr.Add(ctx, 2, metric.WithAttributes(attr)) reuse = rdr.Produce(&reuse) diff --git a/lightstep/sdk/metric/syncinst.go b/lightstep/sdk/metric/syncinst.go index 44e35f2e..93a43f64 100644 --- a/lightstep/sdk/metric/syncinst.go +++ b/lightstep/sdk/metric/syncinst.go @@ -52,27 +52,27 @@ type ( ) func (i int64Counter) Add(ctx context.Context, value int64, options ...metric.AddOption) { - i.observer.ObserveInt64(ctx, value, options...) + i.observer.ObserveInt64(ctx, value, metric.NewAddConfig(options)) } func (i int64UpDownCounter) Add(ctx context.Context, value int64, options ...metric.AddOption) { - i.observer.ObserveInt64(ctx, value, options...) + i.observer.ObserveInt64(ctx, value, metric.NewAddConfig(options)) } -func (i int64Histogram) Record(ctx context.Context, value int64, options ...metric.AddOption) { - i.observer.ObserveInt64(ctx, value, options...) +func (i int64Histogram) Record(ctx context.Context, value int64, options ...metric.RecordOption) { + i.observer.ObserveInt64(ctx, value, metric.NewRecordConfig(options)) } func (i float64Counter) Add(ctx context.Context, value float64, options ...metric.AddOption) { - i.observer.ObserveFloat64(ctx, value, options...) + i.observer.ObserveFloat64(ctx, value, metric.NewAddConfig(options)) } func (i float64UpDownCounter) Add(ctx context.Context, value float64, options ...metric.AddOption) { - i.observer.ObserveFloat64(ctx, value, options...) + i.observer.ObserveFloat64(ctx, value, metric.NewAddConfig(options)) } -func (i float64Histogram) Record(ctx context.Context, value float64, options ...metric.AddOption) { - i.observer.ObserveFloat64(ctx, value, options...) +func (i float64Histogram) Record(ctx context.Context, value float64, options ...metric.RecordOption) { + i.observer.ObserveFloat64(ctx, value, metric.NewRecordConfig(options)) } func (m *meter) Int64Counter(name string, opts ...metric.Int64CounterOption) (metric.Int64Counter, error) { @@ -86,21 +86,21 @@ func (m *meter) Int64UpDownCounter(name string, opts ...metric.Int64UpDownCounte } func (m *meter) Int64Histogram(name string, opts ...metric.Int64HistogramOption) (metric.Int64Histogram, error) { - inst, err := m.synchronousInstrument(name, metric.NewInt64Config(opts...), number.Int64Kind, sdkinstrument.SyncHistogram) + inst, err := m.synchronousInstrument(name, metric.NewInt64HistogramConfig(opts...), number.Int64Kind, sdkinstrument.SyncHistogram) return int64Histogram{observer: inst}, err } func (m *meter) Float64Counter(name string, opts ...metric.Float64CounterOption) (metric.Float64Counter, error) { - inst, err := m.synchronousInstrument(name, metric.NewFloat64Config(opts...), number.Float64Kind, sdkinstrument.SyncCounter) + inst, err := m.synchronousInstrument(name, metric.NewFloat64CounterConfig(opts...), number.Float64Kind, sdkinstrument.SyncCounter) return float64Counter{observer: inst}, err } func (m *meter) Float64UpDownCounter(name string, opts ...metric.Float64UpDownCounterOption) (metric.Float64UpDownCounter, error) { - inst, err := m.synchronousInstrument(name, metric.NewFloat64Config(opts...), number.Float64Kind, sdkinstrument.SyncUpDownCounter) + inst, err := m.synchronousInstrument(name, metric.NewFloat64UpDownCounterConfig(opts...), number.Float64Kind, sdkinstrument.SyncUpDownCounter) return float64UpDownCounter{observer: inst}, err } func (m *meter) Float64Histogram(name string, opts ...metric.Float64HistogramOption) (metric.Float64Histogram, error) { - inst, err := m.synchronousInstrument(name, metric.NewFloat64Config(opts...), number.Float64Kind, sdkinstrument.SyncHistogram) + inst, err := m.synchronousInstrument(name, metric.NewFloat64HistogramConfig(opts...), number.Float64Kind, sdkinstrument.SyncHistogram) return float64Histogram{observer: inst}, err } diff --git a/lightstep/sdk/metric/syncinst_test.go b/lightstep/sdk/metric/syncinst_test.go index da24e6d1..0b078645 100644 --- a/lightstep/sdk/metric/syncinst_test.go +++ b/lightstep/sdk/metric/syncinst_test.go @@ -28,6 +28,7 @@ import ( "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/sdkinstrument" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/view" "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/sdk/resource" ) @@ -60,18 +61,18 @@ func TestSyncInsts(t *testing.T) { attr := attribute.String("a", "B") - ci.Add(ctx, 2, attr) - cf.Add(ctx, 3, attr) - ui.Add(ctx, 4, attr) - uf.Add(ctx, 5, attr) + ci.Add(ctx, 2, metric.WithAttributes(attr)) + cf.Add(ctx, 3, metric.WithAttributes(attr)) + ui.Add(ctx, 4, metric.WithAttributes(attr)) + uf.Add(ctx, 5, metric.WithAttributes(attr)) - hi.Record(ctx, 2, attr) - hi.Record(ctx, 4, attr) - hi.Record(ctx, 8, attr) + hi.Record(ctx, 2, metric.WithAttributes(attr)) + hi.Record(ctx, 4, metric.WithAttributes(attr)) + hi.Record(ctx, 8, metric.WithAttributes(attr)) - hf.Record(ctx, 8, attr) - hf.Record(ctx, 16, attr) - hf.Record(ctx, 32, attr) + hf.Record(ctx, 8, metric.WithAttributes(attr)) + hf.Record(ctx, 16, metric.WithAttributes(attr)) + hf.Record(ctx, 32, metric.WithAttributes(attr)) data := rdr.Produce(nil) notime := time.Time{} From fe6c6f48d4522093d4d65f784f87fca0617cb191 Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Tue, 2 May 2023 16:07:48 -0700 Subject: [PATCH 03/12] avoid an interface conversion --- .../sdk/metric/internal/syncstate/sync.go | 21 ++++++++------ .../metric/internal/syncstate/sync_test.go | 15 +++++----- lightstep/sdk/metric/syncinst.go | 28 +++++++++++++++---- 3 files changed, 42 insertions(+), 22 deletions(-) diff --git a/lightstep/sdk/metric/internal/syncstate/sync.go b/lightstep/sdk/metric/internal/syncstate/sync.go index deda8ec4..82f77a52 100644 --- a/lightstep/sdk/metric/internal/syncstate/sync.go +++ b/lightstep/sdk/metric/internal/syncstate/sync.go @@ -309,22 +309,23 @@ func (rec *record) computeAttrsUnderLock(attrs []attribute.KeyValue) { rec.attrsList = acpy } -type anyConfig interface { - Attributes() attribute.Set - HasKeyValues() bool - KeyValues() []attribute.KeyValue +// OpConfig is the two fields of an {Add,Record}Config without an +// interface conversion. +type OpConfig struct { + Attributes attribute.Set + KeyValues []attribute.KeyValue } -func (inst *Observer) ObserveInt64(ctx context.Context, num int64, cfg anyConfig) { +func (inst *Observer) ObserveInt64(ctx context.Context, num int64, cfg OpConfig) { Observe[int64, number.Int64Traits](ctx, inst, num, cfg) } -func (inst *Observer) ObserveFloat64(ctx context.Context, num float64, cfg anyConfig) { +func (inst *Observer) ObserveFloat64(ctx context.Context, num float64, cfg OpConfig) { Observe[float64, number.Float64Traits](ctx, inst, num, cfg) } // Observe performs a generic update for any synchronous instrument. -func Observe[N number.Any, Traits number.Traits[N]](_ context.Context, inst *Observer, num N, cfg anyConfig) { +func Observe[N number.Any, Traits number.Traits[N]](_ context.Context, inst *Observer, num N, cfg OpConfig) { if inst == nil { // Instrument was completely disabled by the view. return @@ -337,8 +338,10 @@ func Observe[N number.Any, Traits number.Traits[N]](_ context.Context, inst *Obs } // @@@ Not what we want. @@@ - aset := cfg.Attributes() - rec := acquireUninitialized[N](inst, aset.ToSlice()) + // aset := cfg.Attributes() + // rec := acquireUninitialized[N](inst, aset.ToSlice()) + rec := acquireUninitialized[N](inst, cfg.KeyValues) + defer rec.refMapped.unref() rec.readAccumulator().(viewstate.Updater[N]).Update(num) diff --git a/lightstep/sdk/metric/internal/syncstate/sync_test.go b/lightstep/sdk/metric/internal/syncstate/sync_test.go index a382e00c..a4f46c6b 100644 --- a/lightstep/sdk/metric/internal/syncstate/sync_test.go +++ b/lightstep/sdk/metric/internal/syncstate/sync_test.go @@ -63,13 +63,17 @@ var ( InactiveCollectionPeriods: 1, } - noAttrsCfg = metric.NewAddConfig(nil) + noAttrsCfg = attrsConfig() ) -func attrsConfig(attrs ...attribute.KeyValue) metric.AddConfig { - return metric.NewAddConfig([]metric.AddOption{ +func attrsConfig(attrs ...attribute.KeyValue) OpConfig { + acfg := metric.NewAddConfig([]metric.AddOption{ metric.WithAttributes(attrs...), }) + return OpConfig{ + Attributes: acfg.Attributes(), + KeyValues: acfg.KeyValues(), + } } func deltaUpdate[N number.Any](old, new N) N { @@ -223,10 +227,7 @@ func testSyncStateConcurrencyWithPerf[N number.Any, Traits number.Traits[N]](t * defer writers.Done() rnd := rand.New(rand.NewSource(rand.Int63())) - // Note: actual config struct does not matter - cfg := metric.NewAddConfig([]metric.AddOption{ - metric.WithAttributes(attrs[rnd.Intn(len(attrs))]), - }) + cfg := attrsConfig(attrs[rnd.Intn(len(attrs))]) for j := 0; j < numUpdates/numRoutines; j++ { Observe[N, Traits](ctx, inst, 1, cfg) diff --git a/lightstep/sdk/metric/syncinst.go b/lightstep/sdk/metric/syncinst.go index 93a43f64..8e264566 100644 --- a/lightstep/sdk/metric/syncinst.go +++ b/lightstep/sdk/metric/syncinst.go @@ -51,28 +51,44 @@ type ( } ) +func addToOpConfig(options []metric.AddOption) syncstate.OpConfig { + acfg := metric.NewAddConfig(options) + return syncstate.OpConfig{ + Attributes: acfg.Attributes(), + KeyValues: acfg.KeyValues(), + } +} + +func recordToOpConfig(options []metric.RecordOption) syncstate.OpConfig { + rcfg := metric.NewRecordConfig(options) + return syncstate.OpConfig{ + Attributes: rcfg.Attributes(), + KeyValues: rcfg.KeyValues(), + } +} + func (i int64Counter) Add(ctx context.Context, value int64, options ...metric.AddOption) { - i.observer.ObserveInt64(ctx, value, metric.NewAddConfig(options)) + i.observer.ObserveInt64(ctx, value, addToOpConfig(options)) } func (i int64UpDownCounter) Add(ctx context.Context, value int64, options ...metric.AddOption) { - i.observer.ObserveInt64(ctx, value, metric.NewAddConfig(options)) + i.observer.ObserveInt64(ctx, value, addToOpConfig(options)) } func (i int64Histogram) Record(ctx context.Context, value int64, options ...metric.RecordOption) { - i.observer.ObserveInt64(ctx, value, metric.NewRecordConfig(options)) + i.observer.ObserveInt64(ctx, value, recordToOpConfig(options)) } func (i float64Counter) Add(ctx context.Context, value float64, options ...metric.AddOption) { - i.observer.ObserveFloat64(ctx, value, metric.NewAddConfig(options)) + i.observer.ObserveFloat64(ctx, value, addToOpConfig(options)) } func (i float64UpDownCounter) Add(ctx context.Context, value float64, options ...metric.AddOption) { - i.observer.ObserveFloat64(ctx, value, metric.NewAddConfig(options)) + i.observer.ObserveFloat64(ctx, value, addToOpConfig(options)) } func (i float64Histogram) Record(ctx context.Context, value float64, options ...metric.RecordOption) { - i.observer.ObserveFloat64(ctx, value, metric.NewRecordConfig(options)) + i.observer.ObserveFloat64(ctx, value, recordToOpConfig(options)) } func (m *meter) Int64Counter(name string, opts ...metric.Int64CounterOption) (metric.Int64Counter, error) { From 4d95154aa225194724ab5f2f2f03809a29d840c9 Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Wed, 3 May 2023 09:26:57 -0700 Subject: [PATCH 04/12] Add and benchmark a bypass for the old code path --- lightstep/sdk/metric/benchmark_test.go | 74 +++++++++++++++---- lightstep/sdk/metric/bypass/bypass.go | 49 ++++++++++++ .../sdk/metric/internal/syncstate/sync.go | 12 ++- .../metric/internal/syncstate/sync_test.go | 1 - lightstep/sdk/metric/syncinst.go | 54 +++++++++++++- 5 files changed, 169 insertions(+), 21 deletions(-) create mode 100644 lightstep/sdk/metric/bypass/bypass.go diff --git a/lightstep/sdk/metric/benchmark_test.go b/lightstep/sdk/metric/benchmark_test.go index 88ab9ffd..7335b661 100644 --- a/lightstep/sdk/metric/benchmark_test.go +++ b/lightstep/sdk/metric/benchmark_test.go @@ -18,6 +18,7 @@ import ( "context" "testing" + "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/bypass" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/data" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/sdkinstrument" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/view" @@ -29,20 +30,7 @@ var unsafePerf = WithPerformance(sdkinstrument.Performance{ IgnoreCollisions: true, }) -// Tested prior to 0.11.0 release -// goos: darwin -// goarch: arm64 -// pkg: github.com/lightstep/otel-launcher-go/lightstep/sdk/metric -// BenchmarkCounterAddNoAttrs-10 35354023 33.79 ns/op 0 B/op 0 allocs/op -// BenchmarkCounterAddOneAttr-10 14354538 82.77 ns/op 64 B/op 1 allocs/op -// BenchmarkCounterAddOneInvalidAttr-10 9307794 128.4 ns/op 128 B/op 1 allocs/op -// BenchmarkCounterAddManyAttrs-10 1000000 1075 ns/op 569 B/op 6 allocs/op -// BenchmarkCounterAddManyInvalidAttrs-10 832549 1654 ns/op 1080 B/op 10 allocs/op -// BenchmarkCounterAddManyFilteredAttrs-10 1000000 1304 ns/op 953 B/op 8 allocs/op -// BenchmarkCounterCollectOneAttrNoReuse-10 2537348 468.0 ns/op 400 B/op 7 allocs/op -// BenchmarkCounterCollectOneAttrWithReuse-10 3679694 328.2 ns/op 136 B/op 3 allocs/op -// BenchmarkCounterCollectTenAttrs-10 715490 1635 ns/op 712 B/op 12 allocs/op -// BenchmarkCounterCollectTenAttrsTenTimes-10 72478 16475 ns/op 7128 B/op 120 allocs/op +// Tested prior to 0.17.0 release func BenchmarkCounterAddNoAttrs(b *testing.B) { ctx := context.Background() @@ -70,6 +58,19 @@ func BenchmarkCounterAddOneAttrSafe(b *testing.B) { } } +func BenchmarkCounterAddOneAttrSafeBypass(b *testing.B) { + ctx := context.Background() + rdr := NewManualReader("bench") + provider := NewMeterProvider(WithReader(rdr)) + b.ReportAllocs() + + cntr, _ := provider.Meter("test").Int64Counter("hello") + + for i := 0; i < b.N; i++ { + cntr.(bypass.FastInt64Adder).AddWithKeyValues(ctx, 1, attribute.String("K", "V")) + } +} + func BenchmarkCounterAddOneAttrUnsafe(b *testing.B) { ctx := context.Background() rdr := NewManualReader("bench") @@ -83,6 +84,19 @@ func BenchmarkCounterAddOneAttrUnsafe(b *testing.B) { } } +func BenchmarkCounterAddOneAttrUnsafeBypass(b *testing.B) { + ctx := context.Background() + rdr := NewManualReader("bench") + provider := NewMeterProvider(WithReader(rdr), unsafePerf) + b.ReportAllocs() + + cntr, _ := provider.Meter("test").Int64Counter("hello") + + for i := 0; i < b.N; i++ { + cntr.(bypass.FastInt64Adder).AddWithKeyValues(ctx, 1, attribute.String("K", "V")) + } +} + func BenchmarkCounterAddOneAttrSliceReuseSafe(b *testing.B) { ctx := context.Background() rdr := NewManualReader("bench") @@ -99,6 +113,22 @@ func BenchmarkCounterAddOneAttrSliceReuseSafe(b *testing.B) { } } +func BenchmarkCounterAddOneAttrSliceReuseSafeBypass(b *testing.B) { + ctx := context.Background() + rdr := NewManualReader("bench") + provider := NewMeterProvider(WithReader(rdr)) + b.ReportAllocs() + + attrs := []attribute.KeyValue{ + attribute.String("K", "V"), + } + cntr, _ := provider.Meter("test").Int64Counter("hello") + + for i := 0; i < b.N; i++ { + cntr.(bypass.FastInt64Adder).AddWithKeyValues(ctx, 1, attrs...) + } +} + func BenchmarkCounterAddOneAttrSliceReuseUnsafe(b *testing.B) { ctx := context.Background() rdr := NewManualReader("bench") @@ -115,6 +145,22 @@ func BenchmarkCounterAddOneAttrSliceReuseUnsafe(b *testing.B) { } } +func BenchmarkCounterAddOneAttrSliceReuseUnsafeBypass(b *testing.B) { + ctx := context.Background() + rdr := NewManualReader("bench") + provider := NewMeterProvider(WithReader(rdr), unsafePerf) + b.ReportAllocs() + + attrs := []attribute.KeyValue{ + attribute.String("K", "V"), + } + cntr, _ := provider.Meter("test").Int64Counter("hello") + + for i := 0; i < b.N; i++ { + cntr.(bypass.FastInt64Adder).AddWithKeyValues(ctx, 1, attrs...) + } +} + func BenchmarkCounterAddOneInvalidAttr(b *testing.B) { ctx := context.Background() rdr := NewManualReader("bench") diff --git a/lightstep/sdk/metric/bypass/bypass.go b/lightstep/sdk/metric/bypass/bypass.go new file mode 100644 index 00000000..3f0fa33f --- /dev/null +++ b/lightstep/sdk/metric/bypass/bypass.go @@ -0,0 +1,49 @@ +// Copyright The OpenTelemetry 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 bypass // import "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/bypass" + +import ( + "context" + + "go.opentelemetry.io/otel/attribute" +) + +// FastInt64Adder is implemented by int64 Counter and UpDownCounter +// instruments retuned by this SDK and offers a fast-path for updating +// metrics with a list of attributes. +type FastInt64Adder interface { + AddWithKeyValues(ctx context.Context, value int64, attrs ...attribute.KeyValue) +} + +// FastFloat64Adder is implemented by float64 Counter and +// UpDownCounter instruments retuned by this SDK and offers a +// fast-path for updating metrics with a list of attributes. +type FastFloat64Adder interface { + AddWithKeyValues(ctx context.Context, value float64, attrs ...attribute.KeyValue) +} + +// FastInt64Recorder is implemented by float64 Histogram instruments +// retuned by this SDK and offers a fast-path for updating metrics +// with a list of attributes. +type FastInt64Recorder interface { + RecordWithKeyValues(ctx context.Context, value int64, attrs ...attribute.KeyValue) +} + +// FastFloat64Recorder is implemented by float64 Histogram instruments +// retuned by this SDK and offers a fast-path for updating metrics +// with a list of attributes. +type FastFloat64Recorder interface { + RecordWithKeyValues(ctx context.Context, value float64, attrs ...attribute.KeyValue) +} diff --git a/lightstep/sdk/metric/internal/syncstate/sync.go b/lightstep/sdk/metric/internal/syncstate/sync.go index 82f77a52..4dc5eda8 100644 --- a/lightstep/sdk/metric/internal/syncstate/sync.go +++ b/lightstep/sdk/metric/internal/syncstate/sync.go @@ -337,10 +337,14 @@ func Observe[N number.Any, Traits number.Traits[N]](_ context.Context, inst *Obs return } - // @@@ Not what we want. @@@ - // aset := cfg.Attributes() - // rec := acquireUninitialized[N](inst, aset.ToSlice()) - rec := acquireUninitialized[N](inst, cfg.KeyValues) + var rec *record + if cfg.KeyValues != nil { + rec = acquireUninitialized[N](inst, cfg.KeyValues) + } else { + // TODO: This is a new code path for optimization, + // for now fall back to the slow path. + rec = acquireUninitialized[N](inst, cfg.Attributes.ToSlice()) + } defer rec.refMapped.unref() diff --git a/lightstep/sdk/metric/internal/syncstate/sync_test.go b/lightstep/sdk/metric/internal/syncstate/sync_test.go index a4f46c6b..25a82224 100644 --- a/lightstep/sdk/metric/internal/syncstate/sync_test.go +++ b/lightstep/sdk/metric/internal/syncstate/sync_test.go @@ -72,7 +72,6 @@ func attrsConfig(attrs ...attribute.KeyValue) OpConfig { }) return OpConfig{ Attributes: acfg.Attributes(), - KeyValues: acfg.KeyValues(), } } diff --git a/lightstep/sdk/metric/syncinst.go b/lightstep/sdk/metric/syncinst.go index 8e264566..ef519a13 100644 --- a/lightstep/sdk/metric/syncinst.go +++ b/lightstep/sdk/metric/syncinst.go @@ -17,9 +17,11 @@ package metric // import "github.com/lightstep/otel-launcher-go/lightstep/sdk/me import ( "context" + "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/bypass" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/internal/syncstate" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/number" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/sdkinstrument" + "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/metric/embedded" ) @@ -51,42 +53,90 @@ type ( } ) +var ( + _ bypass.FastInt64Adder = int64Counter{} + _ bypass.FastInt64Adder = int64UpDownCounter{} + _ bypass.FastInt64Recorder = int64Histogram{} + + _ bypass.FastFloat64Adder = float64Counter{} + _ bypass.FastFloat64Adder = float64UpDownCounter{} + _ bypass.FastFloat64Recorder = float64Histogram{} +) + func addToOpConfig(options []metric.AddOption) syncstate.OpConfig { acfg := metric.NewAddConfig(options) return syncstate.OpConfig{ + // Note: OTel-Go forces construction of an attribute set. + // Can't set KeyValues here. Attributes: acfg.Attributes(), - KeyValues: acfg.KeyValues(), } } func recordToOpConfig(options []metric.RecordOption) syncstate.OpConfig { rcfg := metric.NewRecordConfig(options) return syncstate.OpConfig{ + // Note: OTel-Go forces construction of an attribute set. + // Can't set KeyValues here. Attributes: rcfg.Attributes(), - KeyValues: rcfg.KeyValues(), } } +func (i int64Counter) AddWithKeyValues(ctx context.Context, value int64, attrs ...attribute.KeyValue) { + i.observer.ObserveInt64(ctx, value, syncstate.OpConfig{ + KeyValues: attrs, + }) +} + func (i int64Counter) Add(ctx context.Context, value int64, options ...metric.AddOption) { i.observer.ObserveInt64(ctx, value, addToOpConfig(options)) } +func (i int64UpDownCounter) AddWithKeyValues(ctx context.Context, value int64, attrs ...attribute.KeyValue) { + i.observer.ObserveInt64(ctx, value, syncstate.OpConfig{ + KeyValues: attrs, + }) +} + func (i int64UpDownCounter) Add(ctx context.Context, value int64, options ...metric.AddOption) { i.observer.ObserveInt64(ctx, value, addToOpConfig(options)) } +func (i int64Histogram) RecordWithKeyValues(ctx context.Context, value int64, attrs ...attribute.KeyValue) { + i.observer.ObserveInt64(ctx, value, syncstate.OpConfig{ + KeyValues: attrs, + }) +} + func (i int64Histogram) Record(ctx context.Context, value int64, options ...metric.RecordOption) { i.observer.ObserveInt64(ctx, value, recordToOpConfig(options)) } +func (i float64Counter) AddWithKeyValues(ctx context.Context, value float64, attrs ...attribute.KeyValue) { + i.observer.ObserveFloat64(ctx, value, syncstate.OpConfig{ + KeyValues: attrs, + }) +} + func (i float64Counter) Add(ctx context.Context, value float64, options ...metric.AddOption) { i.observer.ObserveFloat64(ctx, value, addToOpConfig(options)) } +func (i float64UpDownCounter) AddWithKeyValues(ctx context.Context, value float64, attrs ...attribute.KeyValue) { + i.observer.ObserveFloat64(ctx, value, syncstate.OpConfig{ + KeyValues: attrs, + }) +} + func (i float64UpDownCounter) Add(ctx context.Context, value float64, options ...metric.AddOption) { i.observer.ObserveFloat64(ctx, value, addToOpConfig(options)) } +func (i float64Histogram) RecordWithKeyValues(ctx context.Context, value float64, attrs ...attribute.KeyValue) { + i.observer.ObserveFloat64(ctx, value, syncstate.OpConfig{ + KeyValues: attrs, + }) +} + func (i float64Histogram) Record(ctx context.Context, value float64, options ...metric.RecordOption) { i.observer.ObserveFloat64(ctx, value, recordToOpConfig(options)) } From 43637123de59405b89d884262786c2c1f4d2fba6 Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Wed, 3 May 2023 09:42:58 -0700 Subject: [PATCH 05/12] separate KV logic --- .../metric/internal/syncstate/bykeyvalue.go | 236 ++++++++++++++++ .../sdk/metric/internal/syncstate/sync.go | 256 ++---------------- 2 files changed, 260 insertions(+), 232 deletions(-) create mode 100644 lightstep/sdk/metric/internal/syncstate/bykeyvalue.go diff --git a/lightstep/sdk/metric/internal/syncstate/bykeyvalue.go b/lightstep/sdk/metric/internal/syncstate/bykeyvalue.go new file mode 100644 index 00000000..41b421d1 --- /dev/null +++ b/lightstep/sdk/metric/internal/syncstate/bykeyvalue.go @@ -0,0 +1,236 @@ +// Copyright The OpenTelemetry 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 syncstate + +import ( + "runtime" + + "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/internal/fprint" + "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/internal/pipeline" + "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/number" + "go.opentelemetry.io/otel/attribute" +) + +func fingerprintAttributes(attrs []attribute.KeyValue) uint64 { + var fp uint64 + for _, attr := range attrs { + fp += fprint.Mix( + fprint.FingerprintString(string(attr.Key)), + fingerprintValue(attr.Value), + ) + } + + return fp +} + +func fingerprintSlice[T any](slice []T, f func(T) uint64) uint64 { + var fp uint64 + for _, item := range slice { + fp += f(item) + } + return fp +} + +func fingerprintValue(value attribute.Value) uint64 { + switch value.Type() { + case attribute.BOOL: + return fprint.FingerprintBool(value.AsBool()) + case attribute.INT64: + return fprint.FingerprintInt64(value.AsInt64()) + case attribute.FLOAT64: + return fprint.FingerprintFloat64(value.AsFloat64()) + case attribute.STRING: + return fprint.FingerprintString(value.AsString()) + case attribute.BOOLSLICE: + return fingerprintSlice(value.AsBoolSlice(), fprint.FingerprintBool) + case attribute.INT64SLICE: + return fingerprintSlice(value.AsInt64Slice(), fprint.FingerprintInt64) + case attribute.FLOAT64SLICE: + return fingerprintSlice(value.AsFloat64Slice(), fprint.FingerprintFloat64) + case attribute.STRINGSLICE: + return fingerprintSlice(value.AsStringSlice(), fprint.FingerprintString) + } + + return 0 +} + +func sliceEqual[T comparable](a, b []T) bool { + if len(a) != len(b) { + return false + } + for i := range a { + if a[i] != b[i] { + return false + } + } + return true +} + +// attributesEqual returns true if two slices are exactly equal. +func attributesEqual(a, b []attribute.KeyValue) bool { + if len(a) != len(b) { + return false + } + for i := range a { + if a[i].Value.Type() != b[i].Value.Type() { + return false + } + if a[i].Key != b[i].Key { + return false + } + switch a[i].Value.Type() { + case attribute.INVALID, attribute.BOOL, attribute.INT64, attribute.FLOAT64, attribute.STRING: + if a[i].Value != b[i].Value { + return false + } + case attribute.BOOLSLICE: + if !sliceEqual(a[i].Value.AsBoolSlice(), b[i].Value.AsBoolSlice()) { + return false + } + case attribute.INT64SLICE: + if !sliceEqual(a[i].Value.AsInt64Slice(), b[i].Value.AsInt64Slice()) { + return false + } + case attribute.FLOAT64SLICE: + if !sliceEqual(a[i].Value.AsFloat64Slice(), b[i].Value.AsFloat64Slice()) { + return false + } + case attribute.STRINGSLICE: + if !sliceEqual(a[i].Value.AsStringSlice(), b[i].Value.AsStringSlice()) { + return false + } + } + + } + return true +} + +// acquireRead acquires the lock and searches for a `*record`. +// This returns the overflow attributes and fingerprint in case the +// the cardinality limit is reached. The caller should exchange their +// fp and attrs for the ones returned by this call. +func acquireReadKV(inst *Observer, fp uint64, attrs []attribute.KeyValue) (uint64, []attribute.KeyValue, *recordKV) { + inst.lock.RLock() + defer inst.lock.RUnlock() + + overflow := false + fp, attrs, rec := acquireReadLockedKV(inst, fp, attrs, &overflow) + + if rec != nil { + return fp, attrs, rec + } + // The overflow signal indicates another call is needed w/ the + // same logic but updated fp and attrs. + if !overflow { + // Otherwise, this is the first appearance of an overflow. + return fp, attrs, nil + } + // In which case fp and attrs are now the overflow attributes. + return acquireReadLockedKV(inst, fp, attrs, &overflow) +} + +func acquireReadLockedKV(inst *Observer, fp uint64, attrs []attribute.KeyValue, overflow *bool) (uint64, []attribute.KeyValue, *recordKV) { + rec := inst.currentFP[fp] + + // Potentially test for hash collisions. + if !inst.performance.IgnoreCollisions { + for rec != nil && !attributesEqual(attrs, rec.attrsList) { + rec = rec.next + } + } + + // Existing record case. + if rec != nil && rec.refMapped.ref() { + // At this moment it is guaranteed that the + // record is in the map and will not be removed. + return fp, attrs, rec + } + + // Check for overflow after checking for the original + // attribute set. Note this means we are performing + // two map lookups for overflowing attributes and only + // one lookup if the attribute set was preexisting. + if !*overflow && uint32(len(inst.currentFP)) >= inst.performance.InstrumentCardinalityLimit-1 { + // Use the overflow attributes, repeat. + attrs = pipeline.OverflowAttributes + fp = overflowAttributesFingerprint + *overflow = true + } + + return fp, attrs, nil +} + +// acquireUninitializedKV gets or creates a `*record` corresponding to +// `attrs`, the input attributes. The returned record is mapped but +// possibly not initialized. +func acquireUninitializedKV[N number.Any](inst *Observer, attrs []attribute.KeyValue) *recordKV { + fp := fingerprintAttributes(attrs) + + // acquireRead may replace fp and attrs when there is overflow. + var rec *recordKV + fp, attrs, rec = acquireReadKV(inst, fp, attrs) + if rec != nil { + return rec + } + + return acquireNotfoundKV[N](inst, fp, attrs) +} + +// acquireNotfoundKV is the code path taken when acquireRead does not +// locate a record. +func acquireNotfoundKV[N number.Any](inst *Observer, fp uint64, attrs []attribute.KeyValue) *recordKV { + newRec := &recordKV{ + record: record{ + inst: inst, + refMapped: newRefcountMapped(), + }, + } + newRec.computeAttrsUnderLock(attrs) + + for { + acquired, loaded := acquireWriteKV(inst, fp, newRec) + + if !loaded { + // When this happens, we are waiting for the call to delete() + // inside SnapshotAndProcess() to complete before inserting + // a new record. This avoids busy-waiting. + runtime.Gosched() + continue + } + + return acquired + } +} + +// acquireWriteKV acquires the write lock and gets or sets a `*record`. +func acquireWriteKV(inst *Observer, fp uint64, newRec *recordKV) (*recordKV, bool) { + inst.lock.Lock() + defer inst.lock.Unlock() + + for oldRec := inst.currentFP[fp]; oldRec != nil; oldRec = oldRec.next { + + if inst.performance.IgnoreCollisions || attributesEqual(oldRec.attrsList, newRec.attrsList) { + if oldRec.refMapped.ref() { + return oldRec, true + } + // in which case, there's been a race + return nil, false + } + } + + newRec.next = inst.currentFP[fp] + inst.currentFP[fp] = newRec + return newRec, true +} diff --git a/lightstep/sdk/metric/internal/syncstate/sync.go b/lightstep/sdk/metric/internal/syncstate/sync.go index 4dc5eda8..84b64ab9 100644 --- a/lightstep/sdk/metric/internal/syncstate/sync.go +++ b/lightstep/sdk/metric/internal/syncstate/sync.go @@ -16,12 +16,10 @@ package syncstate import ( "context" - "runtime" "sync" "sync/atomic" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/aggregator" - "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/internal/fprint" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/internal/pipeline" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/internal/viewstate" "github.com/lightstep/otel-launcher-go/lightstep/sdk/metric/number" @@ -55,8 +53,8 @@ type Observer struct { // lock protects current. lock sync.RWMutex - // current is protected by lock. - current map[uint64]*record + // currentFP is protected by lock. + currentFP map[uint64]*recordKV } // New builds a new synchronous instrument *Observer given the @@ -78,7 +76,7 @@ func New(desc sdkinstrument.Descriptor, performance sdkinstrument.Performance, _ performance = performance.Validate() return &Observer{ descriptor: desc, - current: map[uint64]*record{}, + currentFP: map[uint64]*recordKV{}, performance: performance, // Note that viewstate.Combine is used to eliminate @@ -100,10 +98,10 @@ func (inst *Observer) SnapshotAndProcess() { inst.lock.Lock() defer inst.lock.Unlock() - for key, reclist := range inst.current { + for key, reclist := range inst.currentFP { // reclist is a list of records for this fingerprint. - var head *record - var tail *record + var head *recordKV + var tail *recordKV // Scan reclist and modify the list. We're holding the // lock giving exclusive access to the head-of-list @@ -130,7 +128,7 @@ func (inst *Observer) SnapshotAndProcess() { // When no records are kept, delete the map entry. if head == nil { - delete(inst.current, key) + delete(inst.currentFP, key) continue } @@ -139,14 +137,14 @@ func (inst *Observer) SnapshotAndProcess() { if head != reclist { // If the head changes, update the map. - inst.current[key] = head + inst.currentFP[key] = head } } } // collect collects the record. When the record has been inactive for // the configured number of periods, it is removed from memory. -func (inst *Observer) collect(fp uint64, rec *record) bool { +func (inst *Observer) collect(fp uint64, rec *recordKV) bool { if rec.normalCollect() { rec.inactiveCount = 0 return true @@ -202,11 +200,16 @@ type record struct { // inst allows referring to performance settings. inst *Observer +} + +type recordKV struct { + // record includes fields in common with recordAS + record // next is protected by the instrument's RWLock. // // this field is unused when Performance.IgnoreCollisions is true. - next *record + next *recordKV // once governs access to `accumulatorsUnsafe`. The caller // that created the `record` must call once.Do(initialize) on @@ -235,13 +238,13 @@ type record struct { // normalCollect equals conditionalCollect(false), is named // differently from scavengeCollect for profiling. -func (rec *record) normalCollect() bool { +func (rec *recordKV) normalCollect() bool { return rec.conditionalCollect(false) } // scavengeCollect equals conditionalCollect(false), is named // differently from normalCollect for profiling. -func (rec *record) scavengeCollect(release bool) bool { +func (rec *recordKV) scavengeCollect(release bool) bool { return rec.conditionalCollect(release) } @@ -251,7 +254,7 @@ func (rec *record) scavengeCollect(release bool) bool { // SnapshotAndProcess on the associated accumulator and returns true. // If updates happened since the last collection (by any reader), // returns false. -func (rec *record) conditionalCollect(release bool) bool { +func (rec *recordKV) conditionalCollect(release bool) bool { mods := atomic.LoadUint32(&rec.updateCount) if !release { @@ -268,7 +271,7 @@ func (rec *record) conditionalCollect(release bool) bool { } // readAccumulator gets the accumulator for this record after once.Do(initialize). -func (rec *record) readAccumulator() viewstate.Accumulator { +func (rec *recordKV) readAccumulator() viewstate.Accumulator { rec.once.Do(rec.initialize) return rec.accumulatorUnsafe } @@ -276,7 +279,7 @@ func (rec *record) readAccumulator() viewstate.Accumulator { // initialize ensures that accumulatorUnsafe and attrsUnsafe are correctly initialized. // // readAccumulator() calls this inside a sync.Once.Do(). -func (rec *record) initialize() { +func (rec *recordKV) initialize() { // We need another copy of the attribute list because NewSet() // will sort it in place. acpy := make([]attribute.KeyValue, len(rec.attrsList)) @@ -293,7 +296,7 @@ func (rec *record) initialize() { // computeAttrsUnderLock sets the attribute.Set that will be used to // construct the accumulator. -func (rec *record) computeAttrsUnderLock(attrs []attribute.KeyValue) { +func (rec *recordKV) computeAttrsUnderLock(attrs []attribute.KeyValue) { // The work of NewSet and NewAccumulator is deferred until // once.Do(initialize) outside of the lock but while the call // is still in flight. @@ -309,7 +312,6 @@ func (rec *record) computeAttrsUnderLock(attrs []attribute.KeyValue) { rec.attrsList = acpy } -// OpConfig is the two fields of an {Add,Record}Config without an // interface conversion. type OpConfig struct { Attributes attribute.Set @@ -337,13 +339,13 @@ func Observe[N number.Any, Traits number.Traits[N]](_ context.Context, inst *Obs return } - var rec *record + var rec *recordKV if cfg.KeyValues != nil { - rec = acquireUninitialized[N](inst, cfg.KeyValues) + rec = acquireUninitializedKV[N](inst, cfg.KeyValues) } else { // TODO: This is a new code path for optimization, // for now fall back to the slow path. - rec = acquireUninitialized[N](inst, cfg.Attributes.ToSlice()) + rec = acquireUninitializedKV[N](inst, cfg.Attributes.ToSlice()) } defer rec.refMapped.unref() @@ -353,213 +355,3 @@ func Observe[N number.Any, Traits number.Traits[N]](_ context.Context, inst *Obs // Record was modified. atomic.AddUint32(&rec.updateCount, 1) } - -func fingerprintAttributes(attrs []attribute.KeyValue) uint64 { - var fp uint64 - for _, attr := range attrs { - fp += fprint.Mix( - fprint.FingerprintString(string(attr.Key)), - fingerprintValue(attr.Value), - ) - } - - return fp -} - -func fingerprintSlice[T any](slice []T, f func(T) uint64) uint64 { - var fp uint64 - for _, item := range slice { - fp += f(item) - } - return fp -} - -func fingerprintValue(value attribute.Value) uint64 { - switch value.Type() { - case attribute.BOOL: - return fprint.FingerprintBool(value.AsBool()) - case attribute.INT64: - return fprint.FingerprintInt64(value.AsInt64()) - case attribute.FLOAT64: - return fprint.FingerprintFloat64(value.AsFloat64()) - case attribute.STRING: - return fprint.FingerprintString(value.AsString()) - case attribute.BOOLSLICE: - return fingerprintSlice(value.AsBoolSlice(), fprint.FingerprintBool) - case attribute.INT64SLICE: - return fingerprintSlice(value.AsInt64Slice(), fprint.FingerprintInt64) - case attribute.FLOAT64SLICE: - return fingerprintSlice(value.AsFloat64Slice(), fprint.FingerprintFloat64) - case attribute.STRINGSLICE: - return fingerprintSlice(value.AsStringSlice(), fprint.FingerprintString) - } - - return 0 -} - -func sliceEqual[T comparable](a, b []T) bool { - if len(a) != len(b) { - return false - } - for i := range a { - if a[i] != b[i] { - return false - } - } - return true -} - -// attributesEqual returns true if two slices are exactly equal. -func attributesEqual(a, b []attribute.KeyValue) bool { - if len(a) != len(b) { - return false - } - for i := range a { - if a[i].Value.Type() != b[i].Value.Type() { - return false - } - if a[i].Key != b[i].Key { - return false - } - switch a[i].Value.Type() { - case attribute.INVALID, attribute.BOOL, attribute.INT64, attribute.FLOAT64, attribute.STRING: - if a[i].Value != b[i].Value { - return false - } - case attribute.BOOLSLICE: - if !sliceEqual(a[i].Value.AsBoolSlice(), b[i].Value.AsBoolSlice()) { - return false - } - case attribute.INT64SLICE: - if !sliceEqual(a[i].Value.AsInt64Slice(), b[i].Value.AsInt64Slice()) { - return false - } - case attribute.FLOAT64SLICE: - if !sliceEqual(a[i].Value.AsFloat64Slice(), b[i].Value.AsFloat64Slice()) { - return false - } - case attribute.STRINGSLICE: - if !sliceEqual(a[i].Value.AsStringSlice(), b[i].Value.AsStringSlice()) { - return false - } - } - - } - return true -} - -// acquireRead acquires the lock and searches for a `*record`. -// This returns the overflow attributes and fingerprint in case the -// the cardinality limit is reached. The caller should exchange their -// fp and attrs for the ones returned by this call. -func acquireRead(inst *Observer, fp uint64, attrs []attribute.KeyValue) (uint64, []attribute.KeyValue, *record) { - inst.lock.RLock() - defer inst.lock.RUnlock() - - overflow := false - fp, attrs, rec := acquireReadLocked(inst, fp, attrs, &overflow) - - if rec != nil { - return fp, attrs, rec - } - // The overflow signal indicates another call is needed w/ the - // same logic but updated fp and attrs. - if !overflow { - // Otherwise, this is the first appearance of an overflow. - return fp, attrs, nil - } - // In which case fp and attrs are now the overflow attributes. - return acquireReadLocked(inst, fp, attrs, &overflow) -} - -func acquireReadLocked(inst *Observer, fp uint64, attrs []attribute.KeyValue, overflow *bool) (uint64, []attribute.KeyValue, *record) { - rec := inst.current[fp] - - // Potentially test for hash collisions. - if !inst.performance.IgnoreCollisions { - for rec != nil && !attributesEqual(attrs, rec.attrsList) { - rec = rec.next - } - } - - // Existing record case. - if rec != nil && rec.refMapped.ref() { - // At this moment it is guaranteed that the - // record is in the map and will not be removed. - return fp, attrs, rec - } - - // Check for overflow after checking for the original - // attribute set. Note this means we are performing - // two map lookups for overflowing attributes and only - // one lookup if the attribute set was preexisting. - if !*overflow && uint32(len(inst.current)) >= inst.performance.InstrumentCardinalityLimit-1 { - // Use the overflow attributes, repeat. - attrs = pipeline.OverflowAttributes - fp = overflowAttributesFingerprint - *overflow = true - } - - return fp, attrs, nil -} - -// acquireUninitialized gets or creates a `*record` corresponding to -// `attrs`, the input attributes. The returned record is mapped but -// possibly not initialized. -func acquireUninitialized[N number.Any](inst *Observer, attrs []attribute.KeyValue) *record { - fp := fingerprintAttributes(attrs) - - // acquireRead may replace fp and attrs when there is overflow. - var rec *record - fp, attrs, rec = acquireRead(inst, fp, attrs) - if rec != nil { - return rec - } - - return acquireNotfound[N](inst, fp, attrs) -} - -// acquireNotfound is the code path taken when acquireRead does not -// locate a record. -func acquireNotfound[N number.Any](inst *Observer, fp uint64, attrs []attribute.KeyValue) *record { - newRec := &record{ - inst: inst, - refMapped: newRefcountMapped(), - } - newRec.computeAttrsUnderLock(attrs) - - for { - acquired, loaded := acquireWrite(inst, fp, newRec) - - if !loaded { - // When this happens, we are waiting for the call to delete() - // inside SnapshotAndProcess() to complete before inserting - // a new record. This avoids busy-waiting. - runtime.Gosched() - continue - } - - return acquired - } -} - -// acquireWrite acquires the write lock and gets or sets a `*record`. -func acquireWrite(inst *Observer, fp uint64, newRec *record) (*record, bool) { - inst.lock.Lock() - defer inst.lock.Unlock() - - for oldRec := inst.current[fp]; oldRec != nil; oldRec = oldRec.next { - - if inst.performance.IgnoreCollisions || attributesEqual(oldRec.attrsList, newRec.attrsList) { - if oldRec.refMapped.ref() { - return oldRec, true - } - // in which case, there's been a race - return nil, false - } - } - - newRec.next = inst.current[fp] - inst.current[fp] = newRec - return newRec, true -} From 9175a1ef37590848923f5f3ca055cf703b18026b Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Mon, 22 May 2023 13:44:19 -0700 Subject: [PATCH 06/12] noop --- lightstep/sdk/metric/provider.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lightstep/sdk/metric/provider.go b/lightstep/sdk/metric/provider.go index 87764c00..1d07e060 100644 --- a/lightstep/sdk/metric/provider.go +++ b/lightstep/sdk/metric/provider.go @@ -27,6 +27,7 @@ import ( "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/metric/embedded" + "go.opentelemetry.io/otel/metric/noop" "go.opentelemetry.io/otel/sdk/instrumentation" "go.opentelemetry.io/otel/sdk/resource" "go.uber.org/multierr" @@ -112,7 +113,7 @@ func (mp *MeterProvider) Meter(name string, options ...metric.MeterOption) metri if mp.meters == nil { // Have been shutdown - return metric.NewNoopMeter() + return noop.NewMeterProvider().Meter(name) } m := mp.meters[lib] From f4577b998b6d1027aa50db2b3e8968a3a303bac7 Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Mon, 22 May 2023 14:11:23 -0700 Subject: [PATCH 07/12] instrumentation build update --- lightstep/instrumentation/cputime/cputime.go | 8 +++-- .../instrumentation/cputime/cputime_test.go | 11 +++++-- lightstep/instrumentation/go.mod | 10 +++--- lightstep/instrumentation/go.sum | 16 ++++++---- lightstep/instrumentation/host/host.go | 32 ++++++++++++++----- lightstep/instrumentation/host/host_test.go | 24 ++++++++------ lightstep/instrumentation/runtime/builtin.go | 15 +++++---- 7 files changed, 77 insertions(+), 39 deletions(-) diff --git a/lightstep/instrumentation/cputime/cputime.go b/lightstep/instrumentation/cputime/cputime.go index 37a0de7f..83ff1180 100644 --- a/lightstep/instrumentation/cputime/cputime.go +++ b/lightstep/instrumentation/cputime/cputime.go @@ -58,8 +58,12 @@ func (o metricProviderOption) apply(c *config) { var ( // Attribute sets for CPU time measurements. - AttributeCPUTimeUser = []attribute.KeyValue{attribute.String("state", "user")} - AttributeCPUTimeSystem = []attribute.KeyValue{attribute.String("state", "system")} + AttributeCPUTimeUser = []metric.ObserveOption{ + metric.WithAttributes(attribute.String("state", "user")), + } + AttributeCPUTimeSystem = []metric.ObserveOption{ + metric.WithAttributes(attribute.String("state", "system")), + } ) // newConfig computes a config from a list of Options. diff --git a/lightstep/instrumentation/cputime/cputime_test.go b/lightstep/instrumentation/cputime/cputime_test.go index 81d3cae0..9cadbe51 100644 --- a/lightstep/instrumentation/cputime/cputime_test.go +++ b/lightstep/instrumentation/cputime/cputime_test.go @@ -22,10 +22,17 @@ import ( "github.com/stretchr/testify/require" "go.opentelemetry.io/otel/attribute" + apimetric "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/sdk/metric" "go.opentelemetry.io/otel/sdk/metric/metricdata" ) +func attrSlice(opts []apimetric.ObserveOption) []attribute.KeyValue { + cfg := apimetric.NewObserveConfig(opts) + attrs := cfg.Attributes() + return attrs.ToSlice() +} + func getMetric(metrics []metricdata.Metrics, name string, lbl attribute.KeyValue) float64 { for _, m := range metrics { fmt.Println(m.Name) @@ -109,8 +116,8 @@ func TestProcessCPU(t *testing.T) { require.NoError(t, err) require.Equal(t, 1, len(data.ScopeMetrics)) - processUser := getMetric(data.ScopeMetrics[0].Metrics, "process.cpu.time", AttributeCPUTimeUser[0]) - processSystem := getMetric(data.ScopeMetrics[0].Metrics, "process.cpu.time", AttributeCPUTimeSystem[0]) + processUser := getMetric(data.ScopeMetrics[0].Metrics, "process.cpu.time", attrSlice(AttributeCPUTimeUser)[0]) + processSystem := getMetric(data.ScopeMetrics[0].Metrics, "process.cpu.time", attrSlice(AttributeCPUTimeSystem)[0]) afterUser, afterSystem, _ := c.getProcessTimes(ctx) diff --git a/lightstep/instrumentation/go.mod b/lightstep/instrumentation/go.mod index 2b08cf8b..2858ae24 100644 --- a/lightstep/instrumentation/go.mod +++ b/lightstep/instrumentation/go.mod @@ -5,9 +5,9 @@ go 1.18 require ( github.com/shirou/gopsutil/v3 v3.22.9 github.com/stretchr/testify v1.8.2 - go.opentelemetry.io/otel v1.14.0 - go.opentelemetry.io/otel/metric v0.37.0 - go.opentelemetry.io/otel/sdk/metric v0.37.0 + go.opentelemetry.io/otel v1.15.0 + go.opentelemetry.io/otel/metric v0.38.0 + go.opentelemetry.io/otel/sdk/metric v0.38.0 ) require ( @@ -23,8 +23,8 @@ require ( github.com/tklauser/go-sysconf v0.3.10 // indirect github.com/tklauser/numcpus v0.4.0 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect - go.opentelemetry.io/otel/sdk v1.14.0 // indirect - go.opentelemetry.io/otel/trace v1.14.0 // indirect + go.opentelemetry.io/otel/sdk v1.15.0 // indirect + go.opentelemetry.io/otel/trace v1.15.0 // indirect golang.org/x/sys v0.7.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/lightstep/instrumentation/go.sum b/lightstep/instrumentation/go.sum index 9df2fc01..36120e14 100644 --- a/lightstep/instrumentation/go.sum +++ b/lightstep/instrumentation/go.sum @@ -44,16 +44,20 @@ github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq// github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= -go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= -go.opentelemetry.io/otel/metric v0.37.0 h1:pHDQuLQOZwYD+Km0eb657A25NaRzy0a+eLyKfDXedEs= -go.opentelemetry.io/otel/metric v0.37.0/go.mod h1:DmdaHfGt54iV6UKxsV9slj2bBRJcKC1B1uvDLIioc1s= +go.opentelemetry.io/otel v1.15.0 h1:NIl24d4eiLJPM0vKn4HjLYM+UZf6gSfi9Z+NmCxkWbk= +go.opentelemetry.io/otel v1.15.0/go.mod h1:qfwLEbWhLPk5gyWrne4XnF0lC8wtywbuJbgfAE3zbek= +go.opentelemetry.io/otel/metric v0.38.0 h1:vv/Nv/44S3GzMMmeUhaesBKsAenE6xLkTVWL+zuv30w= +go.opentelemetry.io/otel/metric v0.38.0/go.mod h1:uAtxN5hl8aXh5irD8afBtSwQU5Zjg64WWSz6KheZxBg= go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= +go.opentelemetry.io/otel/sdk v1.15.0 h1:jZTCkRRd08nxD6w7rIaZeDNGZGGQstH3SfLQ3ZsKICk= +go.opentelemetry.io/otel/sdk v1.15.0/go.mod h1:XDEMrYWzJ4YlC17i6Luih2lwDw2j6G0PkUfr1ZqE+rQ= go.opentelemetry.io/otel/sdk/metric v0.37.0 h1:haYBBtZZxiI3ROwSmkZnI+d0+AVzBWeviuYQDeBWosU= go.opentelemetry.io/otel/sdk/metric v0.37.0/go.mod h1:mO2WV1AZKKwhwHTV3AKOoIEb9LbUaENZDuGUQd+j4A0= -go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= -go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= +go.opentelemetry.io/otel/sdk/metric v0.38.0 h1:c/6/VZihe+5ink8ERufY1/o1QtnoON+k1YonZF2jYR4= +go.opentelemetry.io/otel/sdk/metric v0.38.0/go.mod h1:tqrguFLaGJ3i+uyG67bzxJgsG6Y2bL6HmAn9V/cVRRo= +go.opentelemetry.io/otel/trace v1.15.0 h1:5Fwje4O2ooOxkfyqI/kJwxWotggDLix4BSAvpE1wlpo= +go.opentelemetry.io/otel/trace v1.15.0/go.mod h1:CUsmE2Ht1CRkvE8OsMESvraoZrrcgD1J2W8GV1ev0Y4= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/lightstep/instrumentation/host/host.go b/lightstep/instrumentation/host/host.go index 46331bb2..449f55b2 100644 --- a/lightstep/instrumentation/host/host.go +++ b/lightstep/instrumentation/host/host.go @@ -65,20 +65,36 @@ func (o metricProviderOption) apply(c *config) { var ( // Attribute sets for CPU time measurements. - AttributeCPUTimeUser = []attribute.KeyValue{attribute.String("state", "user")} - AttributeCPUTimeSystem = []attribute.KeyValue{attribute.String("state", "system")} - AttributeCPUTimeOther = []attribute.KeyValue{attribute.String("state", "other")} - AttributeCPUTimeIdle = []attribute.KeyValue{attribute.String("state", "idle")} + AttributeCPUTimeUser = []metric.ObserveOption{ + metric.WithAttributes(attribute.String("state", "user")), + } + AttributeCPUTimeSystem = []metric.ObserveOption{ + metric.WithAttributes(attribute.String("state", "system")), + } + AttributeCPUTimeOther = []metric.ObserveOption{ + metric.WithAttributes(attribute.String("state", "other")), + } + AttributeCPUTimeIdle = []metric.ObserveOption{ + metric.WithAttributes(attribute.String("state", "idle")), + } // Attribute sets used for Memory measurements. - AttributeMemoryAvailable = []attribute.KeyValue{attribute.String("state", "available")} - AttributeMemoryUsed = []attribute.KeyValue{attribute.String("state", "used")} + AttributeMemoryAvailable = []metric.ObserveOption{ + metric.WithAttributes(attribute.String("state", "available")), + } + AttributeMemoryUsed = []metric.ObserveOption{ + metric.WithAttributes(attribute.String("state", "used")), + } // Attribute sets used for Network measurements. - AttributeNetworkTransmit = []attribute.KeyValue{attribute.String("direction", "transmit")} - AttributeNetworkReceive = []attribute.KeyValue{attribute.String("direction", "receive")} + AttributeNetworkTransmit = []metric.ObserveOption{ + metric.WithAttributes(attribute.String("direction", "transmit")), + } + AttributeNetworkReceive = []metric.ObserveOption{ + metric.WithAttributes(attribute.String("direction", "receive")), + } ) // newConfig computes a config from a list of Options. diff --git a/lightstep/instrumentation/host/host_test.go b/lightstep/instrumentation/host/host_test.go index 54cf37bd..7df33212 100644 --- a/lightstep/instrumentation/host/host_test.go +++ b/lightstep/instrumentation/host/host_test.go @@ -29,10 +29,17 @@ import ( "github.com/stretchr/testify/require" "go.opentelemetry.io/otel/attribute" + apimetric "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/sdk/metric" "go.opentelemetry.io/otel/sdk/metric/metricdata" ) +func attrSlice(opts []apimetric.ObserveOption) []attribute.KeyValue { + cfg := apimetric.NewObserveConfig(opts) + attrs := cfg.Attributes() + return attrs.ToSlice() +} + func getMetric(metrics []metricdata.Metrics, name string, lbl attribute.KeyValue) float64 { for _, m := range metrics { fmt.Println(m.Name) @@ -83,7 +90,6 @@ func getMetric(metrics []metricdata.Metrics, name string, lbl attribute.KeyValue } panic(fmt.Sprintf("Could not locate a metric in test output, name: %s, keyValue: %v", name, lbl)) } - func TestHostCPU(t *testing.T) { ctx := context.Background() reader := metric.NewManualReader() @@ -115,8 +121,8 @@ func TestHostCPU(t *testing.T) { require.NoError(t, err) require.Equal(t, 1, len(data.ScopeMetrics)) - hostUser := getMetric(data.ScopeMetrics[0].Metrics, "system.cpu.time", AttributeCPUTimeUser[0]) - hostSystem := getMetric(data.ScopeMetrics[0].Metrics, "system.cpu.time", AttributeCPUTimeSystem[0]) + hostUser := getMetric(data.ScopeMetrics[0].Metrics, "system.cpu.time", attrSlice(AttributeCPUTimeUser)[0]) + hostSystem := getMetric(data.ScopeMetrics[0].Metrics, "system.cpu.time", attrSlice(AttributeCPUTimeSystem)[0]) hostAfter, err := cpu.TimesWithContext(ctx, false) require.NoError(t, err) @@ -157,19 +163,19 @@ func TestHostMemory(t *testing.T) { require.NoError(t, err) require.Equal(t, 1, len(data.ScopeMetrics)) - hostUsed := getMetric(data.ScopeMetrics[0].Metrics, "system.memory.usage", AttributeMemoryUsed[0]) + hostUsed := getMetric(data.ScopeMetrics[0].Metrics, "system.memory.usage", attrSlice(AttributeMemoryUsed)[0]) assert.Greater(t, hostUsed, 0.0) assert.LessOrEqual(t, hostUsed, float64(vMem.Total)) - hostAvailable := getMetric(data.ScopeMetrics[0].Metrics, "system.memory.usage", AttributeMemoryAvailable[0]) + hostAvailable := getMetric(data.ScopeMetrics[0].Metrics, "system.memory.usage", attrSlice(AttributeMemoryAvailable)[0]) assert.GreaterOrEqual(t, hostAvailable, 0.0) assert.Less(t, hostAvailable, float64(vMem.Total)) - hostUsedUtil := getMetric(data.ScopeMetrics[0].Metrics, "system.memory.utilization", AttributeMemoryUsed[0]) + hostUsedUtil := getMetric(data.ScopeMetrics[0].Metrics, "system.memory.utilization", attrSlice(AttributeMemoryUsed)[0]) assert.Greater(t, hostUsedUtil, 0.0) assert.LessOrEqual(t, hostUsedUtil, 1.0) - hostAvailableUtil := getMetric(data.ScopeMetrics[0].Metrics, "system.memory.utilization", AttributeMemoryAvailable[0]) + hostAvailableUtil := getMetric(data.ScopeMetrics[0].Metrics, "system.memory.utilization", attrSlice(AttributeMemoryAvailable)[0]) assert.GreaterOrEqual(t, hostAvailableUtil, 0.0) assert.Less(t, hostAvailableUtil, 1.0) @@ -244,8 +250,8 @@ func TestHostNetwork(t *testing.T) { err = reader.Collect(ctx, &data) require.NoError(t, err) require.Equal(t, 1, len(data.ScopeMetrics)) - hostTransmit := getMetric(data.ScopeMetrics[0].Metrics, "system.network.io", AttributeNetworkTransmit[0]) - hostReceive := getMetric(data.ScopeMetrics[0].Metrics, "system.network.io", AttributeNetworkReceive[0]) + hostTransmit := getMetric(data.ScopeMetrics[0].Metrics, "system.network.io", attrSlice(AttributeNetworkTransmit)[0]) + hostReceive := getMetric(data.ScopeMetrics[0].Metrics, "system.network.io", attrSlice(AttributeNetworkReceive)[0]) // Check that the recorded measurements reflect the same change: require.LessOrEqual(t, uint64(howMuch), uint64(hostTransmit)-hostBefore[0].BytesSent) diff --git a/lightstep/instrumentation/runtime/builtin.go b/lightstep/instrumentation/runtime/builtin.go index b59a753a..01e5ac90 100644 --- a/lightstep/instrumentation/runtime/builtin.go +++ b/lightstep/instrumentation/runtime/builtin.go @@ -20,7 +20,6 @@ import ( "runtime/metrics" "go.opentelemetry.io/otel" - "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/metric/global" "go.opentelemetry.io/otel/metric/instrument" @@ -110,9 +109,9 @@ func newBuiltinRuntime(meter metric.Meter, af allFunc, rf readFunc) *builtinRunt func (r *builtinRuntime) register(desc *builtinDescriptor) error { all := r.allFunc() - var instruments []instrument.Asynchronous + var instruments []metric.Observable var samples []metrics.Sample - var instAttrs [][]attribute.KeyValue + var instAttrs [][]metric.ObserveOption for _, m := range all { // each should match one @@ -137,10 +136,10 @@ func (r *builtinRuntime) register(desc *builtinDescriptor) error { description := fmt.Sprintf("%s from runtime/metrics", pattern) - unitOpt := instrument.WithUnit(munit) - descOpt := instrument.WithDescription(description) + unitOpt := metric.WithUnit(munit) + descOpt := metric.WithDescription(description) - var inst instrument.Asynchronous + var inst metric.Observable switch kind { case builtinCounter: switch m.Kind { @@ -182,7 +181,9 @@ func (r *builtinRuntime) register(desc *builtinDescriptor) error { } samples = append(samples, samp) instruments = append(instruments, inst) - instAttrs = append(instAttrs, attrs) + instAttrs = append(instAttrs, []metric.ObserveOption{ + metric.WithAttributes(attrs...), + }) } if _, err := r.meter.RegisterCallback(func(ctx context.Context, obs metric.Observer) error { From 8106d1fc42a36a7812ef4f976317a1102231e403 Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Mon, 22 May 2023 16:58:40 -0700 Subject: [PATCH 08/12] OTel-Go API v0.38.1 --- go.mod | 69 ++++---- go.sum | 166 +++++++++--------- lightstep/instrumentation/cputime/cputime.go | 13 +- lightstep/instrumentation/go.mod | 6 +- lightstep/instrumentation/go.sum | 16 +- lightstep/instrumentation/host/host.go | 23 ++- lightstep/instrumentation/runtime/builtin.go | 5 +- lightstep/sdk/metric/example/go.mod | 49 +++--- lightstep/sdk/metric/example/go.sum | 127 +++++++------- .../metric/exporters/otlp/otelcol/client.go | 4 +- .../exporters/otlp/otelcol/client_test.go | 40 ++--- lightstep/sdk/metric/go.mod | 6 +- lightstep/sdk/metric/go.sum | 12 +- pipelines/go.mod | 69 ++++---- pipelines/go.sum | 166 +++++++++--------- 15 files changed, 388 insertions(+), 383 deletions(-) diff --git a/go.mod b/go.mod index 981487e5..cf3932e5 100644 --- a/go.mod +++ b/go.mod @@ -6,11 +6,11 @@ require ( github.com/lightstep/otel-launcher-go/lightstep/sdk/metric v1.17.0 github.com/lightstep/otel-launcher-go/pipelines v1.17.0 github.com/sethvargo/go-envconfig v0.8.3 - github.com/stretchr/testify v1.8.2 - go.opentelemetry.io/otel v1.15.0 - go.opentelemetry.io/otel/metric v0.38.0 - go.opentelemetry.io/otel/sdk v1.15.0 - go.opentelemetry.io/otel/trace v1.15.0 + github.com/stretchr/testify v1.8.3 + go.opentelemetry.io/otel v1.15.1 + go.opentelemetry.io/otel/metric v0.38.1 + go.opentelemetry.io/otel/sdk v1.15.1 + go.opentelemetry.io/otel/trace v1.15.1 ) require ( @@ -18,10 +18,12 @@ require ( github.com/andybalholm/brotli v1.0.4 // indirect github.com/apache/arrow/go/v12 v12.0.0-20230404000714-f02d35119ae6 // indirect github.com/apache/thrift v0.16.0 // indirect + github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect - github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae // indirect + github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect + github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/fxamacker/cbor/v2 v2.4.0 // indirect github.com/go-logr/logr v1.2.4 // indirect @@ -48,50 +50,51 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/mostynb/go-grpc-compression v1.1.17 // indirect - github.com/pierrec/lz4/v4 v4.1.15 // indirect + github.com/mostynb/go-grpc-compression v1.1.18 // indirect + github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/shirou/gopsutil/v3 v3.23.3 // indirect - github.com/shoenig/go-m1cpu v0.1.4 // indirect + github.com/shirou/gopsutil/v3 v3.23.4 // indirect + github.com/shoenig/go-m1cpu v0.1.5 // indirect github.com/tklauser/go-sysconf v0.3.11 // indirect github.com/tklauser/numcpus v0.6.0 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect github.com/zeebo/xxh3 v1.0.2 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/collector v0.76.1 // indirect - go.opentelemetry.io/collector/component v0.76.1 // indirect - go.opentelemetry.io/collector/confmap v0.76.1 // indirect - go.opentelemetry.io/collector/consumer v0.76.1 // indirect - go.opentelemetry.io/collector/exporter v0.76.1 // indirect - go.opentelemetry.io/collector/featuregate v0.76.1 // indirect - go.opentelemetry.io/collector/pdata v1.0.0-rcv0011 // indirect - go.opentelemetry.io/collector/processor/batchprocessor v0.76.1 // indirect - go.opentelemetry.io/collector/receiver v0.76.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 // indirect - go.opentelemetry.io/contrib/instrumentation/host v0.40.0 // indirect - go.opentelemetry.io/contrib/instrumentation/runtime v0.40.0 // indirect - go.opentelemetry.io/contrib/propagators/b3 v1.15.0 // indirect - go.opentelemetry.io/contrib/propagators/ot v1.15.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.15.0 // indirect + go.opentelemetry.io/collector v0.78.1 // indirect + go.opentelemetry.io/collector/component v0.78.1 // indirect + go.opentelemetry.io/collector/confmap v0.78.1 // indirect + go.opentelemetry.io/collector/consumer v0.78.1 // indirect + go.opentelemetry.io/collector/exporter v0.78.1 // indirect + go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012 // indirect + go.opentelemetry.io/collector/pdata v1.0.0-rcv0012 // indirect + go.opentelemetry.io/collector/processor/batchprocessor v0.78.1 // indirect + go.opentelemetry.io/collector/receiver v0.78.1 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1 // indirect + go.opentelemetry.io/contrib/instrumentation/host v0.41.1 // indirect + go.opentelemetry.io/contrib/instrumentation/runtime v0.41.1 // indirect + go.opentelemetry.io/contrib/propagators/b3 v1.16.1 // indirect + go.opentelemetry.io/contrib/propagators/ot v1.16.1 // indirect + go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.37.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.15.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 // indirect - go.opentelemetry.io/otel/sdk/metric v0.38.0 // indirect + go.opentelemetry.io/otel/sdk/metric v0.38.1 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/mod v0.8.0 // indirect - golang.org/x/net v0.9.0 // indirect - golang.org/x/sys v0.7.0 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect + golang.org/x/mod v0.9.0 // indirect + golang.org/x/net v0.10.0 // indirect + golang.org/x/sys v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect - golang.org/x/tools v0.6.0 // indirect + golang.org/x/tools v0.7.0 // indirect golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect - google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect - google.golang.org/grpc v1.54.0 // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect + google.golang.org/grpc v1.55.0 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index e5bada5d..2e025e42 100644 --- a/go.sum +++ b/go.sum @@ -13,14 +13,14 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.15.1 h1:7UGq3QknM33pw5xATlpzeoomNxsacIVvTqTTvbfajmE= +cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= @@ -68,6 +68,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72H github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc h1:Keo7wQ7UODUaHcEi7ltENhbAK2VgZjfat6mLy03tQzo= +github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc/go.mod h1:k08r+Yj1PRAmuayFiRK6MYuR5Ve4IuZtTfxErMIh0+c= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -101,6 +103,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsYAX0YjD+8suexZDga5CctH4CCTx2+8= +github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -110,14 +114,13 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae h1:U65tCMLqh+DsFDz1TkiJWS5X38MX4DhKIfGshFpl6zo= -github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae/go.mod h1:s8WUytFkI6cWBELm9TzZv4xSd/05tbFitjBfKBKPQ6c= +github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828 h1:6SdnpOjaKnBly9jy9jAIrjcxao4BzfipBl8SLWZCSl8= +github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828/go.mod h1:5kH5ys/J13LW1n4OLjanCSnJNHkmZwUjN7XQrZIoEpU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= @@ -153,8 +156,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -282,7 +285,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= @@ -294,8 +296,7 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -343,8 +344,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/mostynb/go-grpc-compression v1.1.17 h1:N9t6taOJN3mNTTi0wDf4e3lp/G/ON1TP67Pn0vTUA9I= -github.com/mostynb/go-grpc-compression v1.1.17/go.mod h1:FUSBr0QjKqQgoDG/e0yiqlR6aqyXC39+g/hFLDfSsEY= +github.com/mostynb/go-grpc-compression v1.1.18 h1:4a9UFaq3GvZO64ZRWPhxbJhAMsbDNIGznsSA3v1oO8U= +github.com/mostynb/go-grpc-compression v1.1.18/go.mod h1:U/0nmev+iFgBJ/jsVEeJi4UzoGrixmDcsfmMB6JsROg= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= @@ -352,11 +353,11 @@ github.com/npillmayer/nestext v0.1.3/go.mod h1:h2lrijH8jpicr25dFY+oAJLyzlya6jhnu github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0= -github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= +github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -371,16 +372,16 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM= +github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.43.0 h1:iq+BVjvYLei5f27wiuNiB1DN6DYQkp1c8Bx0Vykh5us= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= @@ -390,7 +391,6 @@ github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -399,10 +399,10 @@ github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIH github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sethvargo/go-envconfig v0.8.3 h1:dXyUrDCJvCm3ybP7yNpiux93qoSORvuH23bdsgFfiJ0= github.com/sethvargo/go-envconfig v0.8.3/go.mod h1:Iz1Gy1Sf3T64TQlJSvee81qDhf7YIlt8GMUX6yyNFs0= -github.com/shirou/gopsutil/v3 v3.23.3 h1:Syt5vVZXUDXPEXpIBt5ziWsJ4LdSAAxF4l/xZeQgSEE= -github.com/shirou/gopsutil/v3 v3.23.3/go.mod h1:lSBNN6t3+D6W5e5nXTxc8KIMMVxAcS+6IJlffjRRlMU= -github.com/shoenig/go-m1cpu v0.1.4 h1:SZPIgRM2sEF9NJy50mRHu9PKGwxyyTTJIWvCtgVbozs= -github.com/shoenig/go-m1cpu v0.1.4/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ= +github.com/shirou/gopsutil/v3 v3.23.4 h1:hZwmDxZs7Ewt75DV81r4pFMqbq+di2cbt9FsQBqLD2o= +github.com/shirou/gopsutil/v3 v3.23.4/go.mod h1:ZcGxyfzAMRevhUR2+cfhXDH6gQdFYE/t8j1nsU4mPI8= +github.com/shoenig/go-m1cpu v0.1.5 h1:LF57Z/Fpb/WdGLjt2HZilNnmZOxg/q2bSKTQhgbrLrQ= +github.com/shoenig/go-m1cpu v0.1.5/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ= github.com/shoenig/test v0.6.3 h1:GVXWJFk9PiOjN0KoJ7VrJGH6uLPnqxR7/fe3HUPfE0c= github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -423,8 +423,9 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms= @@ -451,56 +452,56 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/collector v0.76.1 h1:dcJYZdhEh1XGBKNhAULtmyjHmaNtwhLGpTBEKcF3AHs= -go.opentelemetry.io/collector v0.76.1/go.mod h1:mHgwT+wbrnQ0keR3+vSwraIX2r8+mcFLrFEGwRL6gNI= -go.opentelemetry.io/collector/component v0.76.1 h1:jBTNZsI/H2hF26WoQZtXL9VvuMoo7Gjco72ERIeYHIE= -go.opentelemetry.io/collector/component v0.76.1/go.mod h1:R+IUN1lVr12k4SHpxB7zA3GwtFShVa/IaegZ/PF6EaE= -go.opentelemetry.io/collector/confmap v0.76.1 h1:6Rop2LdXpS32rxV3URXQXmAvFJQ1E366s9s08wYsbsw= -go.opentelemetry.io/collector/confmap v0.76.1/go.mod h1:KsSre9mI7E8W5VsvzbZQZ3SMQLcmJHIgdrkalQjD52s= -go.opentelemetry.io/collector/consumer v0.76.1 h1:+bSz3oATwrQD3Uu8drSyGqrp3OsFo+PS2BguRgiwTuY= -go.opentelemetry.io/collector/consumer v0.76.1/go.mod h1:cDjyt1bTvo48lgIlbdfruxA7Tqr22Jlee8TWjbNkEe0= -go.opentelemetry.io/collector/exporter v0.76.1 h1:xRDx5T5kS21C7M8T9s2+a14/KCC/GuSVGfhd5PlPIOY= -go.opentelemetry.io/collector/exporter v0.76.1/go.mod h1:d5RP2xtETn1rbs4MUZehgayua/4Ej8+XGjxElY2iLaM= -go.opentelemetry.io/collector/featuregate v0.76.1 h1:F9jP6cpIu446GsjsvHjzt4rC/ZJ/IPSPbXLzEngxUa8= -go.opentelemetry.io/collector/featuregate v0.76.1/go.mod h1:stbsuyEexJF0EyVB3AgMs4mEuGvP7MDj3fsNeNdGDMs= -go.opentelemetry.io/collector/pdata v1.0.0-rcv0011 h1:7lT0vseP89mHtUpvgmWYRvQZ0eY+SHbVsnXY20xkoMg= -go.opentelemetry.io/collector/pdata v1.0.0-rcv0011/go.mod h1:9vrXSQBeMRrdfGt9oMgYweqERJ8adaiQjN6LSbqRMMA= -go.opentelemetry.io/collector/processor/batchprocessor v0.76.1 h1:NjjzXMaGlWZXeSpJyjFA3DgUgHWqGaHw/FQcd5nFq4U= -go.opentelemetry.io/collector/processor/batchprocessor v0.76.1/go.mod h1:TLvPEn93Aq9erUQtpReW04CP1vqZ5xPow+96JSCaWg0= -go.opentelemetry.io/collector/receiver v0.76.1 h1:KBnOqKYLhMjOdCK/yPMX2oHKmrfOfxhm5sVC20aNV8M= -go.opentelemetry.io/collector/receiver v0.76.1/go.mod h1:u2uRjoxwEqSRjNjtc52+kEYT7pPbDWgq12xFn6aVesk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 h1:5jD3teb4Qh7mx/nfzq4jO2WFFpvXD0vYWFDrdvNWmXk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0/go.mod h1:UMklln0+MRhZC4e3PwmN3pCtq4DyIadWw4yikh6bNrw= -go.opentelemetry.io/contrib/instrumentation/host v0.40.0 h1:cZurGyTXSgUrXHLjcwh+hVXBv98xMIigZFF5tJ/8La0= -go.opentelemetry.io/contrib/instrumentation/host v0.40.0/go.mod h1:7HKwySOL83pJ4FP3SJnjA8cOK4MxE2qHtq9ErpNqTks= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0 h1:lE9EJyw3/JhrjWH/hEy9FptnalDQgj7vpbgC2KCCCxE= -go.opentelemetry.io/contrib/instrumentation/runtime v0.40.0 h1:Qf1GuR3QFxTNqDhfuw9XuJMkOOyRUwWP9NdFakk3RXM= -go.opentelemetry.io/contrib/instrumentation/runtime v0.40.0/go.mod h1:zmll4G8j5zRZeFURG6t/N7SOl7M5kUHQfV5UVqTaQFI= -go.opentelemetry.io/contrib/propagators/b3 v1.15.0 h1:bMaonPyFcAvZ4EVzkUNkfnUHP5Zi63CIDlA3dRsEg8Q= -go.opentelemetry.io/contrib/propagators/b3 v1.15.0/go.mod h1:VjU0g2v6HSQ+NwfifambSLAeBgevjIcqmceaKWEzl0c= -go.opentelemetry.io/contrib/propagators/ot v1.15.0 h1:iBNejawWy7wWZ5msuZDNcMjBy14Wc0v3gCAXukGHN/Q= -go.opentelemetry.io/contrib/propagators/ot v1.15.0/go.mod h1:0P7QQ+MHt6SXR1ATaMpewSiWlp8NbKErNLKcaU4EEKI= -go.opentelemetry.io/otel v1.15.0 h1:NIl24d4eiLJPM0vKn4HjLYM+UZf6gSfi9Z+NmCxkWbk= -go.opentelemetry.io/otel v1.15.0/go.mod h1:qfwLEbWhLPk5gyWrne4XnF0lC8wtywbuJbgfAE3zbek= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.15.0 h1:ZSdnH1x5Gm/eUFNQquwSt4/LMCOqS6KPlI9qaTKx5Ho= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.15.0/go.mod h1:uOTV75+LOzV+ODmL8ahRLWkFA3eQcSC2aAsbxIu4duk= +go.opentelemetry.io/collector v0.78.1 h1:bcquLpoYZ0Y+USWCMvn3JiAaJvsBc5Z9HljZRco5UFc= +go.opentelemetry.io/collector v0.78.1/go.mod h1:fVGv9Cr2e2ZNb82U8fCkraC7ujg5E4Qwf2k2s/GyXvo= +go.opentelemetry.io/collector/component v0.78.1 h1:KG4N0Kfl2oBN2utDXpYRN1vQ4V1sknihH55Tvs8htEU= +go.opentelemetry.io/collector/component v0.78.1/go.mod h1:40VqQaeXncgTm1E+EK0uGFv9gvrah5NTXTrn6C9TuIY= +go.opentelemetry.io/collector/confmap v0.78.1 h1:nALyvRooTBhTH6SKBMtGxsFHBw8QO+RMZKjnha9tx9k= +go.opentelemetry.io/collector/confmap v0.78.1/go.mod h1:nudYcQJDF5zmAd2GKe5PetMF8/Lg1Mc/EjAKQBXHdyg= +go.opentelemetry.io/collector/consumer v0.78.1 h1:yD2ECKX6egbY8NRxn8Xhl+4+40ZdjD4BW51fNXNp7qc= +go.opentelemetry.io/collector/consumer v0.78.1/go.mod h1:0vzYDn6eYmIDdC6CgTr/ATVlwutFk1Abet49/heKSmA= +go.opentelemetry.io/collector/exporter v0.78.1 h1:HPxcCdgrjjB4kqglBFxjqTbqYY6PhIlPFzaozFxY5LU= +go.opentelemetry.io/collector/exporter v0.78.1/go.mod h1:2xRXlfv2WgedYT8JFGb++o0O/LtvpgOgrHFXxZKQq/I= +go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012 h1:pSO81lfikGEgRXHepmOGy2o6WWCly427UJCgMJC5c8g= +go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012/go.mod h1:/kVAsGUCyJXIDSgHftCN63QiwAEVHRLX2Kh/S+dqgHY= +go.opentelemetry.io/collector/pdata v1.0.0-rcv0012 h1:R+cfEUMyLn9Q1QknyQ4QU77pbfc1aJKYEXFHtnwSbCg= +go.opentelemetry.io/collector/pdata v1.0.0-rcv0012/go.mod h1:rEAKFqc1L03lidKtra/2/dJtI0Hp+JsQxuPEIkj/2Vg= +go.opentelemetry.io/collector/processor/batchprocessor v0.78.1 h1:rrKVGvbnzWls1Uev4vxbjqYmOdp86N3nM8WQoKQrH+A= +go.opentelemetry.io/collector/processor/batchprocessor v0.78.1/go.mod h1:6rdnvQXPzo0sIhrUVK4bpZ7EmDdR+bSpTdf7gmChhUU= +go.opentelemetry.io/collector/receiver v0.78.1 h1:MSgnfyIk2OATOvVLJhTFH29rObN6umCEqbeuGLfdUhw= +go.opentelemetry.io/collector/receiver v0.78.1/go.mod h1:3uz9mktAkTBFcAkwapirH6InuPUL44Oa6MnoXmQJ2ms= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1 h1:Ei1FUQ5CbSNkl2o/XAiksXSyQNAeJBX3ivqJpJ254Ak= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1/go.mod h1:f7TOPTlEcliCBlOYPuNnZTuND71MVTAoINWIt1SmP/c= +go.opentelemetry.io/contrib/instrumentation/host v0.41.1 h1:B/s7HG33iwus4cwd8NsPk9H6nLKJpLcLgGV2D9RkfsI= +go.opentelemetry.io/contrib/instrumentation/host v0.41.1/go.mod h1:OdaD/6LjpX5H0ZCKf9EgR6yKFQihVizQMBRLFGlyTP4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.41.1 h1:pX+lppB8PArapyhS6nBStyQmkaDUPWdQf0UmEGRCQ54= +go.opentelemetry.io/contrib/instrumentation/runtime v0.41.1 h1:KXWR7rFIuQLMo/dHu/DTev7qdQdTuGCxTfEUZdLaMfs= +go.opentelemetry.io/contrib/instrumentation/runtime v0.41.1/go.mod h1:fNv3vYJmbcUl4qVQK9tbAVBQjTAbfDDQa/cFgpOTm50= +go.opentelemetry.io/contrib/propagators/b3 v1.16.1 h1:Y9Dk1kR93eSHadRTkqnm+QyQVhHthCcvTkoP/Afh7+4= +go.opentelemetry.io/contrib/propagators/b3 v1.16.1/go.mod h1:IR0G6txqoetQrjjdoDGe+udhFegxnQQd0dOJfFS8Jg0= +go.opentelemetry.io/contrib/propagators/ot v1.16.1 h1:3WV1I2H0UiNbisvGU6oqmrxN9Cfyk4yPkxUKiikqYyU= +go.opentelemetry.io/contrib/propagators/ot v1.16.1/go.mod h1:8330C6LX5qEV4x/2k+RIHh7H7Bggs9d9Hs42RmsA4j0= +go.opentelemetry.io/otel v1.15.1 h1:3Iwq3lfRByPaws0f6bU3naAqOR1n5IeDWd9390kWHa8= +go.opentelemetry.io/otel v1.15.1/go.mod h1:mHHGEHVDLal6YrKMmk9LqC4a3sF5g+fHfrttQIB1NTc= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 h1:t4ZwRPU+emrcvM2e9DHd0Fsf0JTPVcbfa/BhTDF03d0= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0/go.mod h1:vLarbg68dH2Wa77g71zmKQqlQ8+8Rq3GRG31uc0WcWI= go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.37.0 h1:22J9c9mxNAZugv86zhwjBnER0DbO0VVpW9Oo/j3jBBQ= go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.37.0/go.mod h1:QD8SSO9fgtBOvXYpcX5NXW+YnDJByTnh7a/9enQWFmw= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.37.0 h1:CI6DSdsSkJxX1rsfPSQ0SciKx6klhdDRBXqKb+FwXG8= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.37.0/go.mod h1:WLBYPrz8srktckhCjFaau4VHSfGaMuqoKSXwpzaiRZg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.15.1 h1:tyoeaUh8REKay72DVYsSEBYV18+fGONe+YYPaOxgLoE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.15.1/go.mod h1:HUSnrjQQ19KX9ECjpQxufsF+3ioD3zISPMlauTPZu2g= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 h1:ap+y8RXX3Mu9apKVtOkM6WSFESLM8K3wNQyOU8sWHcc= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0/go.mod h1:5w41DY6S9gZrbjuq6Y+753e96WfPha5IcsOSZTtullM= -go.opentelemetry.io/otel/exporters/prometheus v0.37.0 h1:NQc0epfL0xItsmGgSXgfbH2C1fq2VLXkZoDFsfRNHpc= -go.opentelemetry.io/otel/metric v0.38.0 h1:vv/Nv/44S3GzMMmeUhaesBKsAenE6xLkTVWL+zuv30w= -go.opentelemetry.io/otel/metric v0.38.0/go.mod h1:uAtxN5hl8aXh5irD8afBtSwQU5Zjg64WWSz6KheZxBg= -go.opentelemetry.io/otel/sdk v1.15.0 h1:jZTCkRRd08nxD6w7rIaZeDNGZGGQstH3SfLQ3ZsKICk= -go.opentelemetry.io/otel/sdk v1.15.0/go.mod h1:XDEMrYWzJ4YlC17i6Luih2lwDw2j6G0PkUfr1ZqE+rQ= -go.opentelemetry.io/otel/sdk/metric v0.38.0 h1:c/6/VZihe+5ink8ERufY1/o1QtnoON+k1YonZF2jYR4= -go.opentelemetry.io/otel/sdk/metric v0.38.0/go.mod h1:tqrguFLaGJ3i+uyG67bzxJgsG6Y2bL6HmAn9V/cVRRo= -go.opentelemetry.io/otel/trace v1.15.0 h1:5Fwje4O2ooOxkfyqI/kJwxWotggDLix4BSAvpE1wlpo= -go.opentelemetry.io/otel/trace v1.15.0/go.mod h1:CUsmE2Ht1CRkvE8OsMESvraoZrrcgD1J2W8GV1ev0Y4= +go.opentelemetry.io/otel/exporters/prometheus v0.38.1 h1:GwalIvFIx91qIA8qyAyqYj9lql5Ba2Oxj/jDG6+3UoU= +go.opentelemetry.io/otel/metric v0.38.1 h1:2MM7m6wPw9B8Qv8iHygoAgkbejed59uUR6ezR5T3X2s= +go.opentelemetry.io/otel/metric v0.38.1/go.mod h1:FwqNHD3I/5iX9pfrRGZIlYICrJv0rHEUl2Ln5vdIVnQ= +go.opentelemetry.io/otel/sdk v1.15.1 h1:5FKR+skgpzvhPQHIEfcwMYjCBr14LWzs3uSqKiQzETI= +go.opentelemetry.io/otel/sdk v1.15.1/go.mod h1:8rVtxQfrbmbHKfqzpQkT5EzZMcbMBwTzNAggbEAM0KA= +go.opentelemetry.io/otel/sdk/metric v0.38.1 h1:EkO5wI4NT/fUaoPMGc0fKV28JaWe7q4vfVpEVasGb+8= +go.opentelemetry.io/otel/sdk/metric v0.38.1/go.mod h1:Rn4kSXFF9ZQZ5lL1pxQjCbK4seiO+U7s0ncmIFJaj34= +go.opentelemetry.io/otel/trace v1.15.1 h1:uXLo6iHJEzDfrNC0L0mNjItIp06SyaBQxu5t3xMlngY= +go.opentelemetry.io/otel/trace v1.15.1/go.mod h1:IWdQG/5N1x7f6YUlmdLeJvH9yxtuJAfc4VW5Agv9r/8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -534,7 +535,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220827204233-334a2380cb91 h1:tnebWN09GYg9OLPss1KXj8txwZc6X6uMr6VFdcGNbHw= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -558,8 +560,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -594,15 +596,15 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M= +golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -669,9 +671,9 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -732,8 +734,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -742,7 +744,7 @@ golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.12.0 h1:xKuo6hzt+gMav00meVPUlXwSdoEJP46BR+wdxQEFK2o= +gonum.org/v1/gonum v0.13.0 h1:a0T3bh+7fhRyqeNbiC3qVHYmkiQgit3wnNan/2c0HMM= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -801,8 +803,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f h1:BWUVssLB0HVOSY78gIdvk1dTVYtT1y8SBWtPYuTJ/6w= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -823,8 +825,8 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/lightstep/instrumentation/cputime/cputime.go b/lightstep/instrumentation/cputime/cputime.go index 83ff1180..08fdb4bb 100644 --- a/lightstep/instrumentation/cputime/cputime.go +++ b/lightstep/instrumentation/cputime/cputime.go @@ -21,7 +21,6 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/metric/global" - "go.opentelemetry.io/otel/metric/instrument" ) // processStartTime should be initialized before the first GC, ideally. @@ -94,14 +93,14 @@ func (c *cputime) register() error { var ( err error - processCPUTime instrument.Float64ObservableCounter - processUptime instrument.Float64ObservableUpDownCounter + processCPUTime metric.Float64ObservableCounter + processUptime metric.Float64ObservableUpDownCounter ) if processCPUTime, err = c.meter.Float64ObservableCounter( "process.cpu.time", - instrument.WithUnit("s"), - instrument.WithDescription( + metric.WithUnit("s"), + metric.WithDescription( "Accumulated CPU time spent by this process attributed by state (User, System, ...)", ), ); err != nil { @@ -110,8 +109,8 @@ func (c *cputime) register() error { if processUptime, err = c.meter.Float64ObservableUpDownCounter( "process.uptime", - instrument.WithUnit("s"), - instrument.WithDescription("Seconds since application was initialized"), + metric.WithUnit("s"), + metric.WithDescription("Seconds since application was initialized"), ); err != nil { return err } diff --git a/lightstep/instrumentation/go.mod b/lightstep/instrumentation/go.mod index 2858ae24..168cbe15 100644 --- a/lightstep/instrumentation/go.mod +++ b/lightstep/instrumentation/go.mod @@ -5,8 +5,8 @@ go 1.18 require ( github.com/shirou/gopsutil/v3 v3.22.9 github.com/stretchr/testify v1.8.2 - go.opentelemetry.io/otel v1.15.0 - go.opentelemetry.io/otel/metric v0.38.0 + go.opentelemetry.io/otel v1.15.1 + go.opentelemetry.io/otel/metric v0.38.1 go.opentelemetry.io/otel/sdk/metric v0.38.0 ) @@ -24,7 +24,7 @@ require ( github.com/tklauser/numcpus v0.4.0 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.opentelemetry.io/otel/sdk v1.15.0 // indirect - go.opentelemetry.io/otel/trace v1.15.0 // indirect + go.opentelemetry.io/otel/trace v1.15.1 // indirect golang.org/x/sys v0.7.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/lightstep/instrumentation/go.sum b/lightstep/instrumentation/go.sum index 36120e14..8bb189f8 100644 --- a/lightstep/instrumentation/go.sum +++ b/lightstep/instrumentation/go.sum @@ -44,20 +44,16 @@ github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq// github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.opentelemetry.io/otel v1.15.0 h1:NIl24d4eiLJPM0vKn4HjLYM+UZf6gSfi9Z+NmCxkWbk= -go.opentelemetry.io/otel v1.15.0/go.mod h1:qfwLEbWhLPk5gyWrne4XnF0lC8wtywbuJbgfAE3zbek= -go.opentelemetry.io/otel/metric v0.38.0 h1:vv/Nv/44S3GzMMmeUhaesBKsAenE6xLkTVWL+zuv30w= -go.opentelemetry.io/otel/metric v0.38.0/go.mod h1:uAtxN5hl8aXh5irD8afBtSwQU5Zjg64WWSz6KheZxBg= -go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= -go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= +go.opentelemetry.io/otel v1.15.1 h1:3Iwq3lfRByPaws0f6bU3naAqOR1n5IeDWd9390kWHa8= +go.opentelemetry.io/otel v1.15.1/go.mod h1:mHHGEHVDLal6YrKMmk9LqC4a3sF5g+fHfrttQIB1NTc= +go.opentelemetry.io/otel/metric v0.38.1 h1:2MM7m6wPw9B8Qv8iHygoAgkbejed59uUR6ezR5T3X2s= +go.opentelemetry.io/otel/metric v0.38.1/go.mod h1:FwqNHD3I/5iX9pfrRGZIlYICrJv0rHEUl2Ln5vdIVnQ= go.opentelemetry.io/otel/sdk v1.15.0 h1:jZTCkRRd08nxD6w7rIaZeDNGZGGQstH3SfLQ3ZsKICk= go.opentelemetry.io/otel/sdk v1.15.0/go.mod h1:XDEMrYWzJ4YlC17i6Luih2lwDw2j6G0PkUfr1ZqE+rQ= -go.opentelemetry.io/otel/sdk/metric v0.37.0 h1:haYBBtZZxiI3ROwSmkZnI+d0+AVzBWeviuYQDeBWosU= -go.opentelemetry.io/otel/sdk/metric v0.37.0/go.mod h1:mO2WV1AZKKwhwHTV3AKOoIEb9LbUaENZDuGUQd+j4A0= go.opentelemetry.io/otel/sdk/metric v0.38.0 h1:c/6/VZihe+5ink8ERufY1/o1QtnoON+k1YonZF2jYR4= go.opentelemetry.io/otel/sdk/metric v0.38.0/go.mod h1:tqrguFLaGJ3i+uyG67bzxJgsG6Y2bL6HmAn9V/cVRRo= -go.opentelemetry.io/otel/trace v1.15.0 h1:5Fwje4O2ooOxkfyqI/kJwxWotggDLix4BSAvpE1wlpo= -go.opentelemetry.io/otel/trace v1.15.0/go.mod h1:CUsmE2Ht1CRkvE8OsMESvraoZrrcgD1J2W8GV1ev0Y4= +go.opentelemetry.io/otel/trace v1.15.1 h1:uXLo6iHJEzDfrNC0L0mNjItIp06SyaBQxu5t3xMlngY= +go.opentelemetry.io/otel/trace v1.15.1/go.mod h1:IWdQG/5N1x7f6YUlmdLeJvH9yxtuJAfc4VW5Agv9r/8= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/lightstep/instrumentation/host/host.go b/lightstep/instrumentation/host/host.go index 449f55b2..167a2113 100644 --- a/lightstep/instrumentation/host/host.go +++ b/lightstep/instrumentation/host/host.go @@ -26,7 +26,6 @@ import ( "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/metric/global" - "go.opentelemetry.io/otel/metric/instrument" ) // Host reports the work-in-progress conventional host metrics specified by OpenTelemetry. @@ -128,10 +127,10 @@ func (h *host) register() error { var ( err error - hostCPUTime instrument.Float64ObservableCounter - hostMemoryUsage instrument.Int64ObservableUpDownCounter - hostMemoryUtilization instrument.Float64ObservableGauge - networkIOUsage instrument.Int64ObservableCounter + hostCPUTime metric.Float64ObservableCounter + hostMemoryUsage metric.Int64ObservableUpDownCounter + hostMemoryUtilization metric.Float64ObservableGauge + networkIOUsage metric.Int64ObservableCounter // lock prevents a race between batch observer and instrument registration. lock sync.Mutex @@ -142,8 +141,8 @@ func (h *host) register() error { if hostCPUTime, err = h.meter.Float64ObservableCounter( "system.cpu.time", - instrument.WithUnit("s"), - instrument.WithDescription( + metric.WithUnit("s"), + metric.WithDescription( "Accumulated CPU time spent by this process host attributed by state (User, System, Other, Idle)", ), ); err != nil { @@ -152,8 +151,8 @@ func (h *host) register() error { if hostMemoryUsage, err = h.meter.Int64ObservableUpDownCounter( "system.memory.usage", - instrument.WithUnit("By"), - instrument.WithDescription( + metric.WithUnit("By"), + metric.WithDescription( "Memory usage of this process host attributed by memory state (Used, Available)", ), ); err != nil { @@ -162,7 +161,7 @@ func (h *host) register() error { if hostMemoryUtilization, err = h.meter.Float64ObservableGauge( "system.memory.utilization", - instrument.WithDescription( + metric.WithDescription( "Memory utilization of this process host attributed by memory state (Used, Available)", ), ); err != nil { @@ -171,8 +170,8 @@ func (h *host) register() error { if networkIOUsage, err = h.meter.Int64ObservableCounter( "system.network.io", - instrument.WithUnit("By"), - instrument.WithDescription( + metric.WithUnit("By"), + metric.WithDescription( "Bytes transferred attributed by direction (Transmit, Receive)", ), ); err != nil { diff --git a/lightstep/instrumentation/runtime/builtin.go b/lightstep/instrumentation/runtime/builtin.go index 01e5ac90..b850a296 100644 --- a/lightstep/instrumentation/runtime/builtin.go +++ b/lightstep/instrumentation/runtime/builtin.go @@ -22,7 +22,6 @@ import ( "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/metric/global" - "go.opentelemetry.io/otel/metric/instrument" ) // namePrefix is prefixed onto OTel instrument names. @@ -192,9 +191,9 @@ func (r *builtinRuntime) register(desc *builtinDescriptor) error { for idx, samp := range samples { switch samp.Value.Kind() { case metrics.KindUint64: - obs.ObserveInt64(instruments[idx].(instrument.Int64Observable), int64(samp.Value.Uint64()), instAttrs[idx]...) + obs.ObserveInt64(instruments[idx].(metric.Int64Observable), int64(samp.Value.Uint64()), instAttrs[idx]...) case metrics.KindFloat64: - obs.ObserveFloat64(instruments[idx].(instrument.Float64Observable), samp.Value.Float64(), instAttrs[idx]...) + obs.ObserveFloat64(instruments[idx].(metric.Float64Observable), samp.Value.Float64(), instAttrs[idx]...) default: // KindFloat64Histogram (unsupported in OTel) and KindBad // (unsupported by runtime/metrics). Neither should happen diff --git a/lightstep/sdk/metric/example/go.mod b/lightstep/sdk/metric/example/go.mod index c7ef8704..a6138309 100644 --- a/lightstep/sdk/metric/example/go.mod +++ b/lightstep/sdk/metric/example/go.mod @@ -13,9 +13,11 @@ require ( github.com/andybalholm/brotli v1.0.4 // indirect github.com/apache/arrow/go/v12 v12.0.0-20230404000714-f02d35119ae6 // indirect github.com/apache/thrift v0.16.0 // indirect + github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect - github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae // indirect + github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect + github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/fxamacker/cbor/v2 v2.4.0 // indirect github.com/go-logr/logr v1.2.4 // indirect @@ -39,36 +41,37 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/mostynb/go-grpc-compression v1.1.17 // indirect - github.com/pierrec/lz4/v4 v4.1.15 // indirect + github.com/mostynb/go-grpc-compression v1.1.18 // indirect + github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/zeebo/xxh3 v1.0.2 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/collector v0.76.1 // indirect - go.opentelemetry.io/collector/component v0.76.1 // indirect - go.opentelemetry.io/collector/confmap v0.76.1 // indirect - go.opentelemetry.io/collector/consumer v0.76.1 // indirect - go.opentelemetry.io/collector/exporter v0.76.1 // indirect - go.opentelemetry.io/collector/featuregate v0.76.1 // indirect - go.opentelemetry.io/collector/pdata v1.0.0-rcv0011 // indirect - go.opentelemetry.io/collector/processor/batchprocessor v0.76.1 // indirect - go.opentelemetry.io/collector/receiver v0.76.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 // indirect - go.opentelemetry.io/otel v1.15.0 // indirect - go.opentelemetry.io/otel/metric v0.38.0 // indirect - go.opentelemetry.io/otel/sdk v1.15.0 // indirect - go.opentelemetry.io/otel/trace v1.15.0 // indirect + go.opentelemetry.io/collector v0.78.1 // indirect + go.opentelemetry.io/collector/component v0.78.1 // indirect + go.opentelemetry.io/collector/confmap v0.78.1 // indirect + go.opentelemetry.io/collector/consumer v0.78.1 // indirect + go.opentelemetry.io/collector/exporter v0.78.1 // indirect + go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012 // indirect + go.opentelemetry.io/collector/pdata v1.0.0-rcv0012 // indirect + go.opentelemetry.io/collector/processor/batchprocessor v0.78.1 // indirect + go.opentelemetry.io/collector/receiver v0.78.1 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1 // indirect + go.opentelemetry.io/otel v1.15.1 // indirect + go.opentelemetry.io/otel/metric v0.38.1 // indirect + go.opentelemetry.io/otel/sdk v1.15.1 // indirect + go.opentelemetry.io/otel/trace v1.15.1 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/mod v0.8.0 // indirect - golang.org/x/net v0.9.0 // indirect - golang.org/x/sys v0.7.0 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect + golang.org/x/mod v0.9.0 // indirect + golang.org/x/net v0.10.0 // indirect + golang.org/x/sys v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect - golang.org/x/tools v0.6.0 // indirect + golang.org/x/tools v0.7.0 // indirect golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect - google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect - google.golang.org/grpc v1.54.0 // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect + google.golang.org/grpc v1.55.0 // indirect google.golang.org/protobuf v1.30.0 // indirect ) diff --git a/lightstep/sdk/metric/example/go.sum b/lightstep/sdk/metric/example/go.sum index 1c91e478..f195f30e 100644 --- a/lightstep/sdk/metric/example/go.sum +++ b/lightstep/sdk/metric/example/go.sum @@ -13,14 +13,14 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.15.1 h1:7UGq3QknM33pw5xATlpzeoomNxsacIVvTqTTvbfajmE= +cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= @@ -68,6 +68,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72H github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc h1:Keo7wQ7UODUaHcEi7ltENhbAK2VgZjfat6mLy03tQzo= +github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc/go.mod h1:k08r+Yj1PRAmuayFiRK6MYuR5Ve4IuZtTfxErMIh0+c= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -101,6 +103,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsYAX0YjD+8suexZDga5CctH4CCTx2+8= +github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -110,14 +114,13 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae h1:U65tCMLqh+DsFDz1TkiJWS5X38MX4DhKIfGshFpl6zo= -github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae/go.mod h1:s8WUytFkI6cWBELm9TzZv4xSd/05tbFitjBfKBKPQ6c= +github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828 h1:6SdnpOjaKnBly9jy9jAIrjcxao4BzfipBl8SLWZCSl8= +github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828/go.mod h1:5kH5ys/J13LW1n4OLjanCSnJNHkmZwUjN7XQrZIoEpU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= @@ -151,8 +154,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -279,7 +282,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= @@ -291,7 +293,6 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= @@ -336,8 +337,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/mostynb/go-grpc-compression v1.1.17 h1:N9t6taOJN3mNTTi0wDf4e3lp/G/ON1TP67Pn0vTUA9I= -github.com/mostynb/go-grpc-compression v1.1.17/go.mod h1:FUSBr0QjKqQgoDG/e0yiqlR6aqyXC39+g/hFLDfSsEY= +github.com/mostynb/go-grpc-compression v1.1.18 h1:4a9UFaq3GvZO64ZRWPhxbJhAMsbDNIGznsSA3v1oO8U= +github.com/mostynb/go-grpc-compression v1.1.18/go.mod h1:U/0nmev+iFgBJ/jsVEeJi4UzoGrixmDcsfmMB6JsROg= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= @@ -345,11 +346,11 @@ github.com/npillmayer/nestext v0.1.3/go.mod h1:h2lrijH8jpicr25dFY+oAJLyzlya6jhnu github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0= -github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= +github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -362,16 +363,16 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM= +github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.43.0 h1:iq+BVjvYLei5f27wiuNiB1DN6DYQkp1c8Bx0Vykh5us= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= @@ -381,7 +382,6 @@ github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -426,37 +426,37 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/collector v0.76.1 h1:dcJYZdhEh1XGBKNhAULtmyjHmaNtwhLGpTBEKcF3AHs= -go.opentelemetry.io/collector v0.76.1/go.mod h1:mHgwT+wbrnQ0keR3+vSwraIX2r8+mcFLrFEGwRL6gNI= -go.opentelemetry.io/collector/component v0.76.1 h1:jBTNZsI/H2hF26WoQZtXL9VvuMoo7Gjco72ERIeYHIE= -go.opentelemetry.io/collector/component v0.76.1/go.mod h1:R+IUN1lVr12k4SHpxB7zA3GwtFShVa/IaegZ/PF6EaE= -go.opentelemetry.io/collector/confmap v0.76.1 h1:6Rop2LdXpS32rxV3URXQXmAvFJQ1E366s9s08wYsbsw= -go.opentelemetry.io/collector/confmap v0.76.1/go.mod h1:KsSre9mI7E8W5VsvzbZQZ3SMQLcmJHIgdrkalQjD52s= -go.opentelemetry.io/collector/consumer v0.76.1 h1:+bSz3oATwrQD3Uu8drSyGqrp3OsFo+PS2BguRgiwTuY= -go.opentelemetry.io/collector/consumer v0.76.1/go.mod h1:cDjyt1bTvo48lgIlbdfruxA7Tqr22Jlee8TWjbNkEe0= -go.opentelemetry.io/collector/exporter v0.76.1 h1:xRDx5T5kS21C7M8T9s2+a14/KCC/GuSVGfhd5PlPIOY= -go.opentelemetry.io/collector/exporter v0.76.1/go.mod h1:d5RP2xtETn1rbs4MUZehgayua/4Ej8+XGjxElY2iLaM= -go.opentelemetry.io/collector/featuregate v0.76.1 h1:F9jP6cpIu446GsjsvHjzt4rC/ZJ/IPSPbXLzEngxUa8= -go.opentelemetry.io/collector/featuregate v0.76.1/go.mod h1:stbsuyEexJF0EyVB3AgMs4mEuGvP7MDj3fsNeNdGDMs= -go.opentelemetry.io/collector/pdata v1.0.0-rcv0011 h1:7lT0vseP89mHtUpvgmWYRvQZ0eY+SHbVsnXY20xkoMg= -go.opentelemetry.io/collector/pdata v1.0.0-rcv0011/go.mod h1:9vrXSQBeMRrdfGt9oMgYweqERJ8adaiQjN6LSbqRMMA= -go.opentelemetry.io/collector/processor/batchprocessor v0.76.1 h1:NjjzXMaGlWZXeSpJyjFA3DgUgHWqGaHw/FQcd5nFq4U= -go.opentelemetry.io/collector/processor/batchprocessor v0.76.1/go.mod h1:TLvPEn93Aq9erUQtpReW04CP1vqZ5xPow+96JSCaWg0= -go.opentelemetry.io/collector/receiver v0.76.1 h1:KBnOqKYLhMjOdCK/yPMX2oHKmrfOfxhm5sVC20aNV8M= -go.opentelemetry.io/collector/receiver v0.76.1/go.mod h1:u2uRjoxwEqSRjNjtc52+kEYT7pPbDWgq12xFn6aVesk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 h1:5jD3teb4Qh7mx/nfzq4jO2WFFpvXD0vYWFDrdvNWmXk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0/go.mod h1:UMklln0+MRhZC4e3PwmN3pCtq4DyIadWw4yikh6bNrw= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0 h1:lE9EJyw3/JhrjWH/hEy9FptnalDQgj7vpbgC2KCCCxE= -go.opentelemetry.io/otel v1.15.0 h1:NIl24d4eiLJPM0vKn4HjLYM+UZf6gSfi9Z+NmCxkWbk= -go.opentelemetry.io/otel v1.15.0/go.mod h1:qfwLEbWhLPk5gyWrne4XnF0lC8wtywbuJbgfAE3zbek= -go.opentelemetry.io/otel/exporters/prometheus v0.37.0 h1:NQc0epfL0xItsmGgSXgfbH2C1fq2VLXkZoDFsfRNHpc= -go.opentelemetry.io/otel/metric v0.38.0 h1:vv/Nv/44S3GzMMmeUhaesBKsAenE6xLkTVWL+zuv30w= -go.opentelemetry.io/otel/metric v0.38.0/go.mod h1:uAtxN5hl8aXh5irD8afBtSwQU5Zjg64WWSz6KheZxBg= -go.opentelemetry.io/otel/sdk v1.15.0 h1:jZTCkRRd08nxD6w7rIaZeDNGZGGQstH3SfLQ3ZsKICk= -go.opentelemetry.io/otel/sdk v1.15.0/go.mod h1:XDEMrYWzJ4YlC17i6Luih2lwDw2j6G0PkUfr1ZqE+rQ= -go.opentelemetry.io/otel/sdk/metric v0.38.0 h1:c/6/VZihe+5ink8ERufY1/o1QtnoON+k1YonZF2jYR4= -go.opentelemetry.io/otel/trace v1.15.0 h1:5Fwje4O2ooOxkfyqI/kJwxWotggDLix4BSAvpE1wlpo= -go.opentelemetry.io/otel/trace v1.15.0/go.mod h1:CUsmE2Ht1CRkvE8OsMESvraoZrrcgD1J2W8GV1ev0Y4= +go.opentelemetry.io/collector v0.78.1 h1:bcquLpoYZ0Y+USWCMvn3JiAaJvsBc5Z9HljZRco5UFc= +go.opentelemetry.io/collector v0.78.1/go.mod h1:fVGv9Cr2e2ZNb82U8fCkraC7ujg5E4Qwf2k2s/GyXvo= +go.opentelemetry.io/collector/component v0.78.1 h1:KG4N0Kfl2oBN2utDXpYRN1vQ4V1sknihH55Tvs8htEU= +go.opentelemetry.io/collector/component v0.78.1/go.mod h1:40VqQaeXncgTm1E+EK0uGFv9gvrah5NTXTrn6C9TuIY= +go.opentelemetry.io/collector/confmap v0.78.1 h1:nALyvRooTBhTH6SKBMtGxsFHBw8QO+RMZKjnha9tx9k= +go.opentelemetry.io/collector/confmap v0.78.1/go.mod h1:nudYcQJDF5zmAd2GKe5PetMF8/Lg1Mc/EjAKQBXHdyg= +go.opentelemetry.io/collector/consumer v0.78.1 h1:yD2ECKX6egbY8NRxn8Xhl+4+40ZdjD4BW51fNXNp7qc= +go.opentelemetry.io/collector/consumer v0.78.1/go.mod h1:0vzYDn6eYmIDdC6CgTr/ATVlwutFk1Abet49/heKSmA= +go.opentelemetry.io/collector/exporter v0.78.1 h1:HPxcCdgrjjB4kqglBFxjqTbqYY6PhIlPFzaozFxY5LU= +go.opentelemetry.io/collector/exporter v0.78.1/go.mod h1:2xRXlfv2WgedYT8JFGb++o0O/LtvpgOgrHFXxZKQq/I= +go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012 h1:pSO81lfikGEgRXHepmOGy2o6WWCly427UJCgMJC5c8g= +go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012/go.mod h1:/kVAsGUCyJXIDSgHftCN63QiwAEVHRLX2Kh/S+dqgHY= +go.opentelemetry.io/collector/pdata v1.0.0-rcv0012 h1:R+cfEUMyLn9Q1QknyQ4QU77pbfc1aJKYEXFHtnwSbCg= +go.opentelemetry.io/collector/pdata v1.0.0-rcv0012/go.mod h1:rEAKFqc1L03lidKtra/2/dJtI0Hp+JsQxuPEIkj/2Vg= +go.opentelemetry.io/collector/processor/batchprocessor v0.78.1 h1:rrKVGvbnzWls1Uev4vxbjqYmOdp86N3nM8WQoKQrH+A= +go.opentelemetry.io/collector/processor/batchprocessor v0.78.1/go.mod h1:6rdnvQXPzo0sIhrUVK4bpZ7EmDdR+bSpTdf7gmChhUU= +go.opentelemetry.io/collector/receiver v0.78.1 h1:MSgnfyIk2OATOvVLJhTFH29rObN6umCEqbeuGLfdUhw= +go.opentelemetry.io/collector/receiver v0.78.1/go.mod h1:3uz9mktAkTBFcAkwapirH6InuPUL44Oa6MnoXmQJ2ms= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1 h1:Ei1FUQ5CbSNkl2o/XAiksXSyQNAeJBX3ivqJpJ254Ak= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1/go.mod h1:f7TOPTlEcliCBlOYPuNnZTuND71MVTAoINWIt1SmP/c= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.41.1 h1:pX+lppB8PArapyhS6nBStyQmkaDUPWdQf0UmEGRCQ54= +go.opentelemetry.io/otel v1.15.1 h1:3Iwq3lfRByPaws0f6bU3naAqOR1n5IeDWd9390kWHa8= +go.opentelemetry.io/otel v1.15.1/go.mod h1:mHHGEHVDLal6YrKMmk9LqC4a3sF5g+fHfrttQIB1NTc= +go.opentelemetry.io/otel/exporters/prometheus v0.38.1 h1:GwalIvFIx91qIA8qyAyqYj9lql5Ba2Oxj/jDG6+3UoU= +go.opentelemetry.io/otel/metric v0.38.1 h1:2MM7m6wPw9B8Qv8iHygoAgkbejed59uUR6ezR5T3X2s= +go.opentelemetry.io/otel/metric v0.38.1/go.mod h1:FwqNHD3I/5iX9pfrRGZIlYICrJv0rHEUl2Ln5vdIVnQ= +go.opentelemetry.io/otel/sdk v1.15.1 h1:5FKR+skgpzvhPQHIEfcwMYjCBr14LWzs3uSqKiQzETI= +go.opentelemetry.io/otel/sdk v1.15.1/go.mod h1:8rVtxQfrbmbHKfqzpQkT5EzZMcbMBwTzNAggbEAM0KA= +go.opentelemetry.io/otel/sdk/metric v0.38.1 h1:EkO5wI4NT/fUaoPMGc0fKV28JaWe7q4vfVpEVasGb+8= +go.opentelemetry.io/otel/trace v1.15.1 h1:uXLo6iHJEzDfrNC0L0mNjItIp06SyaBQxu5t3xMlngY= +go.opentelemetry.io/otel/trace v1.15.1/go.mod h1:IWdQG/5N1x7f6YUlmdLeJvH9yxtuJAfc4VW5Agv9r/8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -490,7 +490,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220827204233-334a2380cb91 h1:tnebWN09GYg9OLPss1KXj8txwZc6X6uMr6VFdcGNbHw= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -514,8 +515,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -550,15 +551,15 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M= +golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -622,8 +623,8 @@ golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -684,8 +685,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -694,7 +695,7 @@ golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.12.0 h1:xKuo6hzt+gMav00meVPUlXwSdoEJP46BR+wdxQEFK2o= +gonum.org/v1/gonum v0.13.0 h1:a0T3bh+7fhRyqeNbiC3qVHYmkiQgit3wnNan/2c0HMM= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -753,8 +754,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f h1:BWUVssLB0HVOSY78gIdvk1dTVYtT1y8SBWtPYuTJ/6w= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -775,8 +776,8 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/lightstep/sdk/metric/exporters/otlp/otelcol/client.go b/lightstep/sdk/metric/exporters/otlp/otelcol/client.go index 26361ec8..41a93bc3 100644 --- a/lightstep/sdk/metric/exporters/otlp/otelcol/client.go +++ b/lightstep/sdk/metric/exporters/otlp/otelcol/client.go @@ -79,7 +79,7 @@ func NewDefaultConfig() Config { WaitForReady: true, }, Arrow: otlpexporter.ArrowSettings{ - Enabled: false, + Disabled: true, NumStreams: 1, DisableDowngrade: true, }, @@ -132,7 +132,7 @@ func WithTLSSetting(tlss configtls.TLSClientSetting) Option { func NewExporter(ctx context.Context, cfg Config) (metric.PushExporter, error) { c := &client{} - if cfg.Exporter.Arrow.Enabled { + if !cfg.Exporter.Arrow.Disabled { c.settings.ID = component.NewID("otlp/arrow") } else { c.settings.ID = component.NewID("otlp/proto") diff --git a/lightstep/sdk/metric/exporters/otlp/otelcol/client_test.go b/lightstep/sdk/metric/exporters/otlp/otelcol/client_test.go index 8d72a9f3..cc79d1e1 100644 --- a/lightstep/sdk/metric/exporters/otlp/otelcol/client_test.go +++ b/lightstep/sdk/metric/exporters/otlp/otelcol/client_test.go @@ -36,7 +36,7 @@ import ( "go.opentelemetry.io/collector/receiver" "go.opentelemetry.io/collector/receiver/receivertest" "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/metric/instrument" + "go.opentelemetry.io/otel/metric" "go.opentelemetry.io/otel/sdk/resource" colmetricspb "go.opentelemetry.io/proto/otlp/collector/metrics/v1" commonpb "go.opentelemetry.io/proto/otlp/common/v1" @@ -167,9 +167,7 @@ func (t *clientTestSuite) SetupSuite() { factory := otlpreceiver.NewFactory() cfg := factory.CreateDefaultConfig().(*otlpreceiver.Config) - cfg.Protocols.Arrow = &otlpreceiver.ArrowSettings{ - Enabled: true, - } + cfg.Protocols.Arrow = &otlpreceiver.ArrowSettings{} cfg.GRPC.NetAddr = confignet.NetAddr{Endpoint: t.addr, Transport: "tcp"} cfg.HTTP = nil @@ -256,12 +254,12 @@ func (t *clientTestSuite) TestCounterAndGauge() { counter, _ := meter.Int64Counter("how-many") meter.Int64ObservableGauge("pressure", - instrument.WithInt64Callback(func(_ context.Context, obs instrument.Int64Observer) error { - obs.Observe(2, testStmtAttrs...) + metric.WithInt64Callback(func(_ context.Context, obs metric.Int64Observer) error { + obs.Observe(2, metric.WithAttributes(testStmtAttrs...)) return nil })) - counter.Add(ctx, 1, testStmtAttrs...) + counter.Add(ctx, 1, metric.WithAttributes(testStmtAttrs...)) _ = t.sdk.Shutdown(ctx) @@ -335,20 +333,20 @@ func (t *clientTestSuite) TestUpDownCounters() { meter := t.sdk.Meter("test-meter") counter, _ := meter.Float64UpDownCounter("in-flight", - instrument.WithDescription(`{ "temporality": "delta" }`), + metric.WithDescription(`{ "temporality": "delta" }`), ) meter.Float64ObservableUpDownCounter("in-use", - instrument.WithFloat64Callback(func(_ context.Context, obs instrument.Float64Observer) error { - obs.Observe(2, testStmtAttrs...) + metric.WithFloat64Callback(func(_ context.Context, obs metric.Float64Observer) error { + obs.Observe(2, metric.WithAttributes(testStmtAttrs...)) return nil })) - counter.Add(ctx, 1, testStmtAttrs...) + counter.Add(ctx, 1, metric.WithAttributes(testStmtAttrs...)) _ = t.sdk.ForceFlush(ctx) - counter.Add(ctx, 1, testStmtAttrs...) + counter.Add(ctx, 1, metric.WithAttributes(testStmtAttrs...)) _ = t.sdk.Shutdown(ctx) @@ -423,19 +421,19 @@ func (t *clientTestSuite) TestHistograms() { meter := t.sdk.Meter("test-meter") histo1, _ := meter.Int64Histogram("duration", - instrument.WithUnit("ms"), - instrument.WithDescription(`{ "config": { "histogram": { "max_size": 4 } } }`)) + metric.WithUnit("ms"), + metric.WithDescription(`{ "config": { "histogram": { "max_size": 4 } } }`)) histo2, _ := meter.Float64Histogram("latency", - instrument.WithDescription(`{ "aggregation": "minmaxsumcount", "temporality": "cumulative" }`), + metric.WithDescription(`{ "aggregation": "minmaxsumcount", "temporality": "cumulative" }`), ) - histo1.Record(ctx, 1, testStmtAttrs...) - histo1.Record(ctx, 2, testStmtAttrs...) - histo1.Record(ctx, 4, testStmtAttrs...) + histo1.Record(ctx, 1, metric.WithAttributes(testStmtAttrs...)) + histo1.Record(ctx, 2, metric.WithAttributes(testStmtAttrs...)) + histo1.Record(ctx, 4, metric.WithAttributes(testStmtAttrs...)) - histo2.Record(ctx, 1, testStmtAttrs...) - histo2.Record(ctx, 2, testStmtAttrs...) - histo2.Record(ctx, 4, testStmtAttrs...) + histo2.Record(ctx, 1, metric.WithAttributes(testStmtAttrs...)) + histo2.Record(ctx, 2, metric.WithAttributes(testStmtAttrs...)) + histo2.Record(ctx, 4, metric.WithAttributes(testStmtAttrs...)) _ = t.sdk.Shutdown(ctx) diff --git a/lightstep/sdk/metric/go.mod b/lightstep/sdk/metric/go.mod index 3fca86ea..6c20d995 100644 --- a/lightstep/sdk/metric/go.mod +++ b/lightstep/sdk/metric/go.mod @@ -18,8 +18,8 @@ require ( go.opentelemetry.io/collector/pdata v1.0.0-rcv0011 go.opentelemetry.io/collector/processor/batchprocessor v0.76.1 go.opentelemetry.io/collector/receiver v0.76.1 - go.opentelemetry.io/otel v1.15.0 - go.opentelemetry.io/otel/metric v0.38.0 + go.opentelemetry.io/otel v1.15.1 + go.opentelemetry.io/otel/metric v0.38.1 go.opentelemetry.io/otel/sdk v1.15.0 go.opentelemetry.io/proto/otlp v0.19.0 go.uber.org/multierr v1.11.0 @@ -68,7 +68,7 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0 // indirect go.opentelemetry.io/otel/sdk/metric v0.38.0 // indirect - go.opentelemetry.io/otel/trace v1.15.0 // indirect + go.opentelemetry.io/otel/trace v1.15.1 // indirect go.uber.org/atomic v1.10.0 // indirect golang.org/x/mod v0.8.0 // indirect golang.org/x/net v0.9.0 // indirect diff --git a/lightstep/sdk/metric/go.sum b/lightstep/sdk/metric/go.sum index 2f9950c7..a5831037 100644 --- a/lightstep/sdk/metric/go.sum +++ b/lightstep/sdk/metric/go.sum @@ -457,17 +457,17 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.4 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0/go.mod h1:UMklln0+MRhZC4e3PwmN3pCtq4DyIadWw4yikh6bNrw= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0 h1:lE9EJyw3/JhrjWH/hEy9FptnalDQgj7vpbgC2KCCCxE= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0/go.mod h1:pcQ3MM3SWvrA71U4GDqv9UFDJ3HQsW7y5ZO3tDTlUdI= -go.opentelemetry.io/otel v1.15.0 h1:NIl24d4eiLJPM0vKn4HjLYM+UZf6gSfi9Z+NmCxkWbk= -go.opentelemetry.io/otel v1.15.0/go.mod h1:qfwLEbWhLPk5gyWrne4XnF0lC8wtywbuJbgfAE3zbek= +go.opentelemetry.io/otel v1.15.1 h1:3Iwq3lfRByPaws0f6bU3naAqOR1n5IeDWd9390kWHa8= +go.opentelemetry.io/otel v1.15.1/go.mod h1:mHHGEHVDLal6YrKMmk9LqC4a3sF5g+fHfrttQIB1NTc= go.opentelemetry.io/otel/exporters/prometheus v0.37.0 h1:NQc0epfL0xItsmGgSXgfbH2C1fq2VLXkZoDFsfRNHpc= -go.opentelemetry.io/otel/metric v0.38.0 h1:vv/Nv/44S3GzMMmeUhaesBKsAenE6xLkTVWL+zuv30w= -go.opentelemetry.io/otel/metric v0.38.0/go.mod h1:uAtxN5hl8aXh5irD8afBtSwQU5Zjg64WWSz6KheZxBg= +go.opentelemetry.io/otel/metric v0.38.1 h1:2MM7m6wPw9B8Qv8iHygoAgkbejed59uUR6ezR5T3X2s= +go.opentelemetry.io/otel/metric v0.38.1/go.mod h1:FwqNHD3I/5iX9pfrRGZIlYICrJv0rHEUl2Ln5vdIVnQ= go.opentelemetry.io/otel/sdk v1.15.0 h1:jZTCkRRd08nxD6w7rIaZeDNGZGGQstH3SfLQ3ZsKICk= go.opentelemetry.io/otel/sdk v1.15.0/go.mod h1:XDEMrYWzJ4YlC17i6Luih2lwDw2j6G0PkUfr1ZqE+rQ= go.opentelemetry.io/otel/sdk/metric v0.38.0 h1:c/6/VZihe+5ink8ERufY1/o1QtnoON+k1YonZF2jYR4= go.opentelemetry.io/otel/sdk/metric v0.38.0/go.mod h1:tqrguFLaGJ3i+uyG67bzxJgsG6Y2bL6HmAn9V/cVRRo= -go.opentelemetry.io/otel/trace v1.15.0 h1:5Fwje4O2ooOxkfyqI/kJwxWotggDLix4BSAvpE1wlpo= -go.opentelemetry.io/otel/trace v1.15.0/go.mod h1:CUsmE2Ht1CRkvE8OsMESvraoZrrcgD1J2W8GV1ev0Y4= +go.opentelemetry.io/otel/trace v1.15.1 h1:uXLo6iHJEzDfrNC0L0mNjItIp06SyaBQxu5t3xMlngY= +go.opentelemetry.io/otel/trace v1.15.1/go.mod h1:IWdQG/5N1x7f6YUlmdLeJvH9yxtuJAfc4VW5Agv9r/8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= diff --git a/pipelines/go.mod b/pipelines/go.mod index 75dd020d..1a8136ca 100644 --- a/pipelines/go.mod +++ b/pipelines/go.mod @@ -4,23 +4,23 @@ go 1.18 require ( // Host and runtime instrumentation - go.opentelemetry.io/contrib/instrumentation/host v0.40.0 - go.opentelemetry.io/contrib/instrumentation/runtime v0.40.0 + go.opentelemetry.io/contrib/instrumentation/host v0.41.1 + go.opentelemetry.io/contrib/instrumentation/runtime v0.41.1 // b3 and opentracing propagators - go.opentelemetry.io/contrib/propagators/b3 v1.15.0 - go.opentelemetry.io/contrib/propagators/ot v1.15.0 - go.opentelemetry.io/otel v1.15.0 + go.opentelemetry.io/contrib/propagators/b3 v1.16.1 + go.opentelemetry.io/contrib/propagators/ot v1.16.1 + go.opentelemetry.io/otel v1.15.1 // Standard trace SDK and gRPC OTLP exporter - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.15.1 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 - go.opentelemetry.io/otel/metric v0.38.0 - go.opentelemetry.io/otel/sdk v1.15.0 - go.opentelemetry.io/otel/sdk/metric v0.38.0 + go.opentelemetry.io/otel/metric v0.38.1 + go.opentelemetry.io/otel/sdk v1.15.1 + go.opentelemetry.io/otel/sdk/metric v0.38.1 // gRPC - google.golang.org/grpc v1.54.0 + google.golang.org/grpc v1.55.0 ) require ( @@ -32,28 +32,28 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect - github.com/shirou/gopsutil/v3 v3.23.3 // indirect - github.com/stretchr/testify v1.8.2 + github.com/shirou/gopsutil/v3 v3.23.4 // indirect + github.com/stretchr/testify v1.8.3 github.com/tklauser/go-sysconf v0.3.11 // indirect github.com/tklauser/numcpus v0.6.0 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect - go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.15.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.37.0 // indirect - go.opentelemetry.io/otel/trace v1.15.0 // indirect + go.opentelemetry.io/otel/trace v1.15.1 // indirect go.opentelemetry.io/proto/otlp v0.19.0 go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.9.0 // indirect - golang.org/x/sys v0.7.0 // indirect + golang.org/x/net v0.10.0 // indirect + golang.org/x/sys v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect - google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect google.golang.org/protobuf v1.30.0 ) require ( github.com/lightstep/otel-launcher-go/lightstep/instrumentation v1.17.0 github.com/lightstep/otel-launcher-go/lightstep/sdk/metric v1.17.0 - go.opentelemetry.io/collector v0.76.1 + go.opentelemetry.io/collector v0.78.1 go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.37.0 ) @@ -62,9 +62,11 @@ require ( github.com/andybalholm/brotli v1.0.4 // indirect github.com/apache/arrow/go/v12 v12.0.0-20230404000714-f02d35119ae6 // indirect github.com/apache/thrift v0.16.0 // indirect + github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect - github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae // indirect + github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect + github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/fxamacker/cbor/v2 v2.4.0 // indirect github.com/goccy/go-json v0.9.11 // indirect @@ -84,25 +86,26 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/mostynb/go-grpc-compression v1.1.17 // indirect - github.com/pierrec/lz4/v4 v4.1.15 // indirect + github.com/mostynb/go-grpc-compression v1.1.18 // indirect + github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/shoenig/go-m1cpu v0.1.4 // indirect + github.com/shoenig/go-m1cpu v0.1.5 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/zeebo/xxh3 v1.0.2 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/collector/component v0.76.1 // indirect - go.opentelemetry.io/collector/confmap v0.76.1 // indirect - go.opentelemetry.io/collector/consumer v0.76.1 // indirect - go.opentelemetry.io/collector/exporter v0.76.1 // indirect - go.opentelemetry.io/collector/featuregate v0.76.1 // indirect - go.opentelemetry.io/collector/pdata v1.0.0-rcv0011 // indirect - go.opentelemetry.io/collector/processor/batchprocessor v0.76.1 // indirect - go.opentelemetry.io/collector/receiver v0.76.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 // indirect + go.opentelemetry.io/collector/component v0.78.1 // indirect + go.opentelemetry.io/collector/confmap v0.78.1 // indirect + go.opentelemetry.io/collector/consumer v0.78.1 // indirect + go.opentelemetry.io/collector/exporter v0.78.1 // indirect + go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012 // indirect + go.opentelemetry.io/collector/pdata v1.0.0-rcv0012 // indirect + go.opentelemetry.io/collector/processor/batchprocessor v0.78.1 // indirect + go.opentelemetry.io/collector/receiver v0.78.1 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1 // indirect go.uber.org/zap v1.24.0 // indirect - golang.org/x/mod v0.8.0 // indirect - golang.org/x/tools v0.6.0 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect + golang.org/x/mod v0.9.0 // indirect + golang.org/x/tools v0.7.0 // indirect golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pipelines/go.sum b/pipelines/go.sum index 67bd6ddf..de394630 100644 --- a/pipelines/go.sum +++ b/pipelines/go.sum @@ -13,14 +13,14 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.15.1 h1:7UGq3QknM33pw5xATlpzeoomNxsacIVvTqTTvbfajmE= +cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= @@ -68,6 +68,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72H github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc h1:Keo7wQ7UODUaHcEi7ltENhbAK2VgZjfat6mLy03tQzo= +github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc/go.mod h1:k08r+Yj1PRAmuayFiRK6MYuR5Ve4IuZtTfxErMIh0+c= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -101,6 +103,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsYAX0YjD+8suexZDga5CctH4CCTx2+8= +github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -110,14 +114,13 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae h1:U65tCMLqh+DsFDz1TkiJWS5X38MX4DhKIfGshFpl6zo= -github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae/go.mod h1:s8WUytFkI6cWBELm9TzZv4xSd/05tbFitjBfKBKPQ6c= +github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828 h1:6SdnpOjaKnBly9jy9jAIrjcxao4BzfipBl8SLWZCSl8= +github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828/go.mod h1:5kH5ys/J13LW1n4OLjanCSnJNHkmZwUjN7XQrZIoEpU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= @@ -153,8 +156,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -282,7 +285,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= @@ -294,8 +296,7 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -343,8 +344,8 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/mostynb/go-grpc-compression v1.1.17 h1:N9t6taOJN3mNTTi0wDf4e3lp/G/ON1TP67Pn0vTUA9I= -github.com/mostynb/go-grpc-compression v1.1.17/go.mod h1:FUSBr0QjKqQgoDG/e0yiqlR6aqyXC39+g/hFLDfSsEY= +github.com/mostynb/go-grpc-compression v1.1.18 h1:4a9UFaq3GvZO64ZRWPhxbJhAMsbDNIGznsSA3v1oO8U= +github.com/mostynb/go-grpc-compression v1.1.18/go.mod h1:U/0nmev+iFgBJ/jsVEeJi4UzoGrixmDcsfmMB6JsROg= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= @@ -352,11 +353,11 @@ github.com/npillmayer/nestext v0.1.3/go.mod h1:h2lrijH8jpicr25dFY+oAJLyzlya6jhnu github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0= -github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= +github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -371,16 +372,16 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM= +github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.43.0 h1:iq+BVjvYLei5f27wiuNiB1DN6DYQkp1c8Bx0Vykh5us= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= @@ -390,17 +391,16 @@ github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/shirou/gopsutil/v3 v3.23.3 h1:Syt5vVZXUDXPEXpIBt5ziWsJ4LdSAAxF4l/xZeQgSEE= -github.com/shirou/gopsutil/v3 v3.23.3/go.mod h1:lSBNN6t3+D6W5e5nXTxc8KIMMVxAcS+6IJlffjRRlMU= -github.com/shoenig/go-m1cpu v0.1.4 h1:SZPIgRM2sEF9NJy50mRHu9PKGwxyyTTJIWvCtgVbozs= -github.com/shoenig/go-m1cpu v0.1.4/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ= +github.com/shirou/gopsutil/v3 v3.23.4 h1:hZwmDxZs7Ewt75DV81r4pFMqbq+di2cbt9FsQBqLD2o= +github.com/shirou/gopsutil/v3 v3.23.4/go.mod h1:ZcGxyfzAMRevhUR2+cfhXDH6gQdFYE/t8j1nsU4mPI8= +github.com/shoenig/go-m1cpu v0.1.5 h1:LF57Z/Fpb/WdGLjt2HZilNnmZOxg/q2bSKTQhgbrLrQ= +github.com/shoenig/go-m1cpu v0.1.5/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ= github.com/shoenig/test v0.6.3 h1:GVXWJFk9PiOjN0KoJ7VrJGH6uLPnqxR7/fe3HUPfE0c= github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -421,8 +421,9 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms= @@ -449,56 +450,56 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/collector v0.76.1 h1:dcJYZdhEh1XGBKNhAULtmyjHmaNtwhLGpTBEKcF3AHs= -go.opentelemetry.io/collector v0.76.1/go.mod h1:mHgwT+wbrnQ0keR3+vSwraIX2r8+mcFLrFEGwRL6gNI= -go.opentelemetry.io/collector/component v0.76.1 h1:jBTNZsI/H2hF26WoQZtXL9VvuMoo7Gjco72ERIeYHIE= -go.opentelemetry.io/collector/component v0.76.1/go.mod h1:R+IUN1lVr12k4SHpxB7zA3GwtFShVa/IaegZ/PF6EaE= -go.opentelemetry.io/collector/confmap v0.76.1 h1:6Rop2LdXpS32rxV3URXQXmAvFJQ1E366s9s08wYsbsw= -go.opentelemetry.io/collector/confmap v0.76.1/go.mod h1:KsSre9mI7E8W5VsvzbZQZ3SMQLcmJHIgdrkalQjD52s= -go.opentelemetry.io/collector/consumer v0.76.1 h1:+bSz3oATwrQD3Uu8drSyGqrp3OsFo+PS2BguRgiwTuY= -go.opentelemetry.io/collector/consumer v0.76.1/go.mod h1:cDjyt1bTvo48lgIlbdfruxA7Tqr22Jlee8TWjbNkEe0= -go.opentelemetry.io/collector/exporter v0.76.1 h1:xRDx5T5kS21C7M8T9s2+a14/KCC/GuSVGfhd5PlPIOY= -go.opentelemetry.io/collector/exporter v0.76.1/go.mod h1:d5RP2xtETn1rbs4MUZehgayua/4Ej8+XGjxElY2iLaM= -go.opentelemetry.io/collector/featuregate v0.76.1 h1:F9jP6cpIu446GsjsvHjzt4rC/ZJ/IPSPbXLzEngxUa8= -go.opentelemetry.io/collector/featuregate v0.76.1/go.mod h1:stbsuyEexJF0EyVB3AgMs4mEuGvP7MDj3fsNeNdGDMs= -go.opentelemetry.io/collector/pdata v1.0.0-rcv0011 h1:7lT0vseP89mHtUpvgmWYRvQZ0eY+SHbVsnXY20xkoMg= -go.opentelemetry.io/collector/pdata v1.0.0-rcv0011/go.mod h1:9vrXSQBeMRrdfGt9oMgYweqERJ8adaiQjN6LSbqRMMA= -go.opentelemetry.io/collector/processor/batchprocessor v0.76.1 h1:NjjzXMaGlWZXeSpJyjFA3DgUgHWqGaHw/FQcd5nFq4U= -go.opentelemetry.io/collector/processor/batchprocessor v0.76.1/go.mod h1:TLvPEn93Aq9erUQtpReW04CP1vqZ5xPow+96JSCaWg0= -go.opentelemetry.io/collector/receiver v0.76.1 h1:KBnOqKYLhMjOdCK/yPMX2oHKmrfOfxhm5sVC20aNV8M= -go.opentelemetry.io/collector/receiver v0.76.1/go.mod h1:u2uRjoxwEqSRjNjtc52+kEYT7pPbDWgq12xFn6aVesk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 h1:5jD3teb4Qh7mx/nfzq4jO2WFFpvXD0vYWFDrdvNWmXk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0/go.mod h1:UMklln0+MRhZC4e3PwmN3pCtq4DyIadWw4yikh6bNrw= -go.opentelemetry.io/contrib/instrumentation/host v0.40.0 h1:cZurGyTXSgUrXHLjcwh+hVXBv98xMIigZFF5tJ/8La0= -go.opentelemetry.io/contrib/instrumentation/host v0.40.0/go.mod h1:7HKwySOL83pJ4FP3SJnjA8cOK4MxE2qHtq9ErpNqTks= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0 h1:lE9EJyw3/JhrjWH/hEy9FptnalDQgj7vpbgC2KCCCxE= -go.opentelemetry.io/contrib/instrumentation/runtime v0.40.0 h1:Qf1GuR3QFxTNqDhfuw9XuJMkOOyRUwWP9NdFakk3RXM= -go.opentelemetry.io/contrib/instrumentation/runtime v0.40.0/go.mod h1:zmll4G8j5zRZeFURG6t/N7SOl7M5kUHQfV5UVqTaQFI= -go.opentelemetry.io/contrib/propagators/b3 v1.15.0 h1:bMaonPyFcAvZ4EVzkUNkfnUHP5Zi63CIDlA3dRsEg8Q= -go.opentelemetry.io/contrib/propagators/b3 v1.15.0/go.mod h1:VjU0g2v6HSQ+NwfifambSLAeBgevjIcqmceaKWEzl0c= -go.opentelemetry.io/contrib/propagators/ot v1.15.0 h1:iBNejawWy7wWZ5msuZDNcMjBy14Wc0v3gCAXukGHN/Q= -go.opentelemetry.io/contrib/propagators/ot v1.15.0/go.mod h1:0P7QQ+MHt6SXR1ATaMpewSiWlp8NbKErNLKcaU4EEKI= -go.opentelemetry.io/otel v1.15.0 h1:NIl24d4eiLJPM0vKn4HjLYM+UZf6gSfi9Z+NmCxkWbk= -go.opentelemetry.io/otel v1.15.0/go.mod h1:qfwLEbWhLPk5gyWrne4XnF0lC8wtywbuJbgfAE3zbek= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.15.0 h1:ZSdnH1x5Gm/eUFNQquwSt4/LMCOqS6KPlI9qaTKx5Ho= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.15.0/go.mod h1:uOTV75+LOzV+ODmL8ahRLWkFA3eQcSC2aAsbxIu4duk= +go.opentelemetry.io/collector v0.78.1 h1:bcquLpoYZ0Y+USWCMvn3JiAaJvsBc5Z9HljZRco5UFc= +go.opentelemetry.io/collector v0.78.1/go.mod h1:fVGv9Cr2e2ZNb82U8fCkraC7ujg5E4Qwf2k2s/GyXvo= +go.opentelemetry.io/collector/component v0.78.1 h1:KG4N0Kfl2oBN2utDXpYRN1vQ4V1sknihH55Tvs8htEU= +go.opentelemetry.io/collector/component v0.78.1/go.mod h1:40VqQaeXncgTm1E+EK0uGFv9gvrah5NTXTrn6C9TuIY= +go.opentelemetry.io/collector/confmap v0.78.1 h1:nALyvRooTBhTH6SKBMtGxsFHBw8QO+RMZKjnha9tx9k= +go.opentelemetry.io/collector/confmap v0.78.1/go.mod h1:nudYcQJDF5zmAd2GKe5PetMF8/Lg1Mc/EjAKQBXHdyg= +go.opentelemetry.io/collector/consumer v0.78.1 h1:yD2ECKX6egbY8NRxn8Xhl+4+40ZdjD4BW51fNXNp7qc= +go.opentelemetry.io/collector/consumer v0.78.1/go.mod h1:0vzYDn6eYmIDdC6CgTr/ATVlwutFk1Abet49/heKSmA= +go.opentelemetry.io/collector/exporter v0.78.1 h1:HPxcCdgrjjB4kqglBFxjqTbqYY6PhIlPFzaozFxY5LU= +go.opentelemetry.io/collector/exporter v0.78.1/go.mod h1:2xRXlfv2WgedYT8JFGb++o0O/LtvpgOgrHFXxZKQq/I= +go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012 h1:pSO81lfikGEgRXHepmOGy2o6WWCly427UJCgMJC5c8g= +go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012/go.mod h1:/kVAsGUCyJXIDSgHftCN63QiwAEVHRLX2Kh/S+dqgHY= +go.opentelemetry.io/collector/pdata v1.0.0-rcv0012 h1:R+cfEUMyLn9Q1QknyQ4QU77pbfc1aJKYEXFHtnwSbCg= +go.opentelemetry.io/collector/pdata v1.0.0-rcv0012/go.mod h1:rEAKFqc1L03lidKtra/2/dJtI0Hp+JsQxuPEIkj/2Vg= +go.opentelemetry.io/collector/processor/batchprocessor v0.78.1 h1:rrKVGvbnzWls1Uev4vxbjqYmOdp86N3nM8WQoKQrH+A= +go.opentelemetry.io/collector/processor/batchprocessor v0.78.1/go.mod h1:6rdnvQXPzo0sIhrUVK4bpZ7EmDdR+bSpTdf7gmChhUU= +go.opentelemetry.io/collector/receiver v0.78.1 h1:MSgnfyIk2OATOvVLJhTFH29rObN6umCEqbeuGLfdUhw= +go.opentelemetry.io/collector/receiver v0.78.1/go.mod h1:3uz9mktAkTBFcAkwapirH6InuPUL44Oa6MnoXmQJ2ms= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1 h1:Ei1FUQ5CbSNkl2o/XAiksXSyQNAeJBX3ivqJpJ254Ak= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1/go.mod h1:f7TOPTlEcliCBlOYPuNnZTuND71MVTAoINWIt1SmP/c= +go.opentelemetry.io/contrib/instrumentation/host v0.41.1 h1:B/s7HG33iwus4cwd8NsPk9H6nLKJpLcLgGV2D9RkfsI= +go.opentelemetry.io/contrib/instrumentation/host v0.41.1/go.mod h1:OdaD/6LjpX5H0ZCKf9EgR6yKFQihVizQMBRLFGlyTP4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.41.1 h1:pX+lppB8PArapyhS6nBStyQmkaDUPWdQf0UmEGRCQ54= +go.opentelemetry.io/contrib/instrumentation/runtime v0.41.1 h1:KXWR7rFIuQLMo/dHu/DTev7qdQdTuGCxTfEUZdLaMfs= +go.opentelemetry.io/contrib/instrumentation/runtime v0.41.1/go.mod h1:fNv3vYJmbcUl4qVQK9tbAVBQjTAbfDDQa/cFgpOTm50= +go.opentelemetry.io/contrib/propagators/b3 v1.16.1 h1:Y9Dk1kR93eSHadRTkqnm+QyQVhHthCcvTkoP/Afh7+4= +go.opentelemetry.io/contrib/propagators/b3 v1.16.1/go.mod h1:IR0G6txqoetQrjjdoDGe+udhFegxnQQd0dOJfFS8Jg0= +go.opentelemetry.io/contrib/propagators/ot v1.16.1 h1:3WV1I2H0UiNbisvGU6oqmrxN9Cfyk4yPkxUKiikqYyU= +go.opentelemetry.io/contrib/propagators/ot v1.16.1/go.mod h1:8330C6LX5qEV4x/2k+RIHh7H7Bggs9d9Hs42RmsA4j0= +go.opentelemetry.io/otel v1.15.1 h1:3Iwq3lfRByPaws0f6bU3naAqOR1n5IeDWd9390kWHa8= +go.opentelemetry.io/otel v1.15.1/go.mod h1:mHHGEHVDLal6YrKMmk9LqC4a3sF5g+fHfrttQIB1NTc= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 h1:t4ZwRPU+emrcvM2e9DHd0Fsf0JTPVcbfa/BhTDF03d0= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0/go.mod h1:vLarbg68dH2Wa77g71zmKQqlQ8+8Rq3GRG31uc0WcWI= go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.37.0 h1:22J9c9mxNAZugv86zhwjBnER0DbO0VVpW9Oo/j3jBBQ= go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.37.0/go.mod h1:QD8SSO9fgtBOvXYpcX5NXW+YnDJByTnh7a/9enQWFmw= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.37.0 h1:CI6DSdsSkJxX1rsfPSQ0SciKx6klhdDRBXqKb+FwXG8= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.37.0/go.mod h1:WLBYPrz8srktckhCjFaau4VHSfGaMuqoKSXwpzaiRZg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.15.1 h1:tyoeaUh8REKay72DVYsSEBYV18+fGONe+YYPaOxgLoE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.15.1/go.mod h1:HUSnrjQQ19KX9ECjpQxufsF+3ioD3zISPMlauTPZu2g= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 h1:ap+y8RXX3Mu9apKVtOkM6WSFESLM8K3wNQyOU8sWHcc= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0/go.mod h1:5w41DY6S9gZrbjuq6Y+753e96WfPha5IcsOSZTtullM= -go.opentelemetry.io/otel/exporters/prometheus v0.37.0 h1:NQc0epfL0xItsmGgSXgfbH2C1fq2VLXkZoDFsfRNHpc= -go.opentelemetry.io/otel/metric v0.38.0 h1:vv/Nv/44S3GzMMmeUhaesBKsAenE6xLkTVWL+zuv30w= -go.opentelemetry.io/otel/metric v0.38.0/go.mod h1:uAtxN5hl8aXh5irD8afBtSwQU5Zjg64WWSz6KheZxBg= -go.opentelemetry.io/otel/sdk v1.15.0 h1:jZTCkRRd08nxD6w7rIaZeDNGZGGQstH3SfLQ3ZsKICk= -go.opentelemetry.io/otel/sdk v1.15.0/go.mod h1:XDEMrYWzJ4YlC17i6Luih2lwDw2j6G0PkUfr1ZqE+rQ= -go.opentelemetry.io/otel/sdk/metric v0.38.0 h1:c/6/VZihe+5ink8ERufY1/o1QtnoON+k1YonZF2jYR4= -go.opentelemetry.io/otel/sdk/metric v0.38.0/go.mod h1:tqrguFLaGJ3i+uyG67bzxJgsG6Y2bL6HmAn9V/cVRRo= -go.opentelemetry.io/otel/trace v1.15.0 h1:5Fwje4O2ooOxkfyqI/kJwxWotggDLix4BSAvpE1wlpo= -go.opentelemetry.io/otel/trace v1.15.0/go.mod h1:CUsmE2Ht1CRkvE8OsMESvraoZrrcgD1J2W8GV1ev0Y4= +go.opentelemetry.io/otel/exporters/prometheus v0.38.1 h1:GwalIvFIx91qIA8qyAyqYj9lql5Ba2Oxj/jDG6+3UoU= +go.opentelemetry.io/otel/metric v0.38.1 h1:2MM7m6wPw9B8Qv8iHygoAgkbejed59uUR6ezR5T3X2s= +go.opentelemetry.io/otel/metric v0.38.1/go.mod h1:FwqNHD3I/5iX9pfrRGZIlYICrJv0rHEUl2Ln5vdIVnQ= +go.opentelemetry.io/otel/sdk v1.15.1 h1:5FKR+skgpzvhPQHIEfcwMYjCBr14LWzs3uSqKiQzETI= +go.opentelemetry.io/otel/sdk v1.15.1/go.mod h1:8rVtxQfrbmbHKfqzpQkT5EzZMcbMBwTzNAggbEAM0KA= +go.opentelemetry.io/otel/sdk/metric v0.38.1 h1:EkO5wI4NT/fUaoPMGc0fKV28JaWe7q4vfVpEVasGb+8= +go.opentelemetry.io/otel/sdk/metric v0.38.1/go.mod h1:Rn4kSXFF9ZQZ5lL1pxQjCbK4seiO+U7s0ncmIFJaj34= +go.opentelemetry.io/otel/trace v1.15.1 h1:uXLo6iHJEzDfrNC0L0mNjItIp06SyaBQxu5t3xMlngY= +go.opentelemetry.io/otel/trace v1.15.1/go.mod h1:IWdQG/5N1x7f6YUlmdLeJvH9yxtuJAfc4VW5Agv9r/8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -532,7 +533,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220827204233-334a2380cb91 h1:tnebWN09GYg9OLPss1KXj8txwZc6X6uMr6VFdcGNbHw= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -556,8 +558,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -592,15 +594,15 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M= +golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -667,9 +669,9 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -730,8 +732,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -740,7 +742,7 @@ golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.12.0 h1:xKuo6hzt+gMav00meVPUlXwSdoEJP46BR+wdxQEFK2o= +gonum.org/v1/gonum v0.13.0 h1:a0T3bh+7fhRyqeNbiC3qVHYmkiQgit3wnNan/2c0HMM= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -799,8 +801,8 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f h1:BWUVssLB0HVOSY78gIdvk1dTVYtT1y8SBWtPYuTJ/6w= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -821,8 +823,8 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From a705a838f7f4eafc56156d73b960d1264ea3893d Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Mon, 22 May 2023 17:07:55 -0700 Subject: [PATCH 09/12] deps/tidy --- CHANGELOG.md | 3 +++ examples/metrics/metrics.go | 28 ++++++++++++++-------------- go.mod | 2 +- go.sum | 4 ++-- lightstep/sdk/metric/go.mod | 4 ++-- lightstep/sdk/metric/go.sum | 8 ++++---- pipelines/go.mod | 2 +- pipelines/go.sum | 4 ++-- 8 files changed, 29 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12f47dd9..59148db5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ## Unreleased +## [1.17.0](https://github.com/lightstep/otel-launcher-go/releases/tag/v1.17.0) - 2023-05-22) + +- Update to OTel-Go API v0.38.1. [#447](https://github.com/lightstep/otel-launcher-go/pull/447) - Exporter now based on OTel collector batchprocessor and otlpexporter. [#445](https://github.com/lightstep/otel-launcher-go/pull/445) ## [1.16.0](https://github.com/lightstep/otel-launcher-go/releases/tag/v1.16.0) - 2023-04-27) diff --git a/examples/metrics/metrics.go b/examples/metrics/metrics.go index 8d9ab793..162f1762 100644 --- a/examples/metrics/metrics.go +++ b/examples/metrics/metrics.go @@ -32,8 +32,8 @@ import ( "github.com/lightstep/otel-launcher-go/launcher" "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" metricglobal "go.opentelemetry.io/otel/metric/global" - "go.opentelemetry.io/otel/metric/instrument" ) func main() { @@ -56,7 +56,7 @@ func main() { c2, _ := meter.Int64UpDownCounter(prefix + "updowncounter") hist, _ := meter.Float64Histogram(prefix + "histogram") mmsc, _ := meter.Float64Histogram(prefix+"mmsc", - instrument.WithDescription(`{ + metric.WithDescription(`{ "aggregation": "minmaxsumcount" }`), ) @@ -83,8 +83,8 @@ func main() { _, err := meter.Int64ObservableCounter( prefix+"counterobserver", - instrument.WithInt64Callback( - func(ctx context.Context, obs instrument.Int64Observer) error { + metric.WithInt64Callback( + func(ctx context.Context, obs metric.Int64Observer) error { obs.Observe(int64(time.Since(startTime).Seconds())) return nil }, @@ -97,8 +97,8 @@ func main() { _, err = meter.Int64ObservableUpDownCounter( prefix+"updowncounterobserver", - instrument.WithInt64Callback( - func(ctx context.Context, obs instrument.Int64Observer) error { + metric.WithInt64Callback( + func(ctx context.Context, obs metric.Int64Observer) error { obs.Observe(-int64(time.Since(startTime).Seconds())) return nil }, @@ -111,8 +111,8 @@ func main() { _, err = meter.Int64ObservableGauge( prefix+"gauge", - instrument.WithInt64Callback( - func(ctx context.Context, obs instrument.Int64Observer) error { + metric.WithInt64Callback( + func(ctx context.Context, obs metric.Int64Observer) error { obs.Observe(int64(50 + rand.NormFloat64()*50)) return nil }, @@ -125,14 +125,14 @@ func main() { _, err = meter.Float64ObservableGauge( prefix+"sine_wave", - instrument.WithFloat64Callback( - func(ctx context.Context, obs instrument.Float64Observer) error { + metric.WithFloat64Callback( + func(ctx context.Context, obs metric.Float64Observer) error { secs := float64(time.Now().UnixNano()) / float64(time.Second) - obs.Observe(math.Sin(secs/(50*math.Pi)), attribute.String("period", "fastest")) - obs.Observe(math.Sin(secs/(200*math.Pi)), attribute.String("period", "fast")) - obs.Observe(math.Sin(secs/(1000*math.Pi)), attribute.String("period", "regular")) - obs.Observe(math.Sin(secs/(5000*math.Pi)), attribute.String("period", "slow")) + obs.Observe(math.Sin(secs/(50*math.Pi)), metric.WithAttributes(attribute.String("period", "fastest"))) + obs.Observe(math.Sin(secs/(200*math.Pi)), metric.WithAttributes(attribute.String("period", "fast"))) + obs.Observe(math.Sin(secs/(1000*math.Pi)), metric.WithAttributes(attribute.String("period", "regular"))) + obs.Observe(math.Sin(secs/(5000*math.Pi)), metric.WithAttributes(attribute.String("period", "slow"))) return nil }, ), diff --git a/go.mod b/go.mod index cf3932e5..691072c1 100644 --- a/go.mod +++ b/go.mod @@ -77,7 +77,7 @@ require ( go.opentelemetry.io/contrib/propagators/b3 v1.16.1 // indirect go.opentelemetry.io/contrib/propagators/ot v1.16.1 // indirect go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.37.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.38.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.37.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.15.1 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0 // indirect diff --git a/go.sum b/go.sum index 2e025e42..0550d0fb 100644 --- a/go.sum +++ b/go.sum @@ -485,8 +485,8 @@ go.opentelemetry.io/otel v1.15.1 h1:3Iwq3lfRByPaws0f6bU3naAqOR1n5IeDWd9390kWHa8= go.opentelemetry.io/otel v1.15.1/go.mod h1:mHHGEHVDLal6YrKMmk9LqC4a3sF5g+fHfrttQIB1NTc= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 h1:t4ZwRPU+emrcvM2e9DHd0Fsf0JTPVcbfa/BhTDF03d0= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0/go.mod h1:vLarbg68dH2Wa77g71zmKQqlQ8+8Rq3GRG31uc0WcWI= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.37.0 h1:22J9c9mxNAZugv86zhwjBnER0DbO0VVpW9Oo/j3jBBQ= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.37.0/go.mod h1:QD8SSO9fgtBOvXYpcX5NXW+YnDJByTnh7a/9enQWFmw= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.38.1 h1:MSGZwWn8Ji4b6UWkB7pYPgTiTmWM3S4lro9Y+5c3WmE= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.38.1/go.mod h1:GFYZ2ebv/Bwont+pVaXHTGncGz93MjvTgZrskegEOUI= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.37.0 h1:CI6DSdsSkJxX1rsfPSQ0SciKx6klhdDRBXqKb+FwXG8= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.37.0/go.mod h1:WLBYPrz8srktckhCjFaau4VHSfGaMuqoKSXwpzaiRZg= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.15.1 h1:tyoeaUh8REKay72DVYsSEBYV18+fGONe+YYPaOxgLoE= diff --git a/lightstep/sdk/metric/go.mod b/lightstep/sdk/metric/go.mod index 6c20d995..5f045b72 100644 --- a/lightstep/sdk/metric/go.mod +++ b/lightstep/sdk/metric/go.mod @@ -20,7 +20,7 @@ require ( go.opentelemetry.io/collector/receiver v0.76.1 go.opentelemetry.io/otel v1.15.1 go.opentelemetry.io/otel/metric v0.38.1 - go.opentelemetry.io/otel/sdk v1.15.0 + go.opentelemetry.io/otel/sdk v1.15.1 go.opentelemetry.io/proto/otlp v0.19.0 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.24.0 @@ -67,7 +67,7 @@ require ( go.opentelemetry.io/collector/featuregate v0.76.1 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0 // indirect - go.opentelemetry.io/otel/sdk/metric v0.38.0 // indirect + go.opentelemetry.io/otel/sdk/metric v0.38.1 // indirect go.opentelemetry.io/otel/trace v1.15.1 // indirect go.uber.org/atomic v1.10.0 // indirect golang.org/x/mod v0.8.0 // indirect diff --git a/lightstep/sdk/metric/go.sum b/lightstep/sdk/metric/go.sum index a5831037..8733708d 100644 --- a/lightstep/sdk/metric/go.sum +++ b/lightstep/sdk/metric/go.sum @@ -462,10 +462,10 @@ go.opentelemetry.io/otel v1.15.1/go.mod h1:mHHGEHVDLal6YrKMmk9LqC4a3sF5g+fHfrttQ go.opentelemetry.io/otel/exporters/prometheus v0.37.0 h1:NQc0epfL0xItsmGgSXgfbH2C1fq2VLXkZoDFsfRNHpc= go.opentelemetry.io/otel/metric v0.38.1 h1:2MM7m6wPw9B8Qv8iHygoAgkbejed59uUR6ezR5T3X2s= go.opentelemetry.io/otel/metric v0.38.1/go.mod h1:FwqNHD3I/5iX9pfrRGZIlYICrJv0rHEUl2Ln5vdIVnQ= -go.opentelemetry.io/otel/sdk v1.15.0 h1:jZTCkRRd08nxD6w7rIaZeDNGZGGQstH3SfLQ3ZsKICk= -go.opentelemetry.io/otel/sdk v1.15.0/go.mod h1:XDEMrYWzJ4YlC17i6Luih2lwDw2j6G0PkUfr1ZqE+rQ= -go.opentelemetry.io/otel/sdk/metric v0.38.0 h1:c/6/VZihe+5ink8ERufY1/o1QtnoON+k1YonZF2jYR4= -go.opentelemetry.io/otel/sdk/metric v0.38.0/go.mod h1:tqrguFLaGJ3i+uyG67bzxJgsG6Y2bL6HmAn9V/cVRRo= +go.opentelemetry.io/otel/sdk v1.15.1 h1:5FKR+skgpzvhPQHIEfcwMYjCBr14LWzs3uSqKiQzETI= +go.opentelemetry.io/otel/sdk v1.15.1/go.mod h1:8rVtxQfrbmbHKfqzpQkT5EzZMcbMBwTzNAggbEAM0KA= +go.opentelemetry.io/otel/sdk/metric v0.38.1 h1:EkO5wI4NT/fUaoPMGc0fKV28JaWe7q4vfVpEVasGb+8= +go.opentelemetry.io/otel/sdk/metric v0.38.1/go.mod h1:Rn4kSXFF9ZQZ5lL1pxQjCbK4seiO+U7s0ncmIFJaj34= go.opentelemetry.io/otel/trace v1.15.1 h1:uXLo6iHJEzDfrNC0L0mNjItIp06SyaBQxu5t3xMlngY= go.opentelemetry.io/otel/trace v1.15.1/go.mod h1:IWdQG/5N1x7f6YUlmdLeJvH9yxtuJAfc4VW5Agv9r/8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= diff --git a/pipelines/go.mod b/pipelines/go.mod index 1a8136ca..30ab3d48 100644 --- a/pipelines/go.mod +++ b/pipelines/go.mod @@ -38,7 +38,7 @@ require ( github.com/tklauser/numcpus v0.6.0 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.37.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.38.1 // indirect go.opentelemetry.io/otel/trace v1.15.1 // indirect go.opentelemetry.io/proto/otlp v0.19.0 go.uber.org/atomic v1.10.0 // indirect diff --git a/pipelines/go.sum b/pipelines/go.sum index de394630..2015a635 100644 --- a/pipelines/go.sum +++ b/pipelines/go.sum @@ -483,8 +483,8 @@ go.opentelemetry.io/otel v1.15.1 h1:3Iwq3lfRByPaws0f6bU3naAqOR1n5IeDWd9390kWHa8= go.opentelemetry.io/otel v1.15.1/go.mod h1:mHHGEHVDLal6YrKMmk9LqC4a3sF5g+fHfrttQIB1NTc= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 h1:t4ZwRPU+emrcvM2e9DHd0Fsf0JTPVcbfa/BhTDF03d0= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0/go.mod h1:vLarbg68dH2Wa77g71zmKQqlQ8+8Rq3GRG31uc0WcWI= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.37.0 h1:22J9c9mxNAZugv86zhwjBnER0DbO0VVpW9Oo/j3jBBQ= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.37.0/go.mod h1:QD8SSO9fgtBOvXYpcX5NXW+YnDJByTnh7a/9enQWFmw= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.38.1 h1:MSGZwWn8Ji4b6UWkB7pYPgTiTmWM3S4lro9Y+5c3WmE= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.38.1/go.mod h1:GFYZ2ebv/Bwont+pVaXHTGncGz93MjvTgZrskegEOUI= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.37.0 h1:CI6DSdsSkJxX1rsfPSQ0SciKx6klhdDRBXqKb+FwXG8= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.37.0/go.mod h1:WLBYPrz8srktckhCjFaau4VHSfGaMuqoKSXwpzaiRZg= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.15.1 h1:tyoeaUh8REKay72DVYsSEBYV18+fGONe+YYPaOxgLoE= From 13d387a1f9e467c2d993d6c2422d245d91585f79 Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Mon, 22 May 2023 17:12:09 -0700 Subject: [PATCH 10/12] Arrow update (includes collector v0.78.1) --- lightstep/sdk/metric/go.mod | 40 ++++++++++++++++++------------------- lightstep/sdk/metric/go.sum | 21 +++++++++++++++++++ 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/lightstep/sdk/metric/go.mod b/lightstep/sdk/metric/go.mod index 5f045b72..66113f2f 100644 --- a/lightstep/sdk/metric/go.mod +++ b/lightstep/sdk/metric/go.mod @@ -4,20 +4,20 @@ go 1.18 require ( github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 - github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae + github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828 github.com/go-logr/logr v1.2.4 github.com/go-logr/stdr v1.2.2 github.com/golang/mock v1.6.0 github.com/google/go-cmp v0.5.9 github.com/lightstep/go-expohisto v1.0.0 github.com/stretchr/testify v1.8.2 - go.opentelemetry.io/collector v0.76.1 - go.opentelemetry.io/collector/component v0.76.1 - go.opentelemetry.io/collector/consumer v0.76.1 - go.opentelemetry.io/collector/exporter v0.76.1 - go.opentelemetry.io/collector/pdata v1.0.0-rcv0011 - go.opentelemetry.io/collector/processor/batchprocessor v0.76.1 - go.opentelemetry.io/collector/receiver v0.76.1 + go.opentelemetry.io/collector v0.78.1 + go.opentelemetry.io/collector/component v0.78.1 + go.opentelemetry.io/collector/consumer v0.78.1 + go.opentelemetry.io/collector/exporter v0.78.1 + go.opentelemetry.io/collector/pdata v1.0.0-rcv0012 + go.opentelemetry.io/collector/processor/batchprocessor v0.78.1 + go.opentelemetry.io/collector/receiver v0.78.1 go.opentelemetry.io/otel v1.15.1 go.opentelemetry.io/otel/metric v0.38.1 go.opentelemetry.io/otel/sdk v1.15.1 @@ -56,27 +56,27 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/mostynb/go-grpc-compression v1.1.17 // indirect - github.com/pierrec/lz4/v4 v4.1.15 // indirect + github.com/mostynb/go-grpc-compression v1.1.18 // indirect + github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rs/cors v1.9.0 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/zeebo/xxh3 v1.0.2 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/collector/confmap v0.76.1 // indirect - go.opentelemetry.io/collector/featuregate v0.76.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0 // indirect + go.opentelemetry.io/collector/confmap v0.78.1 // indirect + go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.41.1 // indirect go.opentelemetry.io/otel/sdk/metric v0.38.1 // indirect go.opentelemetry.io/otel/trace v1.15.1 // indirect go.uber.org/atomic v1.10.0 // indirect - golang.org/x/mod v0.8.0 // indirect - golang.org/x/net v0.9.0 // indirect - golang.org/x/sys v0.7.0 // indirect + golang.org/x/mod v0.9.0 // indirect + golang.org/x/net v0.10.0 // indirect + golang.org/x/sys v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect - golang.org/x/tools v0.6.0 // indirect + golang.org/x/tools v0.7.0 // indirect golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect - google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect - google.golang.org/grpc v1.54.0 // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect + google.golang.org/grpc v1.55.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/lightstep/sdk/metric/go.sum b/lightstep/sdk/metric/go.sum index 8733708d..54b7a9c1 100644 --- a/lightstep/sdk/metric/go.sum +++ b/lightstep/sdk/metric/go.sum @@ -112,6 +112,8 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae h1:U65tCMLqh+DsFDz1TkiJWS5X38MX4DhKIfGshFpl6zo= github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae/go.mod h1:s8WUytFkI6cWBELm9TzZv4xSd/05tbFitjBfKBKPQ6c= +github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828 h1:6SdnpOjaKnBly9jy9jAIrjcxao4BzfipBl8SLWZCSl8= +github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828/go.mod h1:5kH5ys/J13LW1n4OLjanCSnJNHkmZwUjN7XQrZIoEpU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -343,6 +345,7 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mostynb/go-grpc-compression v1.1.17 h1:N9t6taOJN3mNTTi0wDf4e3lp/G/ON1TP67Pn0vTUA9I= github.com/mostynb/go-grpc-compression v1.1.17/go.mod h1:FUSBr0QjKqQgoDG/e0yiqlR6aqyXC39+g/hFLDfSsEY= +github.com/mostynb/go-grpc-compression v1.1.18/go.mod h1:U/0nmev+iFgBJ/jsVEeJi4UzoGrixmDcsfmMB6JsROg= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= @@ -355,6 +358,7 @@ github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAv github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -436,27 +440,38 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/collector v0.76.1 h1:dcJYZdhEh1XGBKNhAULtmyjHmaNtwhLGpTBEKcF3AHs= go.opentelemetry.io/collector v0.76.1/go.mod h1:mHgwT+wbrnQ0keR3+vSwraIX2r8+mcFLrFEGwRL6gNI= +go.opentelemetry.io/collector v0.78.1/go.mod h1:fVGv9Cr2e2ZNb82U8fCkraC7ujg5E4Qwf2k2s/GyXvo= go.opentelemetry.io/collector/component v0.76.1 h1:jBTNZsI/H2hF26WoQZtXL9VvuMoo7Gjco72ERIeYHIE= go.opentelemetry.io/collector/component v0.76.1/go.mod h1:R+IUN1lVr12k4SHpxB7zA3GwtFShVa/IaegZ/PF6EaE= +go.opentelemetry.io/collector/component v0.78.1/go.mod h1:40VqQaeXncgTm1E+EK0uGFv9gvrah5NTXTrn6C9TuIY= go.opentelemetry.io/collector/confmap v0.76.1 h1:6Rop2LdXpS32rxV3URXQXmAvFJQ1E366s9s08wYsbsw= go.opentelemetry.io/collector/confmap v0.76.1/go.mod h1:KsSre9mI7E8W5VsvzbZQZ3SMQLcmJHIgdrkalQjD52s= +go.opentelemetry.io/collector/confmap v0.78.1/go.mod h1:nudYcQJDF5zmAd2GKe5PetMF8/Lg1Mc/EjAKQBXHdyg= go.opentelemetry.io/collector/consumer v0.76.1 h1:+bSz3oATwrQD3Uu8drSyGqrp3OsFo+PS2BguRgiwTuY= go.opentelemetry.io/collector/consumer v0.76.1/go.mod h1:cDjyt1bTvo48lgIlbdfruxA7Tqr22Jlee8TWjbNkEe0= +go.opentelemetry.io/collector/consumer v0.78.1/go.mod h1:0vzYDn6eYmIDdC6CgTr/ATVlwutFk1Abet49/heKSmA= go.opentelemetry.io/collector/exporter v0.76.1 h1:xRDx5T5kS21C7M8T9s2+a14/KCC/GuSVGfhd5PlPIOY= go.opentelemetry.io/collector/exporter v0.76.1/go.mod h1:d5RP2xtETn1rbs4MUZehgayua/4Ej8+XGjxElY2iLaM= +go.opentelemetry.io/collector/exporter v0.78.1/go.mod h1:2xRXlfv2WgedYT8JFGb++o0O/LtvpgOgrHFXxZKQq/I= go.opentelemetry.io/collector/featuregate v0.76.1 h1:F9jP6cpIu446GsjsvHjzt4rC/ZJ/IPSPbXLzEngxUa8= go.opentelemetry.io/collector/featuregate v0.76.1/go.mod h1:stbsuyEexJF0EyVB3AgMs4mEuGvP7MDj3fsNeNdGDMs= +go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012/go.mod h1:/kVAsGUCyJXIDSgHftCN63QiwAEVHRLX2Kh/S+dqgHY= go.opentelemetry.io/collector/pdata v1.0.0-rcv0011 h1:7lT0vseP89mHtUpvgmWYRvQZ0eY+SHbVsnXY20xkoMg= go.opentelemetry.io/collector/pdata v1.0.0-rcv0011/go.mod h1:9vrXSQBeMRrdfGt9oMgYweqERJ8adaiQjN6LSbqRMMA= +go.opentelemetry.io/collector/pdata v1.0.0-rcv0012/go.mod h1:rEAKFqc1L03lidKtra/2/dJtI0Hp+JsQxuPEIkj/2Vg= go.opentelemetry.io/collector/processor/batchprocessor v0.76.1 h1:NjjzXMaGlWZXeSpJyjFA3DgUgHWqGaHw/FQcd5nFq4U= go.opentelemetry.io/collector/processor/batchprocessor v0.76.1/go.mod h1:TLvPEn93Aq9erUQtpReW04CP1vqZ5xPow+96JSCaWg0= +go.opentelemetry.io/collector/processor/batchprocessor v0.78.1/go.mod h1:6rdnvQXPzo0sIhrUVK4bpZ7EmDdR+bSpTdf7gmChhUU= go.opentelemetry.io/collector/receiver v0.76.1 h1:KBnOqKYLhMjOdCK/yPMX2oHKmrfOfxhm5sVC20aNV8M= go.opentelemetry.io/collector/receiver v0.76.1/go.mod h1:u2uRjoxwEqSRjNjtc52+kEYT7pPbDWgq12xFn6aVesk= +go.opentelemetry.io/collector/receiver v0.78.1/go.mod h1:3uz9mktAkTBFcAkwapirH6InuPUL44Oa6MnoXmQJ2ms= go.opentelemetry.io/collector/semconv v0.76.1 h1:cY5z4uXLB15AuU7GkJFfFCTD82l83fqK7DBRqQ7sZCY= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 h1:5jD3teb4Qh7mx/nfzq4jO2WFFpvXD0vYWFDrdvNWmXk= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0/go.mod h1:UMklln0+MRhZC4e3PwmN3pCtq4DyIadWw4yikh6bNrw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1/go.mod h1:f7TOPTlEcliCBlOYPuNnZTuND71MVTAoINWIt1SmP/c= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0 h1:lE9EJyw3/JhrjWH/hEy9FptnalDQgj7vpbgC2KCCCxE= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0/go.mod h1:pcQ3MM3SWvrA71U4GDqv9UFDJ3HQsW7y5ZO3tDTlUdI= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.41.1/go.mod h1:2FmkXne0k9nkp27LD/m+uoh8dNlstsiCJ7PLc/S72aI= go.opentelemetry.io/otel v1.15.1 h1:3Iwq3lfRByPaws0f6bU3naAqOR1n5IeDWd9390kWHa8= go.opentelemetry.io/otel v1.15.1/go.mod h1:mHHGEHVDLal6YrKMmk9LqC4a3sF5g+fHfrttQIB1NTc= go.opentelemetry.io/otel/exporters/prometheus v0.37.0 h1:NQc0epfL0xItsmGgSXgfbH2C1fq2VLXkZoDFsfRNHpc= @@ -527,6 +542,7 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -563,6 +579,7 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -636,6 +653,7 @@ golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -699,6 +717,7 @@ golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -768,6 +787,7 @@ google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxH google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f h1:BWUVssLB0HVOSY78gIdvk1dTVYtT1y8SBWtPYuTJ/6w= google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -790,6 +810,7 @@ google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9K google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 0f41c0673ba487ca3fc8e58fcf3c835441fe7092 Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Mon, 22 May 2023 17:12:45 -0700 Subject: [PATCH 11/12] tidy --- lightstep/sdk/metric/go.mod | 4 +- lightstep/sdk/metric/go.sum | 95 +++++++++++++++---------------------- 2 files changed, 40 insertions(+), 59 deletions(-) diff --git a/lightstep/sdk/metric/go.mod b/lightstep/sdk/metric/go.mod index 66113f2f..9f2c4097 100644 --- a/lightstep/sdk/metric/go.mod +++ b/lightstep/sdk/metric/go.mod @@ -33,8 +33,10 @@ require ( github.com/andybalholm/brotli v1.0.4 // indirect github.com/apache/arrow/go/v12 v12.0.0-20230404000714-f02d35119ae6 // indirect github.com/apache/thrift v0.16.0 // indirect + github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc // indirect github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/fxamacker/cbor/v2 v2.4.0 // indirect @@ -67,9 +69,9 @@ require ( go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.41.1 // indirect - go.opentelemetry.io/otel/sdk/metric v0.38.1 // indirect go.opentelemetry.io/otel/trace v1.15.1 // indirect go.uber.org/atomic v1.10.0 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect golang.org/x/mod v0.9.0 // indirect golang.org/x/net v0.10.0 // indirect golang.org/x/sys v0.8.0 // indirect diff --git a/lightstep/sdk/metric/go.sum b/lightstep/sdk/metric/go.sum index 54b7a9c1..ca3bba87 100644 --- a/lightstep/sdk/metric/go.sum +++ b/lightstep/sdk/metric/go.sum @@ -13,14 +13,14 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.15.1 h1:7UGq3QknM33pw5xATlpzeoomNxsacIVvTqTTvbfajmE= +cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= @@ -68,6 +68,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72H github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc h1:Keo7wQ7UODUaHcEi7ltENhbAK2VgZjfat6mLy03tQzo= +github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc/go.mod h1:k08r+Yj1PRAmuayFiRK6MYuR5Ve4IuZtTfxErMIh0+c= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -101,6 +103,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsYAX0YjD+8suexZDga5CctH4CCTx2+8= +github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -110,8 +114,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae h1:U65tCMLqh+DsFDz1TkiJWS5X38MX4DhKIfGshFpl6zo= -github.com/f5/otel-arrow-adapter v0.0.0-20230407165153-7ac49c4f4aae/go.mod h1:s8WUytFkI6cWBELm9TzZv4xSd/05tbFitjBfKBKPQ6c= github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828 h1:6SdnpOjaKnBly9jy9jAIrjcxao4BzfipBl8SLWZCSl8= github.com/f5/otel-arrow-adapter v0.0.0-20230522233737-dc34685b4828/go.mod h1:5kH5ys/J13LW1n4OLjanCSnJNHkmZwUjN7XQrZIoEpU= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -120,7 +122,6 @@ github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= @@ -154,8 +155,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -284,7 +285,6 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= @@ -296,8 +296,7 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxv github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -343,8 +342,7 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/mostynb/go-grpc-compression v1.1.17 h1:N9t6taOJN3mNTTi0wDf4e3lp/G/ON1TP67Pn0vTUA9I= -github.com/mostynb/go-grpc-compression v1.1.17/go.mod h1:FUSBr0QjKqQgoDG/e0yiqlR6aqyXC39+g/hFLDfSsEY= +github.com/mostynb/go-grpc-compression v1.1.18 h1:4a9UFaq3GvZO64ZRWPhxbJhAMsbDNIGznsSA3v1oO8U= github.com/mostynb/go-grpc-compression v1.1.18/go.mod h1:U/0nmev+iFgBJ/jsVEeJi4UzoGrixmDcsfmMB6JsROg= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -353,11 +351,10 @@ github.com/npillmayer/nestext v0.1.3/go.mod h1:h2lrijH8jpicr25dFY+oAJLyzlya6jhnu github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0= -github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -371,16 +368,16 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM= +github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= +github.com/prometheus/common v0.43.0 h1:iq+BVjvYLei5f27wiuNiB1DN6DYQkp1c8Bx0Vykh5us= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= @@ -390,7 +387,6 @@ github.com/prometheus/statsd_exporter v0.22.7 h1:7Pji/i2GuhK6Lu7DHrtTkFmNBCudCPT github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rs/cors v1.9.0 h1:l9HGsTsHJcvW14Nk7J9KFz8bzeAWXn3CG6bgt7LsrAE= github.com/rs/cors v1.9.0/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= @@ -438,49 +434,37 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/collector v0.76.1 h1:dcJYZdhEh1XGBKNhAULtmyjHmaNtwhLGpTBEKcF3AHs= -go.opentelemetry.io/collector v0.76.1/go.mod h1:mHgwT+wbrnQ0keR3+vSwraIX2r8+mcFLrFEGwRL6gNI= +go.opentelemetry.io/collector v0.78.1 h1:bcquLpoYZ0Y+USWCMvn3JiAaJvsBc5Z9HljZRco5UFc= go.opentelemetry.io/collector v0.78.1/go.mod h1:fVGv9Cr2e2ZNb82U8fCkraC7ujg5E4Qwf2k2s/GyXvo= -go.opentelemetry.io/collector/component v0.76.1 h1:jBTNZsI/H2hF26WoQZtXL9VvuMoo7Gjco72ERIeYHIE= -go.opentelemetry.io/collector/component v0.76.1/go.mod h1:R+IUN1lVr12k4SHpxB7zA3GwtFShVa/IaegZ/PF6EaE= +go.opentelemetry.io/collector/component v0.78.1 h1:KG4N0Kfl2oBN2utDXpYRN1vQ4V1sknihH55Tvs8htEU= go.opentelemetry.io/collector/component v0.78.1/go.mod h1:40VqQaeXncgTm1E+EK0uGFv9gvrah5NTXTrn6C9TuIY= -go.opentelemetry.io/collector/confmap v0.76.1 h1:6Rop2LdXpS32rxV3URXQXmAvFJQ1E366s9s08wYsbsw= -go.opentelemetry.io/collector/confmap v0.76.1/go.mod h1:KsSre9mI7E8W5VsvzbZQZ3SMQLcmJHIgdrkalQjD52s= +go.opentelemetry.io/collector/confmap v0.78.1 h1:nALyvRooTBhTH6SKBMtGxsFHBw8QO+RMZKjnha9tx9k= go.opentelemetry.io/collector/confmap v0.78.1/go.mod h1:nudYcQJDF5zmAd2GKe5PetMF8/Lg1Mc/EjAKQBXHdyg= -go.opentelemetry.io/collector/consumer v0.76.1 h1:+bSz3oATwrQD3Uu8drSyGqrp3OsFo+PS2BguRgiwTuY= -go.opentelemetry.io/collector/consumer v0.76.1/go.mod h1:cDjyt1bTvo48lgIlbdfruxA7Tqr22Jlee8TWjbNkEe0= +go.opentelemetry.io/collector/consumer v0.78.1 h1:yD2ECKX6egbY8NRxn8Xhl+4+40ZdjD4BW51fNXNp7qc= go.opentelemetry.io/collector/consumer v0.78.1/go.mod h1:0vzYDn6eYmIDdC6CgTr/ATVlwutFk1Abet49/heKSmA= -go.opentelemetry.io/collector/exporter v0.76.1 h1:xRDx5T5kS21C7M8T9s2+a14/KCC/GuSVGfhd5PlPIOY= -go.opentelemetry.io/collector/exporter v0.76.1/go.mod h1:d5RP2xtETn1rbs4MUZehgayua/4Ej8+XGjxElY2iLaM= +go.opentelemetry.io/collector/exporter v0.78.1 h1:HPxcCdgrjjB4kqglBFxjqTbqYY6PhIlPFzaozFxY5LU= go.opentelemetry.io/collector/exporter v0.78.1/go.mod h1:2xRXlfv2WgedYT8JFGb++o0O/LtvpgOgrHFXxZKQq/I= -go.opentelemetry.io/collector/featuregate v0.76.1 h1:F9jP6cpIu446GsjsvHjzt4rC/ZJ/IPSPbXLzEngxUa8= -go.opentelemetry.io/collector/featuregate v0.76.1/go.mod h1:stbsuyEexJF0EyVB3AgMs4mEuGvP7MDj3fsNeNdGDMs= +go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012 h1:pSO81lfikGEgRXHepmOGy2o6WWCly427UJCgMJC5c8g= go.opentelemetry.io/collector/featuregate v1.0.0-rcv0012/go.mod h1:/kVAsGUCyJXIDSgHftCN63QiwAEVHRLX2Kh/S+dqgHY= -go.opentelemetry.io/collector/pdata v1.0.0-rcv0011 h1:7lT0vseP89mHtUpvgmWYRvQZ0eY+SHbVsnXY20xkoMg= -go.opentelemetry.io/collector/pdata v1.0.0-rcv0011/go.mod h1:9vrXSQBeMRrdfGt9oMgYweqERJ8adaiQjN6LSbqRMMA= +go.opentelemetry.io/collector/pdata v1.0.0-rcv0012 h1:R+cfEUMyLn9Q1QknyQ4QU77pbfc1aJKYEXFHtnwSbCg= go.opentelemetry.io/collector/pdata v1.0.0-rcv0012/go.mod h1:rEAKFqc1L03lidKtra/2/dJtI0Hp+JsQxuPEIkj/2Vg= -go.opentelemetry.io/collector/processor/batchprocessor v0.76.1 h1:NjjzXMaGlWZXeSpJyjFA3DgUgHWqGaHw/FQcd5nFq4U= -go.opentelemetry.io/collector/processor/batchprocessor v0.76.1/go.mod h1:TLvPEn93Aq9erUQtpReW04CP1vqZ5xPow+96JSCaWg0= +go.opentelemetry.io/collector/processor/batchprocessor v0.78.1 h1:rrKVGvbnzWls1Uev4vxbjqYmOdp86N3nM8WQoKQrH+A= go.opentelemetry.io/collector/processor/batchprocessor v0.78.1/go.mod h1:6rdnvQXPzo0sIhrUVK4bpZ7EmDdR+bSpTdf7gmChhUU= -go.opentelemetry.io/collector/receiver v0.76.1 h1:KBnOqKYLhMjOdCK/yPMX2oHKmrfOfxhm5sVC20aNV8M= -go.opentelemetry.io/collector/receiver v0.76.1/go.mod h1:u2uRjoxwEqSRjNjtc52+kEYT7pPbDWgq12xFn6aVesk= +go.opentelemetry.io/collector/receiver v0.78.1 h1:MSgnfyIk2OATOvVLJhTFH29rObN6umCEqbeuGLfdUhw= go.opentelemetry.io/collector/receiver v0.78.1/go.mod h1:3uz9mktAkTBFcAkwapirH6InuPUL44Oa6MnoXmQJ2ms= -go.opentelemetry.io/collector/semconv v0.76.1 h1:cY5z4uXLB15AuU7GkJFfFCTD82l83fqK7DBRqQ7sZCY= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 h1:5jD3teb4Qh7mx/nfzq4jO2WFFpvXD0vYWFDrdvNWmXk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0/go.mod h1:UMklln0+MRhZC4e3PwmN3pCtq4DyIadWw4yikh6bNrw= +go.opentelemetry.io/collector/semconv v0.78.1 h1:YlhokDVTP+gw6yKA0Jc2FcfddhD+a6E5Ixmby5xBWs0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1 h1:Ei1FUQ5CbSNkl2o/XAiksXSyQNAeJBX3ivqJpJ254Ak= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.41.1/go.mod h1:f7TOPTlEcliCBlOYPuNnZTuND71MVTAoINWIt1SmP/c= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0 h1:lE9EJyw3/JhrjWH/hEy9FptnalDQgj7vpbgC2KCCCxE= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0/go.mod h1:pcQ3MM3SWvrA71U4GDqv9UFDJ3HQsW7y5ZO3tDTlUdI= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.41.1 h1:pX+lppB8PArapyhS6nBStyQmkaDUPWdQf0UmEGRCQ54= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.41.1/go.mod h1:2FmkXne0k9nkp27LD/m+uoh8dNlstsiCJ7PLc/S72aI= go.opentelemetry.io/otel v1.15.1 h1:3Iwq3lfRByPaws0f6bU3naAqOR1n5IeDWd9390kWHa8= go.opentelemetry.io/otel v1.15.1/go.mod h1:mHHGEHVDLal6YrKMmk9LqC4a3sF5g+fHfrttQIB1NTc= -go.opentelemetry.io/otel/exporters/prometheus v0.37.0 h1:NQc0epfL0xItsmGgSXgfbH2C1fq2VLXkZoDFsfRNHpc= +go.opentelemetry.io/otel/exporters/prometheus v0.38.1 h1:GwalIvFIx91qIA8qyAyqYj9lql5Ba2Oxj/jDG6+3UoU= go.opentelemetry.io/otel/metric v0.38.1 h1:2MM7m6wPw9B8Qv8iHygoAgkbejed59uUR6ezR5T3X2s= go.opentelemetry.io/otel/metric v0.38.1/go.mod h1:FwqNHD3I/5iX9pfrRGZIlYICrJv0rHEUl2Ln5vdIVnQ= go.opentelemetry.io/otel/sdk v1.15.1 h1:5FKR+skgpzvhPQHIEfcwMYjCBr14LWzs3uSqKiQzETI= go.opentelemetry.io/otel/sdk v1.15.1/go.mod h1:8rVtxQfrbmbHKfqzpQkT5EzZMcbMBwTzNAggbEAM0KA= go.opentelemetry.io/otel/sdk/metric v0.38.1 h1:EkO5wI4NT/fUaoPMGc0fKV28JaWe7q4vfVpEVasGb+8= -go.opentelemetry.io/otel/sdk/metric v0.38.1/go.mod h1:Rn4kSXFF9ZQZ5lL1pxQjCbK4seiO+U7s0ncmIFJaj34= go.opentelemetry.io/otel/trace v1.15.1 h1:uXLo6iHJEzDfrNC0L0mNjItIp06SyaBQxu5t3xMlngY= go.opentelemetry.io/otel/trace v1.15.1/go.mod h1:IWdQG/5N1x7f6YUlmdLeJvH9yxtuJAfc4VW5Agv9r/8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -516,7 +500,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220827204233-334a2380cb91 h1:tnebWN09GYg9OLPss1KXj8txwZc6X6uMr6VFdcGNbHw= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -540,8 +525,7 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -577,8 +561,7 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -586,7 +569,7 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M= +golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -651,8 +634,7 @@ golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -715,8 +697,7 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -726,7 +707,7 @@ golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.12.0 h1:xKuo6hzt+gMav00meVPUlXwSdoEJP46BR+wdxQEFK2o= +gonum.org/v1/gonum v0.13.0 h1:a0T3bh+7fhRyqeNbiC3qVHYmkiQgit3wnNan/2c0HMM= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -785,8 +766,7 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f h1:BWUVssLB0HVOSY78gIdvk1dTVYtT1y8SBWtPYuTJ/6w= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -808,8 +788,7 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From d0faca83f2a1a9b45fcb354310765ef7c0c1335b Mon Sep 17 00:00:00 2001 From: Joshua MacDonald Date: Mon, 22 May 2023 17:20:47 -0700 Subject: [PATCH 12/12] tidy --- lightstep/sdk/metric/example/go.sum | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lightstep/sdk/metric/example/go.sum b/lightstep/sdk/metric/example/go.sum index f195f30e..27c04eeb 100644 --- a/lightstep/sdk/metric/example/go.sum +++ b/lightstep/sdk/metric/example/go.sum @@ -405,7 +405,7 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=