NewLocalBlock creates a local block wrapper around an existing backend block.
(ctx context.Context, existingBlock common.BackendBlock, l *local.Backend)
| 35 | |
| 36 | // NewLocalBlock creates a local block wrapper around an existing backend block. |
| 37 | func NewLocalBlock(ctx context.Context, existingBlock common.BackendBlock, l *local.Backend) *LocalBlock { |
| 38 | c := &LocalBlock{ |
| 39 | BackendBlock: existingBlock, |
| 40 | reader: backend.NewReader(l), |
| 41 | writer: backend.NewWriter(l), |
| 42 | } |
| 43 | |
| 44 | flushedBytes, err := c.reader.Read(ctx, nameFlushed, (uuid.UUID)(c.BlockMeta().BlockID), c.BlockMeta().TenantID, nil) |
| 45 | if err == nil { |
| 46 | flushedTime := time.Time{} |
| 47 | if err := flushedTime.UnmarshalText(flushedBytes); err == nil { |
| 48 | c.flushedTime.Store(flushedTime.Unix()) |
| 49 | } |
| 50 | } |
| 51 | |
| 52 | return c |
| 53 | } |
| 54 | |
| 55 | func (c *LocalBlock) FindTraceByID(ctx context.Context, id common.ID, opts common.SearchOptions) (*tempopb.TraceByIDResponse, error) { |
| 56 | ctx, span := tracer.Start(ctx, "LocalBlock.FindTraceByID") |