Merge pull request #49919 from liggitt/deconflict-reflector

Automatic merge from submit-queue (batch tested with PRs 49898, 49897, 49919, 48860, 49491)

Fix duplicate metrics collector registration attempted error

Fixes "duplicate metrics collector registration attempted" error seen in https://k8s-gubernator.appspot.com/build/kubernetes-jenkins/pr-logs/pull/batch/pull-kubernetes-unit/43931/

Kubernetes-commit: f5b4f9a07dc27ac7ce6340b32a8660074e10daec
This commit is contained in:
Kubernetes Publisher 2017-08-01 17:57:16 -07:00
commit ccbff9fa83
2 changed files with 56 additions and 50 deletions

98
Godeps/Godeps.json generated
View File

@ -436,199 +436,199 @@
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/equality",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/errors",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/meta",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/api/resource",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apimachinery/registered",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1alpha1",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/conversion/unstructured",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/fields",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/labels",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/openapi",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/schema",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/selection",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/types",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/cache",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/clock",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/diff",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/errors",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/framer",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/httpstream/spdy",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/intstr",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/json",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/net",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/remotecommand",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/runtime",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/sets",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/validation/field",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/wait",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/util/yaml",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/version",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/pkg/watch",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/netutil",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
},
{
"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
"Rev": "dc1f89aff9a7509782bde3b68824c8043a3e58cc"
"Rev": "806e2e07933f50f9edcf738b14a53ae8d2011ab3"
}
]
}

View File

@ -30,6 +30,7 @@ import (
"strconv"
"strings"
"sync"
"sync/atomic"
"syscall"
"time"
@ -98,12 +99,17 @@ func NewReflector(lw ListerWatcher, expectedType interface{}, store Store, resyn
return NewNamedReflector(getDefaultReflectorName(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(makeValidPromethusMetricName(fmt.Sprintf("reflector_"+name+"_%07d", rand.Intn(1000000)))),
metrics: newReflectorMetrics(makeValidPromethusMetricName(fmt.Sprintf("reflector_"+name+"_%d", reflectorSuffix))),
listerWatcher: lw,
store: store,
expectedType: reflect.TypeOf(expectedType),