X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/5d56a1af42f64df57ef7a1bcef6d016ff2310900..3583e494ed815632bbaa2582fd0a49110a21123b:/sdk/go/keepclient/support.go diff --git a/sdk/go/keepclient/support.go b/sdk/go/keepclient/support.go index 633ec18968..6acaf64baa 100644 --- a/sdk/go/keepclient/support.go +++ b/sdk/go/keepclient/support.go @@ -127,7 +127,7 @@ func (kc *KeepClient) uploadToKeepServer(host string, hash string, classesTodo [ } } -func (kc *KeepClient) BlockWrite(ctx context.Context, req arvados.BlockWriteOptions) (arvados.BlockWriteResponse, error) { +func (kc *KeepClient) httpBlockWrite(ctx context.Context, req arvados.BlockWriteOptions) (arvados.BlockWriteResponse, error) { var resp arvados.BlockWriteResponse var getReader func() io.Reader if req.Data == nil && req.Reader == nil { @@ -149,8 +149,12 @@ func (kc *KeepClient) BlockWrite(ctx context.Context, req arvados.BlockWriteOpti getReader = func() io.Reader { return bytes.NewReader(req.Data[:req.DataSize]) } } else { buf := asyncbuf.NewBuffer(make([]byte, 0, req.DataSize)) + reader := req.Reader + if req.Hash != "" { + reader = HashCheckingReader{req.Reader, md5.New(), req.Hash} + } go func() { - _, err := io.Copy(buf, HashCheckingReader{req.Reader, md5.New(), req.Hash}) + _, err := io.Copy(buf, reader) buf.CloseWithError(err) }() getReader = buf.NewReader @@ -164,7 +168,11 @@ func (kc *KeepClient) BlockWrite(ctx context.Context, req arvados.BlockWriteOpti req.Hash = fmt.Sprintf("%x", m.Sum(nil)) } if req.StorageClasses == nil { - req.StorageClasses = kc.StorageClasses + if len(kc.StorageClasses) > 0 { + req.StorageClasses = kc.StorageClasses + } else { + req.StorageClasses = kc.DefaultStorageClasses + } } if req.Replicas == 0 { req.Replicas = kc.Want_replicas