Skip to content

Commit

Permalink
fix: limit has no effect when searching traces #290
Browse files Browse the repository at this point in the history
  • Loading branch information
sunface committed Nov 3, 2023
1 parent 3ddd33d commit 6d3a20f
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 69 deletions.
29 changes: 5 additions & 24 deletions query/internal/plugins/builtin/datav/api/traces.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,14 @@ func GetTraces(c *gin.Context, ds *models.Datasource, conn ch.Conn, params map[s
operationNameQuery1 = operationNameQuery
}

var durationQuery string
if min != 0 {
domainQuery += fmt.Sprintf(" AND duration >= %d", min*1e6)
durationQuery += fmt.Sprintf(" AND duration >= %d", min*1e6)
}
if max != 0 {
domainQuery += fmt.Sprintf(" AND duration <= %d", max*1e6)
durationQuery += fmt.Sprintf(" AND duration <= %d", max*1e6)
}

traceIndexes := make([]*datavmodels.TraceIndex, 0)
Expand All @@ -73,8 +76,8 @@ func GetTraces(c *gin.Context, ds *models.Datasource, conn ch.Conn, params map[s
if traceIds != "" {
query = fmt.Sprintf("SELECT startTime as ts,serviceName,name,traceId, duration as maxDuration FROM %s.%s WHERE traceId in ('%s') AND parentId=''", config.Data.Observability.DefaultTraceDB, datavmodels.DefaultTraceIndexTable, strings.Join(strings.Split(traceIds, ","), "','"))
} else if service != "" {
// SELECT traceId,min(startTime) as ts,count(spanId) as spanCount,max(duration) as maxDuration FROM trace_index WHERE startTime >= 1698975125000000000 AND startTime <= 1698975420000000000 AND serviceName='customer' GROUP BY traceId ORDER BY maxDuration DESC LIMIT 20
query = fmt.Sprintf("SELECT min(startTime) as ts,serviceName,name,traceId,max(duration) as maxDuration FROM %s.%s WHERE startTime >= %d AND startTime <= %d AND %s GROUP BY serviceName,name,traceId ORDER BY ts DESC limit %d", config.Data.Observability.DefaultTraceDB, datavmodels.DefaultTraceIndexTable, start*1e9, end*1e9, domainQuery+operationNameQuery, limit)
query0 := fmt.Sprintf("SELECT DISTINCT traceId FROM %s.%s WHERE startTime >= %d AND startTime <= %d AND %s ORDER BY startTime DESC limit %d", config.Data.Observability.DefaultTraceDB, datavmodels.DefaultTraceIndexTable, start*1e9, end*1e9, domainQuery+operationNameQuery, limit)
query = fmt.Sprintf("SELECT min(startTime) as ts,serviceName,name,traceId,max(duration) as maxDuration FROM %s.%s WHERE traceId in (%s) AND serviceName='%s' %s %s GROUP BY serviceName,name,traceId", config.Data.Observability.DefaultTraceDB, datavmodels.DefaultTraceIndexTable, query0, service, operationNameQuery, durationQuery)
} else {
query = fmt.Sprintf("SELECT startTime as ts,serviceName,name,traceId, duration as maxDuration FROM %s.%s WHERE tartTime >= %d AND startTime <= %d AND %s AND parentId='' ORDER BY ts DESC limit %d", config.Data.Observability.DefaultTraceDB, datavmodels.DefaultTraceIndexTable, start*1e9, end*1e9, domainQuery, limit)
}
Expand Down Expand Up @@ -294,9 +297,6 @@ type TagKey struct {
}

func GetTraceTagKeys(c *gin.Context, ds *models.Datasource, conn ch.Conn, params map[string]interface{}) models.PluginResult {
// tenant := models.GetTenant(c)
// domainQuery := datavutils.BuildBasicDomainQuery(tenant, params)

var domainQuery string
service := c.Query("service")
if service == "" {
Expand All @@ -314,26 +314,7 @@ func GetTraceTagKeys(c *gin.Context, ds *models.Datasource, conn ch.Conn, params
domainQuery = "WHERE isColumn=true"
}

// query := fmt.Sprintf("SELECT DISTINCT tagKey,tagType,dataType FROM %s.%s %s ", config.Data.Observability.DefaultTraceDB, datavmodels.DefaultSpanAttributeKeysTable, domainQuery)
// // query traceIDs
// rows, err := conn.Query(c.Request.Context(), query)
// if err != nil {
// logger.Warn("Error Query trace tag keys", "query", query, "error", err)
// return models.GenPluginResult(models.PluginStatusError, err.Error(), nil)
// }
// defer rows.Close()

tags := make([]*TagKey, 0)
// for rows.Next() {
// tag := &TagKey{}
// err := rows.Scan(&tag.Name, &tag.Type, &tag.DataType)
// if err != nil {
// logger.Warn("Error scan trace tag key", "error", err)
// continue
// }
// tag.IsColumn = false
// tags = append(tags, tag)
// }

query := fmt.Sprintf("SELECT DISTINCT tagKey,tagType,dataType FROM %s.%s %s ", config.Data.Observability.DefaultTraceDB, datavmodels.DefaultSpanAttributeKeysTable, domainQuery)
// query traceIDs
Expand Down
29 changes: 14 additions & 15 deletions query/internal/plugins/builtin/datav/models/models.go
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
package models

const (
DefaultTraceIndexTable string = "distributed_trace_index"
DefaultTraceServiceRootOperation string = "trace_service_root_operation"
DefaultTraceErrorTable string = "distributed_trace_error_index"
DefaultDurationTable string = "distributed_durationSort"
DefaultUsageExplorerTable string = "distributed_usage_explorer"
DefaultTraceSpansTable string = "distributed_trace_spans"
DefaultDependencyGraphTable string = "distributed_dependency_graph_minutes"
DefaultTopLevelOperationsTable string = "distributed_top_level_operations"
DefaultServiceOperationsTable string = "distributed_service_operations"
DefaultSpanAttributeTable string = "distributed_span_attributes"
DefaultSpanAttributeKeysTable string = "distributed_span_attributes_keys"
DefaultLogsTable string = "distributed_logs"
DefaultLogAttributeKeysTable string = "distributed_logs_attribute_keys"
DefaultLogResourceKeysTable string = "distributed_logs_resource_keys"
DefaultLogTagAttributeTable string = "distributed_log_tag_attributes"
DefaultTraceIndexTable string = "distributed_trace_index"
DefaultTraceErrorTable string = "distributed_trace_error_index"
DefaultDurationTable string = "distributed_durationSort"
DefaultUsageExplorerTable string = "distributed_usage_explorer"
DefaultTraceSpansTable string = "distributed_trace_spans"
DefaultDependencyGraphTable string = "distributed_dependency_graph_minutes"
DefaultTopLevelOperationsTable string = "distributed_top_level_operations"
DefaultServiceOperationsTable string = "distributed_service_operations"
DefaultSpanAttributeTable string = "distributed_span_attributes"
DefaultSpanAttributeKeysTable string = "distributed_span_attributes_keys"
DefaultLogsTable string = "distributed_logs"
DefaultLogAttributeKeysTable string = "distributed_logs_attribute_keys"
DefaultLogResourceKeysTable string = "distributed_logs_resource_keys"
DefaultLogTagAttributeTable string = "distributed_log_tag_attributes"
)

const (
Expand Down
30 changes: 0 additions & 30 deletions query/internal/plugins/builtin/datav/sqls/traces.sql
Original file line number Diff line number Diff line change
Expand Up @@ -66,36 +66,6 @@ SETTINGS index_granularity = 8192, ttl_only_drop_parts = 1
CREATE TABLE IF NOT EXISTS datav_traces.distributed_trace_index ON CLUSTER cluster AS datav_traces.trace_index
ENGINE = Distributed("cluster", "datav_traces", trace_index, cityHash64(traceId));

CREATE TABLE datav_traces.trace_service_root_operation
(
`traceId` FixedString(32) CODEC(ZSTD(1)),
`serviceName` LowCardinality(String) CODEC(ZSTD(1)),
`name` LowCardinality(String) CODEC(ZSTD(1)),
)
ENGINE = ReplacingMergeTree
ORDER BY (traceId,serviceName,name)
SETTINGS index_granularity = 2048, ttl_only_drop_parts = 1

CREATE TABLE IF NOT EXISTS datav_traces.distributed_trace_service_root_operation ON CLUSTER cluster AS datav_traces.trace_service_root_operation
ENGINE = Distributed("cluster", "datav_traces", trace_service_root_operation, cityHash64(traceId));

CREATE MATERIALIZED VIEW IF NOT EXISTS datav_traces.trace_service_root_operation_mv ON CLUSTER cluster
TO datav_traces.trace_service_root_operation
AS SELECT
traceId,
serviceName,
name,
FROM datav_traces.trace_index AS A, datav_traces.trace_index AS B
WHERE (A.serviceName != B.serviceName) AND (A.parentId = B.spanId);

CREATE MATERIALIZED VIEW IF NOT EXISTS datav_traces.trace_service_root_operation_mv1 ON CLUSTER cluster
TO datav_traces.trace_service_root_operation
AS SELECT
traceId,
serviceName,
name,
FROM datav_traces.trace_index
WHERE parentId = '';

CREATE TABLE datav_traces.trace_spans
(
Expand Down

0 comments on commit 6d3a20f

Please sign in to comment.