Bladeren bron

Fixing logs file handle leak.
Docker logs was only closing the logger when the HTTP response writer received a close notification, however in non-follow mode the writer never receives a close. This means that the daemon would leak the file handle to the log, preventing the container from being removed on Windows (file in use error). This change explicitly closes the log when the end of stream is hit.

Signed-off-by: Stefan J. Wernli <swernli@microsoft.com>

Stefan J. Wernli 9 jaren geleden
bovenliggende
commit
4570cfd3ba
1 gewijzigde bestanden met toevoegingen van 1 en 0 verwijderingen
  1. 1 0
      daemon/logs.go

+ 1 - 0
daemon/logs.go

@@ -84,6 +84,7 @@ func (daemon *Daemon) ContainerLogs(containerName string, config *backend.Contai
 		case msg, ok := <-logs.Msg:
 		case msg, ok := <-logs.Msg:
 			if !ok {
 			if !ok {
 				logrus.Debugf("logs: end stream")
 				logrus.Debugf("logs: end stream")
+				logs.Close()
 				return nil
 				return nil
 			}
 			}
 			logLine := msg.Line
 			logLine := msg.Line