Skip to content

Commit d1c85eb

Browse files
dkorunicmjuraga
authored andcommitted
BUG: Fix race between initSignalHandler() and cfgInitOnce()
Configuration gets on first Get() through cfgInitOnce.Do(), however if any signal gets received during initalization and before InitWithConfiguration() that initializes logging, log calls will race with ongoing log initialization. Patch moves cfg.initSignalHandler() below log.InitWithConfiguration().
1 parent 60a6beb commit d1c85eb

File tree

3 files changed

+3
-2
lines changed

3 files changed

+3
-2
lines changed

cmd/dataplaneapi/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ func startServer(cfg *configuration.Configuration) (reload configuration.AtomicB
176176
os.Exit(1)
177177
}
178178

179+
cfg.InitSignalHandler()
180+
179181
log.Infof("HAProxy Data Plane API %s %s%s", GitTag, GitCommit, GitDirty)
180182
log.Infof("Build from: %s", GitRepo)
181183
log.Infof("Build date: %s", BuildTime)

configuration/configuration.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,6 @@ var (
160160
func Get() *Configuration {
161161
cfgInitOnce.Do(func() {
162162
cfg = &Configuration{}
163-
cfg.initSignalHandler()
164163
cfg.Notify.BootstrapKeyChanged = NewChanNotify()
165164
cfg.Notify.ServerStarted = NewChanNotify()
166165
cfg.Notify.CertificateRefresh = NewChanNotify()

configuration/signals.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func (cn *ChanNotify) notify(numTry int) {
8080
}
8181
}
8282

83-
func (c *Configuration) initSignalHandler() {
83+
func (c *Configuration) InitSignalHandler() {
8484
osSignals := make(chan os.Signal, 1)
8585
signal.Notify(osSignals, syscall.SIGINT, syscall.SIGTERM)
8686

0 commit comments

Comments
 (0)