Explorar el Código

fd leak and error handling

Signed-off-by: Deng Guangxing <dengguangxing@huawei.com>
Deng Guangxing hace 8 años
padre
commit
0042f992d8
Se han modificado 2 ficheros con 7 adiciones y 2 borrados
  1. 6 2
      daemon/logger/jsonfilelog/multireader/multireader.go
  2. 1 0
      layer/filestore.go

+ 6 - 2
daemon/logger/jsonfilelog/multireader/multireader.go

@@ -46,7 +46,9 @@ func (r *multiReadSeeker) Seek(offset int64, whence int) (int64, error) {
 			rdrOffset := offset - tmpOffset
 			idx := i
 
-			rdr.Seek(rdrOffset, os.SEEK_SET)
+			if _, err := rdr.Seek(rdrOffset, os.SEEK_SET); err != nil {
+				return -1, err
+			}
 			// make sure all following readers are at 0
 			for _, rdr := range r.readers[i+1:] {
 				rdr.Seek(0, os.SEEK_SET)
@@ -67,7 +69,9 @@ func (r *multiReadSeeker) Seek(offset int64, whence int) (int64, error) {
 			}
 			tmpOffset += s
 		}
-		r.Seek(tmpOffset+offset, os.SEEK_SET)
+		if _, err := r.Seek(tmpOffset+offset, os.SEEK_SET); err != nil {
+			return -1, err
+		}
 		return tmpOffset + offset, nil
 	case os.SEEK_CUR:
 		if r.pos == nil {

+ 1 - 0
layer/filestore.go

@@ -226,6 +226,7 @@ func (fms *fileMetadataStore) TarSplitReader(layer ChainID) (io.ReadCloser, erro
 	}
 	f, err := gzip.NewReader(fz)
 	if err != nil {
+		fz.Close()
 		return nil, err
 	}