mirror of
https://github.com/kubernetes/client-go.git
synced 2025-06-23 05:37:13 +00:00
adding trace to reflector initialization
Kubernetes-commit: 4e4d380b32105c3ff7641661120da876bca060de
This commit is contained in:
parent
cce357d054
commit
57d4daeaf4
14
tools/cache/reflector.go
vendored
14
tools/cache/reflector.go
vendored
@ -41,6 +41,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
"k8s.io/klog"
|
"k8s.io/klog"
|
||||||
|
"k8s.io/utils/trace"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Reflector watches a specified resource and causes all changes to be reflected in the given store.
|
// Reflector watches a specified resource and causes all changes to be reflected in the given store.
|
||||||
@ -176,6 +177,9 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error {
|
|||||||
r.metrics.numberOfLists.Inc()
|
r.metrics.numberOfLists.Inc()
|
||||||
start := r.clock.Now()
|
start := r.clock.Now()
|
||||||
|
|
||||||
|
if err := func() error {
|
||||||
|
initTrace := trace.New("Reflector " + r.name + " ListAndWatch")
|
||||||
|
defer initTrace.LogIfLong(10 * time.Second)
|
||||||
var list runtime.Object
|
var list runtime.Object
|
||||||
var err error
|
var err error
|
||||||
listCh := make(chan struct{}, 1)
|
listCh := make(chan struct{}, 1)
|
||||||
@ -199,22 +203,30 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s: Failed to list %v: %v", r.name, r.expectedType, err)
|
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())
|
r.metrics.listDuration.Observe(time.Since(start).Seconds())
|
||||||
listMetaInterface, err := meta.ListAccessor(list)
|
listMetaInterface, err := meta.ListAccessor(list)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s: Unable to understand list result %#v: %v", r.name, list, err)
|
return fmt.Errorf("%s: Unable to understand list result %#v: %v", r.name, list, err)
|
||||||
}
|
}
|
||||||
resourceVersion = listMetaInterface.GetResourceVersion()
|
resourceVersion = listMetaInterface.GetResourceVersion()
|
||||||
|
initTrace.Step("Resource version extracted")
|
||||||
items, err := meta.ExtractList(list)
|
items, err := meta.ExtractList(list)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s: Unable to understand list result %#v (%v)", r.name, list, err)
|
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)))
|
r.metrics.numberOfItemsInList.Observe(float64(len(items)))
|
||||||
if err := r.syncWith(items, resourceVersion); err != nil {
|
if err := r.syncWith(items, resourceVersion); err != nil {
|
||||||
return fmt.Errorf("%s: Unable to sync list result: %v", r.name, err)
|
return fmt.Errorf("%s: Unable to sync list result: %v", r.name, err)
|
||||||
}
|
}
|
||||||
|
initTrace.Step("SyncWith done")
|
||||||
r.setLastSyncResourceVersion(resourceVersion)
|
r.setLastSyncResourceVersion(resourceVersion)
|
||||||
|
initTrace.Step("Resource version updated")
|
||||||
|
return nil
|
||||||
|
}(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
resyncerrc := make(chan error, 1)
|
resyncerrc := make(chan error, 1)
|
||||||
cancelCh := make(chan struct{})
|
cancelCh := make(chan struct{})
|
||||||
|
Loading…
Reference in New Issue
Block a user