projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '20455-noopener' refs #20455
[arvados.git]
/
sdk
/
go
/
keepclient
/
gateway_shim.go
diff --git
a/sdk/go/keepclient/gateway_shim.go
b/sdk/go/keepclient/gateway_shim.go
index eeb187e10735f0cc0d6f94757dece828df7301a4..260824453dd57f04119b97cbeae27e49297984fb 100644
(file)
--- a/
sdk/go/keepclient/gateway_shim.go
+++ b/
sdk/go/keepclient/gateway_shim.go
@@
-17,6
+17,12
@@
import (
// keepViaHTTP implements arvados.KeepGateway by using a KeepClient to
// do upstream requests to keepstore and keepproxy.
// keepViaHTTP implements arvados.KeepGateway by using a KeepClient to
// do upstream requests to keepstore and keepproxy.
+//
+// This enables KeepClient to use KeepGateway wrappers (like
+// arvados.DiskCache) to wrap its own HTTP client back-end methods
+// (getOrHead, httpBlockWrite).
+//
+// See (*KeepClient)upstreamGateway() for the relevant glue.
type keepViaHTTP struct {
*KeepClient
}
type keepViaHTTP struct {
*KeepClient
}
@@
-40,8
+46,11
@@
func (kvh *keepViaHTTP) BlockRead(ctx context.Context, opts arvados.BlockReadOpt
if err != nil {
return 0, err
}
if err != nil {
return 0, err
}
- defer rdr.Close()
n, err := io.Copy(opts.WriteTo, rdr)
n, err := io.Copy(opts.WriteTo, rdr)
+ errClose := rdr.Close()
+ if err == nil {
+ err = errClose
+ }
return int(n), err
}
return int(n), err
}