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

Method cutOneInstanceToWal

modules/livestore/live_store.go:748–783  ·  view source on GitHub ↗
(ctx context.Context, inst *instance, immediate bool)

Source from the content-addressed store, hash-verified

746}
747
748func (s *LiveStore) cutOneInstanceToWal(ctx context.Context, inst *instance, immediate bool) {
749 ctx, span := tracer.Start(ctx, "LiveStore.cutOneInstanceToWal",
750 oteltrace.WithAttributes(
751 attribute.String("tenant", inst.tenantID),
752 attribute.Bool("immediate", immediate),
753 ))
754 defer span.End()
755
756 var liveTracesDrained bool
757 var err error
758 for !liveTracesDrained {
759 // Regular trace cuts (live traces -> head block)
760 liveTracesDrained, err = inst.cutIdleTraces(ctx, immediate)
761 if err != nil {
762 level.Error(s.logger).Log("msg", "failed to cut idle traces", "tenant", inst.tenantID, "err", err)
763 span.SetStatus(codes.Error, err.Error())
764 span.RecordError(err)
765 break
766 }
767 id, err := inst.cutBlocks(ctx, immediate)
768 if err != nil {
769 level.Error(s.logger).Log("msg", "failed to cut blocks", "tenant", inst.tenantID, "err", err)
770 span.SetStatus(codes.Error, err.Error())
771 span.RecordError(err)
772 break
773 }
774 if id != uuid.Nil {
775 span.AddEvent("block enqueued for completion",
776 oteltrace.WithAttributes(attribute.String("blockID", id.String())))
777 if err := s.enqueueCompleteOp(inst.tenantID, id, false); err != nil {
778 level.Error(s.logger).Log("msg", "failed to enqueue complete operation", "tenant", inst.tenantID, "err", err)
779 span.RecordError(err)
780 }
781 }
782 }
783}
784
785// CheckReady returns nil if the live-store is ready to serve queries
786func (s *LiveStore) CheckReady(_ context.Context) error {

Calls 8

enqueueCompleteOpMethod · 0.95
BoolMethod · 0.80
cutIdleTracesMethod · 0.80
cutBlocksMethod · 0.80
StartMethod · 0.65
LogMethod · 0.65
ErrorMethod · 0.65
StringMethod · 0.45

Tested by 1