From c4fb2d89b144a7e4e5fe0db4204eab4b7668dfcf Mon Sep 17 00:00:00 2001 From: kukugi Date: Tue, 14 Jan 2020 18:10:59 +0900 Subject: [PATCH] log: close log file before calling truncate on windows If you truncate an open file in Windows, access is denied. how about close the file before truncation? --- log/handler.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/log/handler.go b/log/handler.go index 2f01b5dc6f..d7d900fdb4 100644 --- a/log/handler.go +++ b/log/handler.go @@ -125,7 +125,14 @@ func prepFile(path string) (*countingWriter, error) { return nil, err } ns := fi.Size() - cut - if err = f.Truncate(ns); err != nil { + if err := f.Close(); err != nil { + return nil, err + } + if err = os.Truncate(path, ns); err != nil { + return nil, err + } + f, err = os.OpenFile(path, os.O_RDWR|os.O_APPEND, 0600) + if err != nil { return nil, err } return &countingWriter{w: f, count: uint(ns)}, nil