Skip to content

Commit 6871020

Browse files
author
Rahul M Chheda
committed
iRemoved mutex thread locking and unlocking from logging Format registry
Signed-off-by: Rahul M Chheda <[email protected]>
1 parent 7dbc140 commit 6871020

File tree

2 files changed

+24
-16
lines changed

2 files changed

+24
-16
lines changed

staging/src/k8s.io/component-base/logs/options.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,15 @@ func (o *Options) AddFlags(fs *pflag.FlagSet) {
6363
unsupportedFlags := fmt.Sprintf("--%s", strings.Join(unsupportedLoggingFlags(), ", --"))
6464
formats := fmt.Sprintf(`"%s"`, strings.Join(logRegistry.List(), `", "`))
6565
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))
66+
67+
// No new log formats should be added after generation is of flag options
68+
logRegistry.Freeze()
6669
}
6770

6871
// Apply set klog logger from LogFormat type
6972
func (o *Options) Apply() {
7073
// if log format not exists, use nil loggr
7174
loggr, _ := o.Get()
72-
7375
klog.SetLogger(loggr)
7476
}
7577

staging/src/k8s.io/component-base/logs/registry.go

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package logs
1818

1919
import (
2020
"fmt"
21-
"sync"
2221

2322
"github.com/go-logr/logr"
2423
json "k8s.io/component-base/logs/json"
@@ -33,21 +32,22 @@ var logRegistry = NewLogFormatRegistry()
3332
// LogFormatRegistry store klog format registry
3433
type LogFormatRegistry struct {
3534
registry map[string]logr.Logger
36-
mu sync.Mutex
35+
frozen bool
3736
}
3837

3938
// NewLogFormatRegistry return new init LogFormatRegistry struct
4039
func NewLogFormatRegistry() *LogFormatRegistry {
4140
return &LogFormatRegistry{
4241
registry: make(map[string]logr.Logger),
43-
mu: sync.Mutex{},
42+
frozen: false,
4443
}
4544
}
4645

4746
// Register new log format registry to global logRegistry
4847
func (lfr *LogFormatRegistry) Register(name string, logger logr.Logger) error {
49-
lfr.mu.Lock()
50-
defer lfr.mu.Unlock()
48+
if lfr.frozen {
49+
return fmt.Errorf("log format is frozen, unable to register log format")
50+
}
5151
if _, ok := lfr.registry[name]; ok {
5252
return fmt.Errorf("log format: %s already exists", name)
5353
}
@@ -57,8 +57,6 @@ func (lfr *LogFormatRegistry) Register(name string, logger logr.Logger) error {
5757

5858
// Get specified log format logger
5959
func (lfr *LogFormatRegistry) Get(name string) (logr.Logger, error) {
60-
lfr.mu.Lock()
61-
defer lfr.mu.Unlock()
6260
re, ok := lfr.registry[name]
6361
if !ok {
6462
return nil, fmt.Errorf("log format: %s does not exists", name)
@@ -67,30 +65,38 @@ func (lfr *LogFormatRegistry) Get(name string) (logr.Logger, error) {
6765
}
6866

6967
// Set specified log format logger
70-
func (lfr *LogFormatRegistry) Set(name string, logger logr.Logger) {
71-
lfr.mu.Lock()
72-
defer lfr.mu.Unlock()
68+
func (lfr *LogFormatRegistry) Set(name string, logger logr.Logger) error {
69+
if lfr.frozen {
70+
return fmt.Errorf("log format is frozen, unable to set log format")
71+
}
72+
7373
lfr.registry[name] = logger
74+
return nil
7475
}
7576

7677
// Delete specified log format logger
77-
func (lfr *LogFormatRegistry) Delete(name string) {
78-
lfr.mu.Lock()
79-
defer lfr.mu.Unlock()
78+
func (lfr *LogFormatRegistry) Delete(name string) error {
79+
if lfr.frozen {
80+
return fmt.Errorf("log format is frozen, unable to delete log format")
81+
}
82+
8083
delete(lfr.registry, name)
84+
return nil
8185
}
8286

8387
// List names of registered log formats
8488
func (lfr *LogFormatRegistry) List() []string {
85-
lfr.mu.Lock()
86-
defer lfr.mu.Unlock()
8789
formats := make([]string, 0, len(lfr.registry))
8890
for f := range lfr.registry {
8991
formats = append(formats, f)
9092
}
9193
return formats
9294
}
9395

96+
// Freeze freezes the log format registry
97+
func (lfr *LogFormatRegistry) Freeze() {
98+
lfr.frozen = true
99+
}
94100
func init() {
95101
// Text format is default klog format
96102
logRegistry.Register(defaultLogFormat, nil)

0 commit comments

Comments
 (0)