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

Method KeepGroup

tempodb/encoding/vparquet4/block_traceql.go:3123–3225  ·  view source on GitHub ↗
(res *parquetquery.IteratorResult)

Source from the content-addressed store, hash-verified

3121}
3122
3123func (c *spanCollector) KeepGroup(res *parquetquery.IteratorResult) bool {
3124 var sp *span
3125 // look for existing span first. this occurs on the second pass
3126 for _, e := range res.OtherEntries {
3127 if v, ok := e.Value.(*span); ok {
3128 sp = v
3129 break
3130 }
3131 }
3132
3133 // if not found create a new one
3134 if sp == nil {
3135 sp = getSpan()
3136 sp.rowNum = res.RowNumber
3137 }
3138
3139 for _, e := range res.OtherEntries {
3140 switch v := e.Value.(type) {
3141 case traceql.Static:
3142 sp.addSpanAttr(newSpanAttr(e.Key), v)
3143 case *event:
3144 sp.setEventAttrs(v.attrs)
3145 putEvent(v)
3146 case *link:
3147 sp.setLinkAttrs(v.attrs)
3148 putLink(v)
3149 }
3150 }
3151
3152 var durationNanos uint64
3153
3154 // Merge all individual columns into the span
3155 for _, kv := range res.Entries {
3156 switch kv.Key {
3157 case columnPathSpanID:
3158 sp.id = kv.Value.ByteArray()
3159 sp.addSpanAttr(traceql.IntrinsicSpanIDAttribute, traceql.NewStaticString(util.SpanIDToHexString(kv.Value.ByteArray())))
3160 case columnPathSpanParentSpanID:
3161 sp.addSpanAttr(traceql.IntrinsicParentIDAttribute, traceql.NewStaticString(util.SpanIDToHexString(kv.Value.ByteArray())))
3162 case columnPathSpanStartTime:
3163 sp.startTimeUnixNanos = kv.Value.Uint64()
3164 case columnPathSpanDuration:
3165 durationNanos = kv.Value.Uint64()
3166 sp.durationNanos = durationNanos
3167 sp.addSpanAttr(traceql.IntrinsicDurationAttribute, traceql.NewStaticDuration(time.Duration(durationNanos)))
3168 case ColumnPathSpanName:
3169 sp.addSpanAttr(traceql.IntrinsicNameAttribute, traceql.NewStaticString(unsafeToString(kv.Value.Bytes())))
3170 case columnPathSpanStatusCode:
3171 sp.addSpanAttr(traceql.IntrinsicStatusAttribute, traceql.NewStaticStatus(otlpStatusToTraceqlStatus(kv.Value.Uint64())))
3172 case columnPathSpanStatusMessage:
3173 sp.addSpanAttr(traceql.IntrinsicStatusMessageAttribute, traceql.NewStaticString(unsafeToString(kv.Value.Bytes())))
3174 case columnPathSpanKind:
3175 sp.addSpanAttr(traceql.IntrinsicKindAttribute, traceql.NewStaticKind(otlpKindToTraceqlKind(kv.Value.Uint64())))
3176 case columnPathSpanParentID:
3177 sp.nestedSetParent = kv.Value.Int32()
3178 if c.nestedSetParentExplicit {
3179 sp.addSpanAttr(traceql.IntrinsicNestedSetParentAttribute, traceql.NewStaticInt(int(kv.Value.Int32())))
3180 }

Callers

nothing calls this directly

Calls 15

addSpanAttrMethod · 0.95
setEventAttrsMethod · 0.95
setLinkAttrsMethod · 0.95
attributesMatchedMethod · 0.95
NewStaticStringFunction · 0.92
SpanIDToHexStringFunction · 0.92
NewStaticDurationFunction · 0.92
NewStaticStatusFunction · 0.92
NewStaticKindFunction · 0.92
NewStaticIntFunction · 0.92
NewStaticBoolFunction · 0.92
NewStaticFloatFunction · 0.92

Tested by

no test coverage detected