@@ -106,12 +106,12 @@ func (r *RootCmd) workspaceAgent() *clibase.Cmd {
106
106
// Spawn a reaper so that we don't accumulate a ton
107
107
// of zombie processes.
108
108
if reaper .IsInitProcess () && ! noReap && isLinux {
109
- logWriter := & lumberjack.Logger {
109
+ logWriter := & lumberjackWriteCloseFixer { w : & lumberjack.Logger {
110
110
Filename : filepath .Join (logDir , "coder-agent-init.log" ),
111
111
MaxSize : 5 , // MB
112
112
// Without this, rotated logs will never be deleted.
113
113
MaxBackups : 1 ,
114
- }
114
+ }}
115
115
defer logWriter .Close ()
116
116
117
117
sinks = append (sinks , sloghuman .Sink (logWriter ))
@@ -149,14 +149,12 @@ func (r *RootCmd) workspaceAgent() *clibase.Cmd {
149
149
// reaper.
150
150
go DumpHandler (ctx )
151
151
152
- ljLogger := & lumberjack.Logger {
152
+ logWriter := & lumberjackWriteCloseFixer { w : & lumberjack.Logger {
153
153
Filename : filepath .Join (logDir , "coder-agent.log" ),
154
154
MaxSize : 5 , // MB
155
155
// Without this, rotated logs will never be deleted.
156
156
MaxBackups : 1 ,
157
- }
158
- defer ljLogger .Close ()
159
- logWriter := & closeWriter {w : ljLogger }
157
+ }}
160
158
defer logWriter .Close ()
161
159
162
160
sinks = append (sinks , sloghuman .Sink (logWriter ))
@@ -403,24 +401,24 @@ func ServeHandler(ctx context.Context, logger slog.Logger, handler http.Handler,
403
401
}
404
402
}
405
403
406
- // closeWriter is a wrapper around an io.WriteCloser that prevents
407
- // writes after Close. This is necessary because lumberjack will
408
- // re-open the file on write .
409
- type closeWriter struct {
404
+ // lumberjackWriteCloseFixer is a wrapper around an io.WriteCloser that
405
+ // prevents writes after Close. This is necessary because lumberjack
406
+ // re-opens the file on Write .
407
+ type lumberjackWriteCloseFixer struct {
410
408
w io.WriteCloser
411
409
mu sync.Mutex // Protects following.
412
410
closed bool
413
411
}
414
412
415
- func (c * closeWriter ) Close () error {
413
+ func (c * lumberjackWriteCloseFixer ) Close () error {
416
414
c .mu .Lock ()
417
415
defer c .mu .Unlock ()
418
416
419
417
c .closed = true
420
418
return c .w .Close ()
421
419
}
422
420
423
- func (c * closeWriter ) Write (p []byte ) (int , error ) {
421
+ func (c * lumberjackWriteCloseFixer ) Write (p []byte ) (int , error ) {
424
422
c .mu .Lock ()
425
423
defer c .mu .Unlock ()
426
424
0 commit comments