X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/5b4d6b3be363cd47a8191ac1da42f5a2c13ef72d..5b7b834bcab1a32fe77851d78fd984e1c96465ee:/services/keepstore/keepstore.go diff --git a/services/keepstore/keepstore.go b/services/keepstore/keepstore.go index b29c881769..60d062e1e3 100644 --- a/services/keepstore/keepstore.go +++ b/services/keepstore/keepstore.go @@ -322,7 +322,10 @@ func (ks *keepstore) blockReadRemote(ctx context.Context, opts arvados.BlockRead } var remoteClient *keepclient.KeepClient var parts []string - var size int + li, err := getLocatorInfo(opts.Locator) + if err != nil { + return 0, err + } for i, part := range strings.Split(opts.Locator, "+") { switch { case i == 0: @@ -344,8 +347,6 @@ func (ks *keepstore) blockReadRemote(ctx context.Context, opts arvados.BlockRead } remoteClient = kc part = "A" + part[7:] - case len(part) > 0 && part[0] >= '0' && part[0] <= '9': - size, _ = strconv.Atoi(part) } parts = append(parts, part) } @@ -356,8 +357,8 @@ func (ks *keepstore) blockReadRemote(ctx context.Context, opts arvados.BlockRead if opts.LocalLocator == nil { // Read from remote cluster and stream response back // to caller - if rw, ok := opts.WriteTo.(http.ResponseWriter); ok && size > 0 { - rw.Header().Set("Content-Length", fmt.Sprintf("%d", size)) + if rw, ok := opts.WriteTo.(http.ResponseWriter); ok && li.size > 0 { + rw.Header().Set("Content-Length", fmt.Sprintf("%d", li.size)) } return remoteClient.BlockRead(ctx, arvados.BlockReadOptions{ Locator: locator,