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

Method PrepareForRead

pkg/model/v2/segment_decoder.go:30–53  ·  view source on GitHub ↗
(segments [][]byte)

Source from the content-addressed store, hash-verified

28}
29
30func (d *SegmentDecoder) PrepareForRead(segments [][]byte) (*tempopb.Trace, error) {
31 combiner := trace.NewCombiner(0, false)
32 for i, obj := range segments {
33 obj, _, _, err := stripStartEnd(obj)
34 if err != nil {
35 return nil, fmt.Errorf("error stripping start/end: %w", err)
36 }
37
38 t := &tempopb.Trace{}
39 err = proto.Unmarshal(obj, t)
40 if err != nil {
41 return nil, fmt.Errorf("error unmarshaling trace: %w", err)
42 }
43
44 _, err = combiner.ConsumeWithFinal(t, i == len(segments)-1)
45 if err != nil {
46 return nil, fmt.Errorf("error combining trace: %w", err)
47 }
48 }
49
50 combinedTrace, _ := combiner.Result()
51
52 return combinedTrace, nil
53}
54
55// ToObject creates a byte slice that can be interpreted by ObjectDecoder in this package
56// see object_decoder.go for details on the format.

Callers

nothing calls this directly

Implementers 2

SegmentDecoderpkg/model/v2/segment_decoder.go
SegmentDecoderpkg/model/v1/segment_decoder.go

Calls 5

ConsumeWithFinalMethod · 0.95
ResultMethod · 0.95
NewCombinerFunction · 0.92
stripStartEndFunction · 0.85
UnmarshalMethod · 0.65

Tested by

no test coverage detected