Merge pull request #19203 from wojtek-t/logging_for18928

Extend logging for debugging #18794 purposes
pull/6/head
Wojciech Tyczynski 2015-12-30 21:00:26 +01:00
commit 5a3dbedf3e
3 changed files with 25 additions and 0 deletions

View File

@ -414,6 +414,11 @@ func (c *Cacher) LastSyncResourceVersion() (uint64, error) {
return strconv.ParseUint(resourceVersion, 10, 64) return strconv.ParseUint(resourceVersion, 10, 64)
} }
// For debugging #18794 only.
func (c *Cacher) GetAllCachedEvents() ([]watchCacheEvent, error) {
return c.watchCache.getAllCachedEvents()
}
// cacherListerWatcher opaques storage.Interface to expose cache.ListerWatcher. // cacherListerWatcher opaques storage.Interface to expose cache.ListerWatcher.
type cacherListerWatcher struct { type cacherListerWatcher struct {
storage Interface storage Interface

View File

@ -37,6 +37,7 @@ import (
"k8s.io/kubernetes/pkg/util/sets" "k8s.io/kubernetes/pkg/util/sets"
"k8s.io/kubernetes/pkg/watch" "k8s.io/kubernetes/pkg/watch"
"github.com/golang/glog"
"golang.org/x/net/context" "golang.org/x/net/context"
) )
@ -299,6 +300,15 @@ func TestFiltering(t *testing.T) {
} }
watcher, err := cacher.Watch(context.TODO(), "pods/ns/foo", fooCreated.ResourceVersion, filter) watcher, err := cacher.Watch(context.TODO(), "pods/ns/foo", fooCreated.ResourceVersion, filter)
if err != nil { if err != nil {
// For debugging #18794 only.
events, err := cacher.GetAllCachedEvents()
if err != nil {
glog.Error("Unexpected error: %v", err)
} else {
for _, event := range events {
glog.Errorf("cached event: %s %#v", event.Type, event.Object)
}
}
t.Fatalf("Unexpected error: %v", err) t.Fatalf("Unexpected error: %v", err)
} }
defer watcher.Stop() defer watcher.Stop()

View File

@ -298,3 +298,13 @@ func (w *watchCache) GetAllEventsSince(resourceVersion uint64) ([]watchCacheEven
defer w.RUnlock() defer w.RUnlock()
return w.GetAllEventsSinceThreadUnsafe(resourceVersion) return w.GetAllEventsSinceThreadUnsafe(resourceVersion)
} }
// For debugging #18794 only.
func (w *watchCache) getAllCachedEvents() ([]watchCacheEvent, error) {
w.RLock()
defer w.RUnlock()
if w.startIndex == w.endIndex {
return make([]watchCacheEvent, 0), nil
}
return w.GetAllEventsSinceThreadUnsafe(w.cache[w.startIndex%w.capacity].resourceVersion)
}