mirror of https://github.com/perkeep/perkeep.git
Close FileReaders. Hunting an fd leak, but this isn't it,
since FileReader.Close is back to doing nothing. Change-Id: I65e906d75cf2825b9476ed5008ce042f44582113
This commit is contained in:
parent
4ce1263225
commit
898e522126
|
@ -120,6 +120,7 @@ func (ix *Index) populateFile(blobRef *blobref.BlobRef, ss *schema.Superset, bm
|
||||||
log.Printf("index: error indexing file, creating NewFileReader %s: %v", blobRef, err)
|
log.Printf("index: error indexing file, creating NewFileReader %s: %v", blobRef, err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
defer fr.Close()
|
||||||
mime, reader := magic.MimeTypeFromReader(fr)
|
mime, reader := magic.MimeTypeFromReader(fr)
|
||||||
|
|
||||||
sha1 := sha1.New()
|
sha1 := sha1.New()
|
||||||
|
|
|
@ -155,6 +155,8 @@ type FileReader struct {
|
||||||
// NewFileReader returns a new FileReader reading the contents of fileBlobRef,
|
// NewFileReader returns a new FileReader reading the contents of fileBlobRef,
|
||||||
// fetching blobs from fetcher. The fileBlobRef must be of a "bytes" or "file"
|
// fetching blobs from fetcher. The fileBlobRef must be of a "bytes" or "file"
|
||||||
// schema blob.
|
// schema blob.
|
||||||
|
//
|
||||||
|
// The caller should call Close on the FileReader when done reading.
|
||||||
func NewFileReader(fetcher blobref.SeekFetcher, fileBlobRef *blobref.BlobRef) (*FileReader, error) {
|
func NewFileReader(fetcher blobref.SeekFetcher, fileBlobRef *blobref.BlobRef) (*FileReader, error) {
|
||||||
// TODO(bradfitz): make this take a blobref.FetcherAt instead?
|
// TODO(bradfitz): make this take a blobref.FetcherAt instead?
|
||||||
// TODO(bradfitz): rename this into bytes reader? but for now it's still
|
// TODO(bradfitz): rename this into bytes reader? but for now it's still
|
||||||
|
|
|
@ -96,14 +96,16 @@ func (ih *ImageHandler) cacheScaled(tr io.Reader, name string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ih *ImageHandler) cached(br *blobref.BlobRef) (fr *schema.FileReader, err error) {
|
// cached returns a FileReader for the given file schema blobref.
|
||||||
|
// The FileReader should be closed when done reading.
|
||||||
|
func (ih *ImageHandler) cached(fileRef *blobref.BlobRef) (*schema.FileReader, error) {
|
||||||
fetchSeeker := blobref.SeekerFromStreamingFetcher(ih.Cache)
|
fetchSeeker := blobref.SeekerFromStreamingFetcher(ih.Cache)
|
||||||
fr, err = schema.NewFileReader(fetchSeeker, br)
|
fr, err := schema.NewFileReader(fetchSeeker, fileRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if imageDebug {
|
if imageDebug {
|
||||||
log.Printf("Image Cache: hit: %v\n", br)
|
log.Printf("Image Cache: hit: %v\n", fileRef)
|
||||||
}
|
}
|
||||||
return fr, nil
|
return fr, nil
|
||||||
}
|
}
|
||||||
|
@ -126,6 +128,7 @@ func (ih *ImageHandler) scaledCached(buf *bytes.Buffer, file *blobref.BlobRef) (
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return format, fmt.Errorf("No cache hit for %v: %v", br, err)
|
return format, fmt.Errorf("No cache hit for %v: %v", br, err)
|
||||||
}
|
}
|
||||||
|
defer fr.Close()
|
||||||
_, err = io.Copy(buf, fr)
|
_, err = io.Copy(buf, fr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return format, fmt.Errorf("error reading cached thumbnail %v: %v", name, err)
|
return format, fmt.Errorf("error reading cached thumbnail %v: %v", name, err)
|
||||||
|
@ -151,6 +154,7 @@ func (ih *ImageHandler) scaleImage(buf *bytes.Buffer, file *blobref.BlobRef) (fo
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return format, err
|
return format, err
|
||||||
}
|
}
|
||||||
|
defer fr.Close()
|
||||||
|
|
||||||
_, err = io.Copy(buf, fr)
|
_, err = io.Copy(buf, fr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue