Merge pull request #73308 from krzysied/reflector_trace2

Adding trace to reflector initialization
This commit is contained in:
Kubernetes Prow Robot 2019-01-25 08:53:23 -08:00 committed by GitHub
commit f5f5d9a54a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 69 additions and 36 deletions

View File

@ -622,6 +622,10 @@
"ImportPath": "k8s.io/utils/integer", "ImportPath": "k8s.io/utils/integer",
"Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7" "Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7"
}, },
{
"ImportPath": "k8s.io/utils/trace",
"Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7"
},
{ {
"ImportPath": "sigs.k8s.io/yaml", "ImportPath": "sigs.k8s.io/yaml",
"Rev": "fd68e9863619f6ec2fdd8625fe1f02e7c877e480" "Rev": "fd68e9863619f6ec2fdd8625fe1f02e7c877e480"

View File

@ -84,6 +84,7 @@ go_library(
"//staging/src/k8s.io/client-go/util/retry:go_default_library", "//staging/src/k8s.io/client-go/util/retry:go_default_library",
"//vendor/k8s.io/klog:go_default_library", "//vendor/k8s.io/klog:go_default_library",
"//vendor/k8s.io/utils/buffer:go_default_library", "//vendor/k8s.io/utils/buffer:go_default_library",
"//vendor/k8s.io/utils/trace:go_default_library",
], ],
) )

View File

@ -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{})

View File

@ -958,6 +958,10 @@
"ImportPath": "k8s.io/utils/integer", "ImportPath": "k8s.io/utils/integer",
"Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7" "Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7"
}, },
{
"ImportPath": "k8s.io/utils/trace",
"Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7"
},
{ {
"ImportPath": "sigs.k8s.io/yaml", "ImportPath": "sigs.k8s.io/yaml",
"Rev": "fd68e9863619f6ec2fdd8625fe1f02e7c877e480" "Rev": "fd68e9863619f6ec2fdd8625fe1f02e7c877e480"

View File

@ -554,6 +554,10 @@
"ImportPath": "k8s.io/utils/integer", "ImportPath": "k8s.io/utils/integer",
"Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7" "Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7"
}, },
{
"ImportPath": "k8s.io/utils/trace",
"Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7"
},
{ {
"ImportPath": "sigs.k8s.io/yaml", "ImportPath": "sigs.k8s.io/yaml",
"Rev": "fd68e9863619f6ec2fdd8625fe1f02e7c877e480" "Rev": "fd68e9863619f6ec2fdd8625fe1f02e7c877e480"

View File

@ -554,6 +554,10 @@
"ImportPath": "k8s.io/utils/integer", "ImportPath": "k8s.io/utils/integer",
"Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7" "Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7"
}, },
{
"ImportPath": "k8s.io/utils/trace",
"Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7"
},
{ {
"ImportPath": "sigs.k8s.io/yaml", "ImportPath": "sigs.k8s.io/yaml",
"Rev": "fd68e9863619f6ec2fdd8625fe1f02e7c877e480" "Rev": "fd68e9863619f6ec2fdd8625fe1f02e7c877e480"

View File

@ -1162,6 +1162,10 @@
"ImportPath": "k8s.io/utils/integer", "ImportPath": "k8s.io/utils/integer",
"Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7" "Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7"
}, },
{
"ImportPath": "k8s.io/utils/trace",
"Rev": "8a87304934321b4b0ad72a7cb3cbc715d67d38c7"
},
{ {
"ImportPath": "sigs.k8s.io/yaml", "ImportPath": "sigs.k8s.io/yaml",
"Rev": "fd68e9863619f6ec2fdd8625fe1f02e7c877e480" "Rev": "fd68e9863619f6ec2fdd8625fe1f02e7c877e480"