chore(storage): add retry metrics for Reader (#6056) · googleapis/google-cloud-go@1a21711

Original file line numberDiff line numberDiff line change

@@ -210,7 +210,7 @@ func (o *ObjectHandle) NewRangeReader(ctx context.Context, offset, length int64)

210210

gen = gen64

211211

}

212212

return nil

213-

}, o.retry, true, setRetryHeaderHTTP(nil))

213+

}, o.retry, true, setRetryHeaderHTTP(&readerRequestWrapper{req}))

214214

if err != nil {

215215

return nil, err

216216

}

@@ -356,6 +356,16 @@ func setConditionsHeaders(headers http.Header, conds *Conditions) error {

356356

return nil

357357

}

358358
359+

// Wrap a request to look similar to an apiary library request, in order to

360+

// be used by run().

361+

type readerRequestWrapper struct {

362+

req *http.Request

363+

}

364+
365+

func (w *readerRequestWrapper) Header() http.Header {

366+

return w.req.Header

367+

}

368+
359369

var emptyBody = ioutil.NopCloser(strings.NewReader(""))

360370
361371

// Reader reads a Cloud Storage object.

@@ -492,7 +502,7 @@ func (o *ObjectHandle) newRangeReaderWithGRPC(ctx context.Context, offset, lengt

492502

msg, err = stream.Recv()

493503
494504

return err

495-

}, o.retry, true, setRetryHeaderHTTP(nil))

505+

}, o.retry, true, setRetryHeaderGRPC(ctx))

496506

if err != nil {

497507

// Close the stream context we just created to ensure we don't leak

498508

// resources.