Merge pull request #74636 from logicalhan/reflector-metrics

Remove reflector metrics since they are causing a memory leak

Kubernetes-commit: a514fa042e49c5b95d6c03351563e54e14bc5e97
This commit is contained in:
Kubernetes Publisher 2019-02-27 03:24:09 -08:00
commit f8b04c2bdb
2 changed files with 88 additions and 113 deletions

174
Godeps/Godeps.json generated
View File

@ -1,7 +1,7 @@
{
"ImportPath": "k8s.io/client-go",
"GoVersion": "go1.11",
"GodepVersion": "v80",
"GodepVersion": "v80-k8s-r1",
"Packages": [
"./..."
],
@ -272,347 +272,347 @@
},
{
"ImportPath": "k8s.io/api/admissionregistration/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/apps/v1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/apps/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/apps/v1beta2",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/auditregistration/v1alpha1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/authentication/v1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/authentication/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/authorization/v1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/authorization/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/autoscaling/v1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/autoscaling/v2beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/autoscaling/v2beta2",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/batch/v1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/batch/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/batch/v2alpha1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/certificates/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/coordination/v1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/coordination/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/core/v1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/events/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/extensions/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/imagepolicy/v1alpha1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/networking/v1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/networking/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/policy/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/rbac/v1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/rbac/v1alpha1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/rbac/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/scheduling/v1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/scheduling/v1alpha1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/scheduling/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/settings/v1alpha1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/storage/v1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/storage/v1alpha1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/api/storage/v1beta1",
"Rev": "f951fa7b8c72cf726656de66d834a518359ce6e7"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/apitesting",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/apitesting/fuzzer",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/apitesting/roundtrip",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/equality",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/resource",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/fuzzer",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1beta1",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/fields",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/labels",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/selection",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/types",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/cache",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/clock",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/intstr",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/naming",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/version",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/watch",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
"Rev": "dcb391cde5ca0298013d43336817d20b74650702"
"Rev": "33f4ffca8693764f1a472b759ebd335e9b756e5b"
},
{
"ImportPath": "k8s.io/klog",

View File

@ -24,10 +24,8 @@ import (
"net"
"net/url"
"reflect"
"strconv"
"strings"
"sync"
"sync/atomic"
"syscall"
"time"
@ -96,17 +94,10 @@ func NewReflector(lw ListerWatcher, expectedType interface{}, store Store, resyn
return NewNamedReflector(naming.GetNameFromCallsite(internalPackages...), lw, expectedType, store, resyncPeriod)
}
// reflectorDisambiguator is used to disambiguate started reflectors.
// initialized to an unstable value to ensure meaning isn't attributed to the suffix.
var reflectorDisambiguator = int64(time.Now().UnixNano() % 12345)
// NewNamedReflector same as NewReflector, but with a specified name for logging
func NewNamedReflector(name string, lw ListerWatcher, expectedType interface{}, store Store, resyncPeriod time.Duration) *Reflector {
reflectorSuffix := atomic.AddInt64(&reflectorDisambiguator, 1)
r := &Reflector{
name: name,
// we need this to be unique per process (some names are still the same) but obvious who it belongs to
metrics: newReflectorMetrics(makeValidPrometheusMetricLabel(fmt.Sprintf("reflector_"+name+"_%d", reflectorSuffix))),
listerWatcher: lw,
store: store,
expectedType: reflect.TypeOf(expectedType),
@ -174,8 +165,6 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error {
// to be served from cache and potentially be delayed relative to
// etcd contents. Reflector framework will catch up via Watch() eventually.
options := metav1.ListOptions{ResourceVersion: "0"}
r.metrics.numberOfLists.Inc()
start := r.clock.Now()
if err := func() error {
initTrace := trace.New("Reflector " + r.name + " ListAndWatch")
@ -204,7 +193,6 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error {
return fmt.Errorf("%s: Failed to list %v: %v", r.name, r.expectedType, err)
}
initTrace.Step("Objects listed")
r.metrics.listDuration.Observe(time.Since(start).Seconds())
listMetaInterface, err := meta.ListAccessor(list)
if err != nil {
return fmt.Errorf("%s: Unable to understand list result %#v: %v", r.name, list, err)
@ -216,7 +204,6 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error {
return fmt.Errorf("%s: Unable to understand list result %#v (%v)", r.name, list, err)
}
initTrace.Step("Objects extracted")
r.metrics.numberOfItemsInList.Observe(float64(len(items)))
if err := r.syncWith(items, resourceVersion); err != nil {
return fmt.Errorf("%s: Unable to sync list result: %v", r.name, err)
}
@ -272,7 +259,6 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error {
TimeoutSeconds: &timeoutSeconds,
}
r.metrics.numberOfWatches.Inc()
w, err := r.listerWatcher.Watch(options)
if err != nil {
switch err {
@ -324,11 +310,6 @@ func (r *Reflector) watchHandler(w watch.Interface, resourceVersion *string, err
// Stopping the watcher should be idempotent and if we return from this function there's no way
// we're coming back in with the same watch interface.
defer w.Stop()
// update metrics
defer func() {
r.metrics.numberOfItemsInWatch.Observe(float64(eventCount))
r.metrics.watchDuration.Observe(time.Since(start).Seconds())
}()
loop:
for {
@ -384,7 +365,6 @@ loop:
watchDuration := r.clock.Now().Sub(start)
if watchDuration < 1*time.Second && eventCount == 0 {
r.metrics.numberOfShortWatches.Inc()
return fmt.Errorf("very short watch: %s: Unexpected watch close - watch lasted less than a second and no items received", r.name)
}
klog.V(4).Infof("%s: Watch close - %v total %v items received", r.name, r.expectedType, eventCount)
@ -403,9 +383,4 @@ func (r *Reflector) setLastSyncResourceVersion(v string) {
r.lastSyncResourceVersionMutex.Lock()
defer r.lastSyncResourceVersionMutex.Unlock()
r.lastSyncResourceVersion = v
rv, err := strconv.Atoi(v)
if err == nil {
r.metrics.lastResourceVersion.Set(float64(rv))
}
}