upgrade to latest dependencies (#351)

Signed-off-by: Matt Moore (via Sockpuppet) <mattmoor@vmware.com>
This commit is contained in:
Matt Moore 2020-10-05 20:09:22 -07:00 committed by GitHub
parent 8d3017d088
commit ba8d14f493
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 78 additions and 15 deletions

4
go.mod
View File

@ -16,8 +16,8 @@ require (
k8s.io/client-go v11.0.1-0.20190805182717-6502b5e7b1b5+incompatible k8s.io/client-go v11.0.1-0.20190805182717-6502b5e7b1b5+incompatible
k8s.io/code-generator v0.18.8 k8s.io/code-generator v0.18.8
k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29 k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29
knative.dev/pkg v0.0.0-20201003175733-ea7374e81105 knative.dev/pkg v0.0.0-20201005175134-21cb070a8b05
knative.dev/test-infra v0.0.0-20201002164834-8c07ff018549 knative.dev/test-infra v0.0.0-20201005191434-b298834c10f1
) )
replace ( replace (

8
go.sum
View File

@ -1894,17 +1894,17 @@ knative.dev/pkg v0.0.0-20200505191044-3da93ebb24c2/go.mod h1:Q6sL35DdGs8hIQZKdaC
knative.dev/pkg v0.0.0-20200515002500-16d7b963416f/go.mod h1:tMOHGbxtRz8zYFGEGpV/bpoTEM1o89MwYFC4YJXl3GY= knative.dev/pkg v0.0.0-20200515002500-16d7b963416f/go.mod h1:tMOHGbxtRz8zYFGEGpV/bpoTEM1o89MwYFC4YJXl3GY=
knative.dev/pkg v0.0.0-20200528142800-1c6815d7e4c9/go.mod h1:QgNZTxnwpB/oSpNcfnLVlw+WpEwwyKAvJlvR3hgeltA= knative.dev/pkg v0.0.0-20200528142800-1c6815d7e4c9/go.mod h1:QgNZTxnwpB/oSpNcfnLVlw+WpEwwyKAvJlvR3hgeltA=
knative.dev/pkg v0.0.0-20200711004937-22502028e31a/go.mod h1:AqAJV6rYi8IGikDjJ/9ZQd9qKdkXVlesVnVjwx62YB8= knative.dev/pkg v0.0.0-20200711004937-22502028e31a/go.mod h1:AqAJV6rYi8IGikDjJ/9ZQd9qKdkXVlesVnVjwx62YB8=
knative.dev/pkg v0.0.0-20201003175733-ea7374e81105 h1:dx4o9pDAyyYAqpDiCQiIVbcBMjVYGAV+lzgJbVijZtg= knative.dev/pkg v0.0.0-20201005175134-21cb070a8b05 h1:EKh6IFZisRV8qaT2KqUYsX8VovGJfO6978z3xuQvUuE=
knative.dev/pkg v0.0.0-20201003175733-ea7374e81105/go.mod h1:o9w/M7OnPc0ou07PIUORHUBSZgszeZebAYZkxQ8GdFw= knative.dev/pkg v0.0.0-20201005175134-21cb070a8b05/go.mod h1:xpPYLHYXh306wQISWkRC/5t3+CD76nOcEHrCQ+5pxBM=
knative.dev/test-infra v0.0.0-20200407185800-1b88cb3b45a5/go.mod h1:xcdUkMJrLlBswIZqL5zCuBFOC22WIPMQoVX1L35i0vQ= knative.dev/test-infra v0.0.0-20200407185800-1b88cb3b45a5/go.mod h1:xcdUkMJrLlBswIZqL5zCuBFOC22WIPMQoVX1L35i0vQ=
knative.dev/test-infra v0.0.0-20200505052144-5ea2f705bb55/go.mod h1:WqF1Azka+FxPZ20keR2zCNtiQA1MP9ZB4BH4HuI+SIU= knative.dev/test-infra v0.0.0-20200505052144-5ea2f705bb55/go.mod h1:WqF1Azka+FxPZ20keR2zCNtiQA1MP9ZB4BH4HuI+SIU=
knative.dev/test-infra v0.0.0-20200513011557-d03429a76034/go.mod h1:aMif0KXL4g19YCYwsy4Ocjjz5xgPlseYV+B95Oo4JGE= knative.dev/test-infra v0.0.0-20200513011557-d03429a76034/go.mod h1:aMif0KXL4g19YCYwsy4Ocjjz5xgPlseYV+B95Oo4JGE=
knative.dev/test-infra v0.0.0-20200519015156-82551620b0a9/go.mod h1:A5b2OAXTOeHT3hHhVQm3dmtbuWvIDP7qzgtqxA3/2pE= knative.dev/test-infra v0.0.0-20200519015156-82551620b0a9/go.mod h1:A5b2OAXTOeHT3hHhVQm3dmtbuWvIDP7qzgtqxA3/2pE=
knative.dev/test-infra v0.0.0-20200707183444-aed09e56ddc7/go.mod h1:RjYAhXnZqeHw9+B0zsbqSPlae0lCvjekO/nw5ZMpLCs= knative.dev/test-infra v0.0.0-20200707183444-aed09e56ddc7/go.mod h1:RjYAhXnZqeHw9+B0zsbqSPlae0lCvjekO/nw5ZMpLCs=
knative.dev/test-infra v0.0.0-20201001200229-a6988e3b3b38 h1:g2LdlRp7jB6QHz3D69fnvn2OfX5C6bydIzubyLpFNl0=
knative.dev/test-infra v0.0.0-20201001200229-a6988e3b3b38/go.mod h1:Pmg2c7Z7q7BGFUV/GOpU5BlrD3ePJft4MPqx8AYBplc=
knative.dev/test-infra v0.0.0-20201002164834-8c07ff018549 h1:8UObRJ0lnWvU9FuD8ubmkwJo14+aZtboq1ncBWbs2uI= knative.dev/test-infra v0.0.0-20201002164834-8c07ff018549 h1:8UObRJ0lnWvU9FuD8ubmkwJo14+aZtboq1ncBWbs2uI=
knative.dev/test-infra v0.0.0-20201002164834-8c07ff018549/go.mod h1:Pmg2c7Z7q7BGFUV/GOpU5BlrD3ePJft4MPqx8AYBplc= knative.dev/test-infra v0.0.0-20201002164834-8c07ff018549/go.mod h1:Pmg2c7Z7q7BGFUV/GOpU5BlrD3ePJft4MPqx8AYBplc=
knative.dev/test-infra v0.0.0-20201005191434-b298834c10f1 h1:BCeUtO6TsMQyvH1GpxRViTOY+KANqnfk+n5DdTo4nio=
knative.dev/test-infra v0.0.0-20201005191434-b298834c10f1/go.mod h1:Pmg2c7Z7q7BGFUV/GOpU5BlrD3ePJft4MPqx8AYBplc=
mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc=
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4=
mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw=

View File

@ -29,6 +29,7 @@ import (
"go.opencensus.io/stats" "go.opencensus.io/stats"
"go.opencensus.io/stats/view" "go.opencensus.io/stats/view"
"go.opencensus.io/tag" "go.opencensus.io/tag"
"k8s.io/apimachinery/pkg/util/clock"
) )
type storedViews struct { type storedViews struct {
@ -40,6 +41,7 @@ type meterExporter struct {
m view.Meter // NOTE: DO NOT RETURN THIS DIRECTLY; the view.Meter will not work for the empty Resource m view.Meter // NOTE: DO NOT RETURN THIS DIRECTLY; the view.Meter will not work for the empty Resource
o stats.Options // Cache the option to reduce allocations o stats.Options // Cache the option to reduce allocations
e view.Exporter e view.Exporter
t time.Time // Time when last access occurred
} }
// ResourceExporterFactory provides a hook for producing separate view.Exporters // ResourceExporterFactory provides a hook for producing separate view.Exporters
@ -51,14 +53,67 @@ type meters struct {
meters map[string]*meterExporter meters map[string]*meterExporter
factory ResourceExporterFactory factory ResourceExporterFactory
lock sync.Mutex lock sync.Mutex
clock clock.Clock
ticker clock.Ticker
tickerStopChan chan struct{}
} }
// Lock regime: lock allMeters before resourceViews. The critical path is in // Lock regime: lock allMeters before resourceViews. The critical path is in
// optionForResource, which must lock allMeters, but only needs to lock // optionForResource, which must lock allMeters, but only needs to lock
// resourceViews if a new meter needs to be created. // resourceViews if a new meter needs to be created.
var resourceViews = storedViews{} var (
var allMeters = meters{ resourceViews = storedViews{}
allMeters = meters{
meters: map[string]*meterExporter{"": &defaultMeter}, meters: map[string]*meterExporter{"": &defaultMeter},
clock: clock.Clock(clock.RealClock{}),
}
cleanupOnce = new(sync.Once)
meterExporterScanFrequency = 1 * time.Minute
maxMeterExporterAge = 10 * time.Minute
)
// cleanup looks through allMeter's meterExporter and prunes any that were last visited
// more than maxMeterExporterAge ago. This will clean up any exporters for resources
// that no longer exist on the system (a replaced revision, e.g.). All meterExporter
// lookups (and creations) run meterExporterForResource, which updates the timestamp
// on each access.
func cleanup() {
expiryCutoff := allMeters.clock.Now().Add(-1 * maxMeterExporterAge)
allMeters.lock.Lock()
defer allMeters.lock.Unlock()
for key, meter := range allMeters.meters {
if key != "" && meter.t.Before(expiryCutoff) {
flushGivenExporter(meter.e)
delete(allMeters.meters, key)
}
}
}
// startCleanup is configured to only run once in production. For testing,
// calling startCleanup again will terminate old cleanup threads,
// and restart anew.
func startCleanup() {
if allMeters.tickerStopChan != nil {
close(allMeters.tickerStopChan)
}
curClock := allMeters.clock
newTicker := curClock.NewTicker(meterExporterScanFrequency)
newStopChan := make(chan struct{})
allMeters.tickerStopChan = newStopChan
allMeters.ticker = newTicker
go func() {
defer newTicker.Stop()
for {
select {
case <-newTicker.C():
cleanup()
case <-newStopChan:
return
}
}
}()
} }
// RegisterResourceView is similar to view.Register(), except that it will // RegisterResourceView is similar to view.Register(), except that it will
@ -174,7 +229,9 @@ func flushResourceExporters() {
} }
// ClearMetersForTest clears the internal set of metrics being exported, // ClearMetersForTest clears the internal set of metrics being exported,
// including cleaning up background threads. // including cleaning up background threads, and restarts cleanup thread.
//
// If a replacement clock is desired, it should be in allMeters.clock before calling.
func ClearMetersForTest() { func ClearMetersForTest() {
allMeters.lock.Lock() allMeters.lock.Lock()
defer allMeters.lock.Unlock() defer allMeters.lock.Unlock()
@ -186,6 +243,7 @@ func ClearMetersForTest() {
meter.m.Stop() meter.m.Stop()
delete(allMeters.meters, k) delete(allMeters.meters, k)
} }
startCleanup()
} }
func meterExporterForResource(r *resource.Resource) *meterExporter { func meterExporterForResource(r *resource.Resource) *meterExporter {
@ -195,6 +253,7 @@ func meterExporterForResource(r *resource.Resource) *meterExporter {
mE = &meterExporter{} mE = &meterExporter{}
allMeters.meters[key] = mE allMeters.meters[key] = mE
} }
mE.t = allMeters.clock.Now()
if mE.o != nil { if mE.o != nil {
return mE return mE
} }
@ -219,6 +278,9 @@ func meterExporterForResource(r *resource.Resource) *meterExporter {
// optionForResource finds or creates a stats exporter for the resource, and // optionForResource finds or creates a stats exporter for the resource, and
// returns a stats.Option indicating which meter to record to. // returns a stats.Option indicating which meter to record to.
func optionForResource(r *resource.Resource) (stats.Options, error) { func optionForResource(r *resource.Resource) (stats.Options, error) {
// Start the allMeters cleanup thread, if not already started
cleanupOnce.Do(startCleanup)
allMeters.lock.Lock() allMeters.lock.Lock()
defer allMeters.lock.Unlock() defer allMeters.lock.Unlock()
@ -313,6 +375,7 @@ var _ view.Meter = (*defaultMeterImpl)(nil)
var defaultMeter = meterExporter{ var defaultMeter = meterExporter{
m: &defaultMeterImpl{}, m: &defaultMeterImpl{},
o: stats.WithRecorder(nil), o: stats.WithRecorder(nil),
t: time.Now(), // time.Now() here is ok - defaultMeter never expires, so this won't be checked
} }
func (*defaultMeterImpl) Record(*tag.Map, interface{}, map[string]interface{}) { func (*defaultMeterImpl) Record(*tag.Map, interface{}, map[string]interface{}) {

4
vendor/modules.txt vendored
View File

@ -725,7 +725,7 @@ k8s.io/kube-openapi/pkg/util/sets
k8s.io/utils/buffer k8s.io/utils/buffer
k8s.io/utils/integer k8s.io/utils/integer
k8s.io/utils/trace k8s.io/utils/trace
# knative.dev/pkg v0.0.0-20201003175733-ea7374e81105 # knative.dev/pkg v0.0.0-20201005175134-21cb070a8b05
## explicit ## explicit
knative.dev/pkg/apis knative.dev/pkg/apis
knative.dev/pkg/apis/duck/ducktypes knative.dev/pkg/apis/duck/ducktypes
@ -749,7 +749,7 @@ knative.dev/pkg/metrics/metricskey
knative.dev/pkg/network knative.dev/pkg/network
knative.dev/pkg/reconciler knative.dev/pkg/reconciler
knative.dev/pkg/system knative.dev/pkg/system
# knative.dev/test-infra v0.0.0-20201002164834-8c07ff018549 # knative.dev/test-infra v0.0.0-20201005191434-b298834c10f1
## explicit ## explicit
knative.dev/test-infra/scripts knative.dev/test-infra/scripts
knative.dev/test-infra/tools/dep-collector knative.dev/test-infra/tools/dep-collector