X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c6ec580a9c79d1d21cffa6454d871538ba7c14f0..b7b9ea44ada30b1251fb10c872cb1da1d7c29bd0:/sdk/go/keepclient/collectionreader.go diff --git a/sdk/go/keepclient/collectionreader.go b/sdk/go/keepclient/collectionreader.go index b532a1642b..33bb58710e 100644 --- a/sdk/go/keepclient/collectionreader.go +++ b/sdk/go/keepclient/collectionreader.go @@ -40,6 +40,10 @@ func (kc *KeepClient) CollectionFileReader(collection map[string]interface{}, fi return nil, ErrNoManifest } m := manifest.Manifest{Text: mText} + return kc.ManifestFileReader(m, filename) +} + +func (kc *KeepClient) ManifestFileReader(m manifest.Manifest, filename string) (ReadCloserWithLen, error) { rdrChan := make(chan *cfReader) go kc.queueSegmentsToGet(m, filename, rdrChan) r, ok := <-rdrChan @@ -205,6 +209,10 @@ GET: } var buf = make([]byte, fs.Offset+fs.Len) _, err = io.ReadFull(rdr, buf) + errClosing := rdr.Close() + if err == nil { + err = errClosing + } if err != nil { r.err = err close(r.errNotNil) @@ -235,7 +243,7 @@ GET: // In case we exited the above loop early: before returning, // drain the toGet channel so its sender doesn't sit around // blocking forever. - for _ = range r.toGet { + for range r.toGet { } }