From 68710208924f3378fe1c8be5dd118b1e037f983e Mon Sep 17 00:00:00 2001 From: Rahul M Chheda Date: Thu, 25 Jun 2020 15:03:02 +0530 Subject: [PATCH] iRemoved mutex thread locking and unlocking from logging Format registry Signed-off-by: Rahul M Chheda --- .../src/k8s.io/component-base/logs/options.go | 4 ++- .../k8s.io/component-base/logs/registry.go | 36 +++++++++++-------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/staging/src/k8s.io/component-base/logs/options.go b/staging/src/k8s.io/component-base/logs/options.go index 567bbb0b5f8..fedd67fab27 100644 --- a/staging/src/k8s.io/component-base/logs/options.go +++ b/staging/src/k8s.io/component-base/logs/options.go @@ -63,13 +63,15 @@ func (o *Options) AddFlags(fs *pflag.FlagSet) { unsupportedFlags := fmt.Sprintf("--%s", strings.Join(unsupportedLoggingFlags(), ", --")) formats := fmt.Sprintf(`"%s"`, strings.Join(logRegistry.List(), `", "`)) fs.StringVar(&o.LogFormat, logFormatFlagName, defaultLogFormat, fmt.Sprintf("Sets the log format. Permitted formats: %s.\nNon-default formats don't honor these flags: %s.\nNon-default choices are currently alpha and subject to change without warning.", formats, unsupportedFlags)) + + // No new log formats should be added after generation is of flag options + logRegistry.Freeze() } // Apply set klog logger from LogFormat type func (o *Options) Apply() { // if log format not exists, use nil loggr loggr, _ := o.Get() - klog.SetLogger(loggr) } diff --git a/staging/src/k8s.io/component-base/logs/registry.go b/staging/src/k8s.io/component-base/logs/registry.go index 82154af8023..515bba28011 100644 --- a/staging/src/k8s.io/component-base/logs/registry.go +++ b/staging/src/k8s.io/component-base/logs/registry.go @@ -18,7 +18,6 @@ package logs import ( "fmt" - "sync" "github.com/go-logr/logr" json "k8s.io/component-base/logs/json" @@ -33,21 +32,22 @@ var logRegistry = NewLogFormatRegistry() // LogFormatRegistry store klog format registry type LogFormatRegistry struct { registry map[string]logr.Logger - mu sync.Mutex + frozen bool } // NewLogFormatRegistry return new init LogFormatRegistry struct func NewLogFormatRegistry() *LogFormatRegistry { return &LogFormatRegistry{ registry: make(map[string]logr.Logger), - mu: sync.Mutex{}, + frozen: false, } } // Register new log format registry to global logRegistry func (lfr *LogFormatRegistry) Register(name string, logger logr.Logger) error { - lfr.mu.Lock() - defer lfr.mu.Unlock() + if lfr.frozen { + return fmt.Errorf("log format is frozen, unable to register log format") + } if _, ok := lfr.registry[name]; ok { return fmt.Errorf("log format: %s already exists", name) } @@ -57,8 +57,6 @@ func (lfr *LogFormatRegistry) Register(name string, logger logr.Logger) error { // Get specified log format logger func (lfr *LogFormatRegistry) Get(name string) (logr.Logger, error) { - lfr.mu.Lock() - defer lfr.mu.Unlock() re, ok := lfr.registry[name] if !ok { return nil, fmt.Errorf("log format: %s does not exists", name) @@ -67,23 +65,27 @@ func (lfr *LogFormatRegistry) Get(name string) (logr.Logger, error) { } // Set specified log format logger -func (lfr *LogFormatRegistry) Set(name string, logger logr.Logger) { - lfr.mu.Lock() - defer lfr.mu.Unlock() +func (lfr *LogFormatRegistry) Set(name string, logger logr.Logger) error { + if lfr.frozen { + return fmt.Errorf("log format is frozen, unable to set log format") + } + lfr.registry[name] = logger + return nil } // Delete specified log format logger -func (lfr *LogFormatRegistry) Delete(name string) { - lfr.mu.Lock() - defer lfr.mu.Unlock() +func (lfr *LogFormatRegistry) Delete(name string) error { + if lfr.frozen { + return fmt.Errorf("log format is frozen, unable to delete log format") + } + delete(lfr.registry, name) + return nil } // List names of registered log formats func (lfr *LogFormatRegistry) List() []string { - lfr.mu.Lock() - defer lfr.mu.Unlock() formats := make([]string, 0, len(lfr.registry)) for f := range lfr.registry { formats = append(formats, f) @@ -91,6 +93,10 @@ func (lfr *LogFormatRegistry) List() []string { return formats } +// Freeze freezes the log format registry +func (lfr *LogFormatRegistry) Freeze() { + lfr.frozen = true +} func init() { // Text format is default klog format logRegistry.Register(defaultLogFormat, nil)