Merge branch '20455-noopener' refs #20455
[arvados.git] / sdk / go / keepclient / gateway_shim.go
index eeb187e10735f0cc0d6f94757dece828df7301a4..260824453dd57f04119b97cbeae27e49297984fb 100644 (file)
@@ -17,6 +17,12 @@ import (
 
 // 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
 }
@@ -40,8 +46,11 @@ func (kvh *keepViaHTTP) BlockRead(ctx context.Context, opts arvados.BlockReadOpt
        if err != nil {
                return 0, err
        }
-       defer rdr.Close()
        n, err := io.Copy(opts.WriteTo, rdr)
+       errClose := rdr.Close()
+       if err == nil {
+               err = errClose
+       }
        return int(n), err
 }