Skip to content

Commit

Permalink
Remove global locking in gossip logging
Browse files Browse the repository at this point in the history
In go-logging there is a concurrency related bug (it's not thread safe).
Before 5f9f6a9
was merged, we fixed our logger locally using this nasty global lock.

I'm removing this global lock now because it causes contention and isn't
necessary. Better 3 months late than never...

Change-Id: I1d1b1530f1ef47258e35297d708b8397be472856
Signed-off-by: Yacov Manevich <yacovm@il.ibm.com>
  • Loading branch information
yacovm committed Jan 5, 2017
1 parent 3bc4f52 commit 4ad8f9e
Showing 1 changed file with 2 additions and 100 deletions.
102 changes: 2 additions & 100 deletions gossip/util/logging.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import (
"sync"

"github.com/op/go-logging"

"google.golang.org/grpc/grpclog"
)

Expand All @@ -50,7 +49,7 @@ func init() {
}

type Logger struct {
logger logging.Logger
logging.Logger
module string
}

Expand Down Expand Up @@ -86,105 +85,8 @@ func GetLogger(module string, peerId string) *Logger {
}
logging.SetLevel(lvl, module)
lgr := &Logger{}
lgr.logger = *logging.MustGetLogger(module)
lgr.logger.ExtraCalldepth++
lgr.Logger = *logging.MustGetLogger(module)
lgr.module = module
loggersByModules[module] = lgr
return lgr
}

func (l *Logger) Fatal(args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Fatal(args)
}

func (l *Logger) Fatalf(format string, args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Fatalf(format, args)
}

func (l *Logger) Panic(args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Panic(args)
}

func (l *Logger) Panicf(format string, args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Panicf(format, args)
}

func (l *Logger) Critical(args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Critical(args)
}

func (l *Logger) Criticalf(format string, args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Criticalf(format, args)
}

func (l *Logger) Error(args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Error(args)
}

func (l *Logger) Errorf(format string, args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Errorf(format, args)
}

func (l *Logger) Warning(args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Warning(args)
}

func (l *Logger) Warningf(format string, args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Warningf(format, args)
}

func (l *Logger) Notice(args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Notice(args)
}

func (l *Logger) Noticef(format string, args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Noticef(format, args)
}

func (l *Logger) Info(args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Info(args)
}

func (l *Logger) Infof(format string, args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Infof(format, args)
}

func (l *Logger) Debug(args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Debug(args)
}

func (l *Logger) Debugf(format string, args ...interface{}) {
lock.Lock()
defer lock.Unlock()
l.logger.Debugf(format, args)
}

0 comments on commit 4ad8f9e

Please sign in to comment.