MCPcopy
hub / github.com/grafana/tempo / readRange

Method readRange

tempodb/backend/azure/azure.go:461–502  ·  view source on GitHub ↗
(ctx context.Context, name string, offset int64, destBuffer []byte)

Source from the content-addressed store, hash-verified

459}
460
461func (rw *Azure) readRange(ctx context.Context, name string, offset int64, destBuffer []byte) error {
462 blobClient := rw.hedgedContainerClient.NewBlockBlobClient(name)
463
464 props, err := blobClient.GetProperties(ctx, &blob.GetPropertiesOptions{})
465 if err != nil {
466 return err
467 }
468
469 length := int64(len(destBuffer))
470 var size int64
471
472 if props.ContentLength == nil {
473 return fmt.Errorf("expected content length but got none for blob %s: %w", name, err)
474 }
475
476 if length > 0 && length <= *props.ContentLength-offset {
477 size = length
478 } else {
479 size = *props.ContentLength - offset
480 }
481
482 if _, err := blobClient.DownloadBuffer(ctx, destBuffer, &blob.DownloadBufferOptions{
483 Range: blob.HTTPRange{
484 Offset: offset,
485 Count: size,
486 },
487 BlockSize: blob.DefaultDownloadBlockSize,
488 Concurrency: maxParallelism,
489 RetryReaderOptionsPerBlock: blob.RetryReaderOptions{
490 MaxRetries: maxRetries,
491 },
492 }); err != nil {
493 return err
494 }
495
496 _, err = bytes.NewReader(destBuffer).Read(destBuffer)
497 if err != nil {
498 return err
499 }
500
501 return nil
502}
503
504func (rw *Azure) readAll(ctx context.Context, name string) ([]byte, azcore.ETag, error) {
505 blobClient := rw.hedgedContainerClient.NewBlockBlobClient(name)

Callers 1

ReadRangeMethod · 0.95

Calls 1

ReadMethod · 0.65

Tested by

no test coverage detected