diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 4f4b7aac..58aa629b 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -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", diff --git a/tools/cache/reflector.go b/tools/cache/reflector.go index 2a0f7002..c43b7fc5 100644 --- a/tools/cache/reflector.go +++ b/tools/cache/reflector.go @@ -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))), + name: name, 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)) - } }