Skip to content

Commit

Permalink
search/utils: added missing new intrinsic names to search/tags endpoi…
Browse files Browse the repository at this point in the history
…nt (#3751)

* search/utils: added missing new intrinsic names to search/tags endpoint

* updated tests

* search/utils: changed var names to have ScopedIntrinsic Prefix

* added trace:traceDuration

* fixed tests
  • Loading branch information
ishanjain28 committed Jun 15, 2024
1 parent 2870e82 commit e706a6a
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 5 deletions.
2 changes: 1 addition & 1 deletion modules/ingester/instance_search_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ func TestInstanceSearchTagsSpecialCases(t *testing.T) {
require.NoError(t, err)
require.Equal(
t,
[]string{"duration", "kind", "name", "status", "statusMessage", "traceDuration", "rootServiceName", "rootName"},
[]string{"duration", "kind", "name", "status", "statusMessage", "traceDuration", "rootServiceName", "rootName", "span:status", "span:statusMessage", "span:duration", "span:name", "span:kind", "trace:rootName", "trace:rootServiceName", "trace:traceDuration"},
resp.TagNames,
)
}
Expand Down
14 changes: 11 additions & 3 deletions pkg/search/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,13 @@ func GetVirtualTagValues(tagName string) []string {

func GetVirtualTagValuesV2(tagName string) []tempopb.TagValue {
switch tagName {
case traceql.IntrinsicStatus.String():
case traceql.IntrinsicStatus.String(), traceql.ScopedIntrinsicSpanStatus.String():
return []tempopb.TagValue{
{Type: "keyword", Value: traceql.StatusOk.String()},
{Type: "keyword", Value: traceql.StatusError.String()},
{Type: "keyword", Value: traceql.StatusUnset.String()},
}
case traceql.IntrinsicKind.String():
case traceql.IntrinsicKind.String(), traceql.ScopedIntrinsicSpanKind.String():
return []tempopb.TagValue{
{Type: "keyword", Value: traceql.KindClient.String()},
{Type: "keyword", Value: traceql.KindServer.String()},
Expand All @@ -45,7 +45,7 @@ func GetVirtualTagValuesV2(tagName string) []tempopb.TagValue {
{Type: "keyword", Value: traceql.KindInternal.String()},
{Type: "keyword", Value: traceql.KindUnspecified.String()},
}
case traceql.IntrinsicDuration.String():
case traceql.IntrinsicDuration.String(), traceql.ScopedIntrinsicSpanDuration.String():
return []tempopb.TagValue{}
case traceql.IntrinsicTraceDuration.String():
return []tempopb.TagValue{}
Expand All @@ -64,6 +64,14 @@ func GetVirtualIntrinsicValues() []string {
traceql.IntrinsicTraceDuration.String(),
traceql.IntrinsicTraceRootService.String(),
traceql.IntrinsicTraceRootSpan.String(),
traceql.ScopedIntrinsicSpanStatus.String(),
traceql.ScopedIntrinsicSpanStatusMessage.String(),
traceql.ScopedIntrinsicSpanDuration.String(),
traceql.ScopedIntrinsicSpanName.String(),
traceql.ScopedIntrinsicSpanKind.String(),
traceql.ScopedIntrinsicTraceRootName.String(),
traceql.ScopedIntrinsicTraceRootServiceName.String(),
traceql.ScopedIntrinsicTraceDuration.String(),
/* these are technically intrinsics that can be requested, but they are not generally of interest to a user
typing a query. for simplicity and clarity we are leaving them out of autocomplete
IntrinsicNestedSetLeft
Expand Down
41 changes: 40 additions & 1 deletion pkg/traceql/enum_attributes.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,14 @@ const (

IntrinsicTraceID
IntrinsicSpanID

ScopedIntrinsicSpanStatus
ScopedIntrinsicSpanStatusMessage
ScopedIntrinsicSpanDuration
ScopedIntrinsicSpanName
ScopedIntrinsicSpanKind
ScopedIntrinsicTraceRootName
ScopedIntrinsicTraceRootServiceName
ScopedIntrinsicTraceDuration
// not yet implemented in traceql and may never be. these exist so that we can retrieve
// these fields from the fetch layer

Expand Down Expand Up @@ -151,6 +158,22 @@ func (i Intrinsic) String() string {
return "trace:id"
case IntrinsicTraceStartTime:
return "traceStartTime"
case ScopedIntrinsicSpanStatus:
return "span:status"
case ScopedIntrinsicSpanStatusMessage:
return "span:statusMessage"
case ScopedIntrinsicSpanDuration:
return "span:duration"
case ScopedIntrinsicSpanName:
return "span:name"
case ScopedIntrinsicSpanKind:
return "span:kind"
case ScopedIntrinsicTraceRootName:
return "trace:rootName"
case ScopedIntrinsicTraceRootServiceName:
return "trace:rootServiceName"
case ScopedIntrinsicTraceDuration:
return "trace:traceDuration"
case IntrinsicSpanID:
return "span:id"
// below is unimplemented
Expand Down Expand Up @@ -202,6 +225,22 @@ func intrinsicFromString(s string) Intrinsic {
return IntrinsicTraceStartTime
case "span:id":
return IntrinsicSpanID
case "span:status":
return ScopedIntrinsicSpanStatus
case "span:statusMessage":
return ScopedIntrinsicSpanStatusMessage
case "span:duration":
return ScopedIntrinsicSpanDuration
case "span:name":
return ScopedIntrinsicSpanName
case "span:kind":
return ScopedIntrinsicSpanKind
case "trace:rootName":
return ScopedIntrinsicTraceRootName
case "trace:rootServiceName":
return ScopedIntrinsicTraceRootServiceName
case "trace:traceDuration":
return ScopedIntrinsicTraceDuration
// unimplemented
case "spanStartTime":
return IntrinsicSpanStartTime
Expand Down

0 comments on commit e706a6a

Please sign in to comment.