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

Method CompleteBlockWithBackend

tempodb/tempodb.go:254–296  ·  view source on GitHub ↗

CompleteBlockWithBackend iterates the given WAL block but flushes it to the given backend instead of the default TempoDB backend. The new block will have the same ID as the input block.

(ctx context.Context, block common.WALBlock, r backend.Reader, w backend.Writer)

Source from the content-addressed store, hash-verified

252// CompleteBlockWithBackend iterates the given WAL block but flushes it to the given backend instead of the default TempoDB backend. The
253// new block will have the same ID as the input block.
254func (rw *readerWriter) CompleteBlockWithBackend(ctx context.Context, block common.WALBlock, r backend.Reader, w backend.Writer) (common.BackendBlock, error) {
255 // The destination block format:
256 vers, err := encoding.FromVersionForWrites(rw.cfg.Block.Version)
257 if err != nil {
258 return nil, err
259 }
260
261 // force flush anything left in the wal
262 err = block.Flush()
263 if err != nil {
264 return nil, fmt.Errorf("error flushing wal block: %w", err)
265 }
266
267 iter, err := block.Iterator(ctx)
268 if err != nil {
269 return nil, err
270 }
271 defer iter.Close()
272
273 walMeta := block.BlockMeta()
274
275 inMeta := &backend.BlockMeta{
276 // From the wal block
277 TenantID: walMeta.TenantID,
278 BlockID: walMeta.BlockID,
279 TotalObjects: walMeta.TotalObjects,
280 StartTime: walMeta.StartTime,
281 EndTime: walMeta.EndTime,
282 DedicatedColumns: walMeta.DedicatedColumns,
283 }
284
285 newMeta, err := vers.CreateBlock(ctx, rw.cfg.Block, inMeta, iter, r, w)
286 if err != nil {
287 return nil, fmt.Errorf("error creating block: %w", err)
288 }
289
290 backendBlock, err := encoding.OpenBlock(newMeta, r)
291 if err != nil {
292 return nil, fmt.Errorf("error opening new block: %w", err)
293 }
294
295 return backendBlock, nil
296}
297
298func (rw *readerWriter) DeleteNoCompactFlag(ctx context.Context, tenantID string, blockID backend.UUID) error {
299 return rw.w.DeleteNoCompactFlag(ctx, (uuid.UUID)(blockID), tenantID)

Callers 1

CompleteBlockMethod · 0.95

Calls 7

FromVersionForWritesFunction · 0.92
OpenBlockFunction · 0.92
FlushMethod · 0.65
IteratorMethod · 0.65
CloseMethod · 0.65
BlockMetaMethod · 0.65
CreateBlockMethod · 0.65

Tested by

no test coverage detected