From b7a7130f16bca663d8506ec101e6da12bb4b4192 Mon Sep 17 00:00:00 2001 From: Michal Fojtik Date: Mon, 13 Aug 2018 12:37:50 +0200 Subject: [PATCH] UPSTREAM: : increase loglevel for health check --- .../apiserver/pkg/server/healthz/healthz.go | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/vendor/k8s.io/kubernetes/staging/src/k8s.io/apiserver/pkg/server/healthz/healthz.go b/vendor/k8s.io/kubernetes/staging/src/k8s.io/apiserver/pkg/server/healthz/healthz.go index 408ae6a3df27..8260be97473a 100644 --- a/vendor/k8s.io/kubernetes/staging/src/k8s.io/apiserver/pkg/server/healthz/healthz.go +++ b/vendor/k8s.io/kubernetes/staging/src/k8s.io/apiserver/pkg/server/healthz/healthz.go @@ -22,9 +22,11 @@ import ( "net/http" "strings" "sync" + "sync/atomic" "time" "github.com/golang/glog" + "k8s.io/apimachinery/pkg/util/wait" ) // HealthzChecker is a named healthz checker. @@ -58,26 +60,31 @@ func (ping) Check(_ *http.Request) error { } // LogHealthz returns true if logging is not blocked -var LogHealthz HealthzChecker = log{} +var LogHealthz HealthzChecker = &log{} -type log struct{} +type log struct { + startOnce sync.Once + lastVerified atomic.Value +} -func (log) Name() string { +func (*log) Name() string { return "log" } -func (log) Check(_ *http.Request) error { - done := make(chan struct{}) - go func() { - glog.Info("/healthz/log check") - close(done) - }() - select { - case <-done: +func (l *log) Check(_ *http.Request) error { + l.startOnce.Do(func() { + l.lastVerified.Store(time.Now()) + go wait.Forever(func() { + glog.Flush() + l.lastVerified.Store(time.Now()) + }, time.Minute) + }) + + lastVerified := l.lastVerified.Load().(time.Time) + if time.Since(lastVerified) < (2 * time.Minute) { return nil - case <-time.After(time.Second): - return fmt.Errorf("logging blocked") } + return fmt.Errorf("logging blocked") } // NamedCheck returns a healthz checker for the given name and function.