Merge pull request #42320 from anujva/fix_moby_ring_logger
#42316 Wait for `run` goroutine to exit before `Close`
This commit is contained in:
commit
08096e3ee6
1 changed files with 4 additions and 0 deletions
|
@ -19,6 +19,7 @@ type RingLogger struct {
|
|||
l Logger
|
||||
logInfo Info
|
||||
closeFlag int32
|
||||
wg sync.WaitGroup
|
||||
}
|
||||
|
||||
var _ SizedLogger = &RingLogger{}
|
||||
|
@ -42,6 +43,7 @@ func newRingLogger(driver Logger, logInfo Info, maxSize int64) *RingLogger {
|
|||
l: driver,
|
||||
logInfo: logInfo,
|
||||
}
|
||||
l.wg.Add(1)
|
||||
go l.run()
|
||||
return l
|
||||
}
|
||||
|
@ -93,6 +95,7 @@ func (r *RingLogger) setClosed() {
|
|||
func (r *RingLogger) Close() error {
|
||||
r.setClosed()
|
||||
r.buffer.Close()
|
||||
r.wg.Wait()
|
||||
// empty out the queue
|
||||
var logErr bool
|
||||
for _, msg := range r.buffer.Drain() {
|
||||
|
@ -118,6 +121,7 @@ func (r *RingLogger) Close() error {
|
|||
// logger.
|
||||
// This is run in a goroutine when the RingLogger is created
|
||||
func (r *RingLogger) run() {
|
||||
defer r.wg.Done()
|
||||
for {
|
||||
if r.closed() {
|
||||
return
|
||||
|
|
Loading…
Add table
Reference in a new issue