projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
8460: Move loggedDuration from keepstore to sdk pkg as stats.Duration.
[arvados.git]
/
sdk
/
go
/
keepclient
/
collectionreader.go
diff --git
a/sdk/go/keepclient/collectionreader.go
b/sdk/go/keepclient/collectionreader.go
index 68ecc6e43083d628fda84b00fbfeaf7fbfc9fe6b..33bb58710e0c94e1cfa562b8bd1c56afff62a4d7 100644
(file)
--- 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 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
rdrChan := make(chan *cfReader)
go kc.queueSegmentsToGet(m, filename, rdrChan)
r, ok := <-rdrChan
@@
-205,12
+209,16
@@
GET:
}
var buf = make([]byte, fs.Offset+fs.Len)
_, err = io.ReadFull(rdr, buf)
}
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)
return
}
if err != nil {
r.err = err
close(r.errNotNil)
return
}
- for bOff, bLen := fs.Offset, dataSliceSize; bOff <
=
fs.Offset+fs.Len && bLen > 0; bOff += bLen {
+ for bOff, bLen := fs.Offset, dataSliceSize; bOff < fs.Offset+fs.Len && bLen > 0; bOff += bLen {
if bOff+bLen > fs.Offset+fs.Len {
bLen = fs.Offset + fs.Len - bOff
}
if bOff+bLen > fs.Offset+fs.Len {
bLen = fs.Offset + fs.Len - bOff
}
@@
-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.
// 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 {
}
}
}
}