소스 검색

fd leak and error handling

Signed-off-by: Deng Guangxing <dengguangxing@huawei.com>
Deng Guangxing 8 년 전
부모
커밋
0042f992d8
2개의 변경된 파일7개의 추가작업 그리고 2개의 파일을 삭제
  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
 	}