mirror of https://github.com/knative/caching.git
upgrade to latest dependencies (#351)
Signed-off-by: Matt Moore (via Sockpuppet) <mattmoor@vmware.com>
This commit is contained in:
parent
8d3017d088
commit
ba8d14f493
4
go.mod
4
go.mod
|
@ -16,8 +16,8 @@ require (
|
|||
k8s.io/client-go v11.0.1-0.20190805182717-6502b5e7b1b5+incompatible
|
||||
k8s.io/code-generator v0.18.8
|
||||
k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29
|
||||
knative.dev/pkg v0.0.0-20201003175733-ea7374e81105
|
||||
knative.dev/test-infra v0.0.0-20201002164834-8c07ff018549
|
||||
knative.dev/pkg v0.0.0-20201005175134-21cb070a8b05
|
||||
knative.dev/test-infra v0.0.0-20201005191434-b298834c10f1
|
||||
)
|
||||
|
||||
replace (
|
||||
|
|
8
go.sum
8
go.sum
|
@ -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-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-20201003175733-ea7374e81105 h1:dx4o9pDAyyYAqpDiCQiIVbcBMjVYGAV+lzgJbVijZtg=
|
||||
knative.dev/pkg v0.0.0-20201003175733-ea7374e81105/go.mod h1:o9w/M7OnPc0ou07PIUORHUBSZgszeZebAYZkxQ8GdFw=
|
||||
knative.dev/pkg v0.0.0-20201005175134-21cb070a8b05 h1:EKh6IFZisRV8qaT2KqUYsX8VovGJfO6978z3xuQvUuE=
|
||||
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-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-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-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/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/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=
|
||||
|
|
|
@ -29,6 +29,7 @@ import (
|
|||
"go.opencensus.io/stats"
|
||||
"go.opencensus.io/stats/view"
|
||||
"go.opencensus.io/tag"
|
||||
"k8s.io/apimachinery/pkg/util/clock"
|
||||
)
|
||||
|
||||
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
|
||||
o stats.Options // Cache the option to reduce allocations
|
||||
e view.Exporter
|
||||
t time.Time // Time when last access occurred
|
||||
}
|
||||
|
||||
// ResourceExporterFactory provides a hook for producing separate view.Exporters
|
||||
|
@ -48,17 +50,70 @@ type meterExporter struct {
|
|||
// Tags are.
|
||||
type ResourceExporterFactory func(*resource.Resource) (view.Exporter, error)
|
||||
type meters struct {
|
||||
meters map[string]*meterExporter
|
||||
factory ResourceExporterFactory
|
||||
lock sync.Mutex
|
||||
meters map[string]*meterExporter
|
||||
factory ResourceExporterFactory
|
||||
lock sync.Mutex
|
||||
clock clock.Clock
|
||||
ticker clock.Ticker
|
||||
tickerStopChan chan struct{}
|
||||
}
|
||||
|
||||
// Lock regime: lock allMeters before resourceViews. The critical path is in
|
||||
// optionForResource, which must lock allMeters, but only needs to lock
|
||||
// resourceViews if a new meter needs to be created.
|
||||
var resourceViews = storedViews{}
|
||||
var allMeters = meters{
|
||||
meters: map[string]*meterExporter{"": &defaultMeter},
|
||||
var (
|
||||
resourceViews = storedViews{}
|
||||
allMeters = meters{
|
||||
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
|
||||
|
@ -174,7 +229,9 @@ func flushResourceExporters() {
|
|||
}
|
||||
|
||||
// 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() {
|
||||
allMeters.lock.Lock()
|
||||
defer allMeters.lock.Unlock()
|
||||
|
@ -186,6 +243,7 @@ func ClearMetersForTest() {
|
|||
meter.m.Stop()
|
||||
delete(allMeters.meters, k)
|
||||
}
|
||||
startCleanup()
|
||||
}
|
||||
|
||||
func meterExporterForResource(r *resource.Resource) *meterExporter {
|
||||
|
@ -195,6 +253,7 @@ func meterExporterForResource(r *resource.Resource) *meterExporter {
|
|||
mE = &meterExporter{}
|
||||
allMeters.meters[key] = mE
|
||||
}
|
||||
mE.t = allMeters.clock.Now()
|
||||
if mE.o != nil {
|
||||
return mE
|
||||
}
|
||||
|
@ -219,6 +278,9 @@ func meterExporterForResource(r *resource.Resource) *meterExporter {
|
|||
// optionForResource finds or creates a stats exporter for the resource, and
|
||||
// returns a stats.Option indicating which meter to record to.
|
||||
func optionForResource(r *resource.Resource) (stats.Options, error) {
|
||||
// Start the allMeters cleanup thread, if not already started
|
||||
cleanupOnce.Do(startCleanup)
|
||||
|
||||
allMeters.lock.Lock()
|
||||
defer allMeters.lock.Unlock()
|
||||
|
||||
|
@ -313,6 +375,7 @@ var _ view.Meter = (*defaultMeterImpl)(nil)
|
|||
var defaultMeter = meterExporter{
|
||||
m: &defaultMeterImpl{},
|
||||
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{}) {
|
||||
|
|
|
@ -725,7 +725,7 @@ k8s.io/kube-openapi/pkg/util/sets
|
|||
k8s.io/utils/buffer
|
||||
k8s.io/utils/integer
|
||||
k8s.io/utils/trace
|
||||
# knative.dev/pkg v0.0.0-20201003175733-ea7374e81105
|
||||
# knative.dev/pkg v0.0.0-20201005175134-21cb070a8b05
|
||||
## explicit
|
||||
knative.dev/pkg/apis
|
||||
knative.dev/pkg/apis/duck/ducktypes
|
||||
|
@ -749,7 +749,7 @@ knative.dev/pkg/metrics/metricskey
|
|||
knative.dev/pkg/network
|
||||
knative.dev/pkg/reconciler
|
||||
knative.dev/pkg/system
|
||||
# knative.dev/test-infra v0.0.0-20201002164834-8c07ff018549
|
||||
# knative.dev/test-infra v0.0.0-20201005191434-b298834c10f1
|
||||
## explicit
|
||||
knative.dev/test-infra/scripts
|
||||
knative.dev/test-infra/tools/dep-collector
|
||||
|
|
Loading…
Reference in New Issue