logtail: allow multiple calls to Shutdown

Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
pull/7368/head
David Crawshaw 1 year ago
parent daa2f1c66e
commit 46467e39c2

@ -198,8 +198,9 @@ type Logger struct {
procSequence uint64
flushTimer *time.Timer // used when flushDelay is >0
shutdownStart chan struct{} // closed when shutdown begins
shutdownDone chan struct{} // closed when shutdown complete
shutdownStartMu sync.Mutex // guards the closing of shutdownStart
shutdownStart chan struct{} // closed when shutdown begins
shutdownDone chan struct{} // closed when shutdown complete
}
// SetVerbosityLevel controls the verbosity level that should be
@ -240,7 +241,16 @@ func (l *Logger) Shutdown(ctx context.Context) error {
close(done)
}()
l.shutdownStartMu.Lock()
select {
case <-l.shutdownStart:
l.shutdownStartMu.Unlock()
return nil
default:
}
close(l.shutdownStart)
l.shutdownStartMu.Unlock()
io.WriteString(l, "logger closing down\n")
<-done

Loading…
Cancel
Save