Skip to content

Commit

Permalink
Do not acquire lock for file.Sync() fsync call
Browse files Browse the repository at this point in the history
  • Loading branch information
arvin.chen committed Apr 2, 2024
1 parent ab53041 commit 5c6f209
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions klog.go
Original file line number Diff line number Diff line change
Expand Up @@ -1223,26 +1223,39 @@ func StartFlushDaemon(interval time.Duration) {
// lockAndFlushAll is like flushAll but locks l.mu first.
func (l *loggingT) lockAndFlushAll() {
l.mu.Lock()
// Write the klog buffer into the kernel buffer
l.flushAll()
l.mu.Unlock()
// Write the kernel buffer to disk
l.syncAll()
}

// flushAll flushes all the logs and attempts to "sync" their data to disk.
// FlushAll flushes all the logs
// l.mu is held.
func (l *loggingT) flushAll() {
// Flush from fatal down, in case there's trouble flushing.
for s := severity.FatalLog; s >= severity.InfoLog; s-- {
file := l.file[s]
if file != nil {
_ = file.Flush() // ignore error
_ = file.Sync() // ignore error
}
}
if logging.loggerOptions.flush != nil {
logging.loggerOptions.flush()
}
}

// Attempts to "sync" their data to disk.
func (l *loggingT) syncAll() {
// Sync from fatal down
for s := severity.FatalLog; s >= severity.InfoLog; s-- {
file := l.file[s]
if file != nil {
_ = file.Sync() // ignore error
}
}
}

// CopyStandardLogTo arranges for messages written to the Go "log" package's
// default logs to also appear in the Google logs for the named and lower
// severities. Subsequent changes to the standard log's default output location
Expand Down

0 comments on commit 5c6f209

Please sign in to comment.