Fixing race conditions in the code base (#5966)

* Adding initial race detector

* Remove setting of config twice

* Fixing config file watch and config reload on license save

* Fixing config file watch and config reload on license save

* Fixing build error

* Fixing locking issue

* Fixing makefile

* Fixing race in config

* Fixing race in status unit test

* Adding EE race tests

* Fixing race in cluster info

* Removing code that's isn't needed

* Fixing some more races

* Fixing govet issue
Этот коммит содержится в:
Corey Hulen
2017-04-04 11:42:07 -07:00
коммит произвёл Harrison Healey
родитель 32460bf63b
Коммит 6bf080393d
26 изменённых файлов: 1438 добавлений и 207 удалений

2
vendor/github.com/alecthomas/log4go/filelog.go сгенерированный поставляемый
Просмотреть файл

@@ -47,7 +47,6 @@ func (w *FileLogWriter) LogWrite(rec *LogRecord) {
func (w *FileLogWriter) Close() {
close(w.rec)
w.file.Sync()
}
// NewFileLogWriter creates a new LogWriter which writes to the given file and
@@ -79,6 +78,7 @@ func NewFileLogWriter(fname string, rotate bool) *FileLogWriter {
defer func() {
if w.file != nil {
fmt.Fprint(w.file, FormatLogRecord(w.trailer, &LogRecord{Created: time.Now()}))
w.file.Sync()
w.file.Close()
}
}()

4
vendor/github.com/alecthomas/log4go/pattlog.go сгенерированный поставляемый
Просмотреть файл

@@ -7,6 +7,7 @@ import (
"fmt"
"io"
"strings"
"sync"
)
const (
@@ -22,6 +23,7 @@ type formatCacheType struct {
}
var formatCache = &formatCacheType{}
var mutex sync.Mutex
// Known format codes:
// %T - Time (15:04:05 MST)
@@ -44,6 +46,7 @@ func FormatLogRecord(format string, rec *LogRecord) string {
out := bytes.NewBuffer(make([]byte, 0, 64))
secs := rec.Created.UnixNano() / 1e9
mutex.Lock()
cache := *formatCache
if cache.LastUpdateSeconds != secs {
month, day, year := rec.Created.Month(), rec.Created.Day(), rec.Created.Year()
@@ -59,6 +62,7 @@ func FormatLogRecord(format string, rec *LogRecord) string {
cache = *updated
formatCache = updated
}
mutex.Unlock()
// Split the string into pieces by % signs
pieces := bytes.Split([]byte(format), []byte{'%'})