Skip to content

Commit fe692c8

Browse files
committed
fix datarace
1 parent 81d89ee commit fe692c8

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

Diff for: middleware/logger/default_logger.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919

2020
// LoggerData is a struct to define some variables to use in custom logger function.
2121
type LoggerData struct {
22+
mu sync.Mutex
2223
Pid string
2324
ErrPaddingStr string
2425
ChainErr error
@@ -28,7 +29,6 @@ type LoggerData struct {
2829
}
2930

3031
var tmpl *fasttemplate.Template
31-
var mu sync.Mutex
3232

3333
// default logger for fiber
3434
func defaultLogger(c fiber.Ctx, data *LoggerData, cfg Config) error {
@@ -184,7 +184,7 @@ func defaultLogger(c fiber.Ctx, data *LoggerData, cfg Config) error {
184184
if err != nil {
185185
_, _ = buf.WriteString(err.Error())
186186
}
187-
mu.Lock()
187+
data.mu.Lock()
188188
// Write buffer to output
189189
if _, err := cfg.Output.Write(buf.Bytes()); err != nil {
190190
// Write error to output
@@ -193,7 +193,7 @@ func defaultLogger(c fiber.Ctx, data *LoggerData, cfg Config) error {
193193
fmt.Fprintf(os.Stderr, "Failed to write to log, %v\n", err)
194194
}
195195
}
196-
mu.Unlock()
196+
data.mu.Unlock()
197197
// Put buffer back to pool
198198
bytebufferpool.Put(buf)
199199

Diff for: middleware/logger/logger.go

+2
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,11 @@ func New(config ...Config) fiber.Handler {
152152
}
153153

154154
// Logger instance & update some logger data fields
155+
data.mu.Lock()
155156
data.ChainErr = chainErr
156157
data.Start = start
157158
data.Stop = stop
159+
data.mu.Unlock()
158160

159161
if err = cfg.LoggerFunc(c, data, cfg); err != nil {
160162
return err

0 commit comments

Comments
 (0)