mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-07-29 04:22:01 +08:00

* perf: introduce smart trace detail algorithm * fix: remove hardcoded levels and handle null levels * feat: add support for broken trees * feat: use spanLimit env variable * fix: handle missing root span * add root spanId and root name * use permanent table * add kind, events and tagmap support * fix query formation * increase context timeout to 600s * perf improvement * handle error * return tableName as response to query * support multiple queries tableName * perf: improve memory and latency * feat: add getSubTree custom func and smart trace detail algo to ee * fix: create new functions for ee * chore: refactor codebase * chore: refactor frontend code Co-authored-by: Ankit Nayan <ankit@signoz.io> Co-authored-by: Palash Gupta <palashgdev@gmail.com>
40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package api
|
|
|
|
import (
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"go.signoz.io/signoz/ee/query-service/app/db"
|
|
"go.signoz.io/signoz/ee/query-service/constants"
|
|
"go.signoz.io/signoz/ee/query-service/model"
|
|
baseapp "go.signoz.io/signoz/pkg/query-service/app"
|
|
basemodel "go.signoz.io/signoz/pkg/query-service/model"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func (ah *APIHandler) searchTraces(w http.ResponseWriter, r *http.Request) {
|
|
|
|
if !ah.CheckFeature(basemodel.SmartTraceDetail) {
|
|
zap.S().Info("SmartTraceDetail feature is not enabled in this plan")
|
|
ah.APIHandler.SearchTraces(w, r)
|
|
return
|
|
}
|
|
traceId, spanId, levelUpInt, levelDownInt, err := baseapp.ParseSearchTracesParams(r)
|
|
if err != nil {
|
|
RespondError(w, &model.ApiError{Typ: model.ErrorBadData, Err: err}, "Error reading params")
|
|
return
|
|
}
|
|
spanLimit, err := strconv.Atoi(constants.SpanLimitStr)
|
|
if err != nil {
|
|
zap.S().Error("Error during strconv.Atoi() on SPAN_LIMIT env variable: ", err)
|
|
return
|
|
}
|
|
result, err := ah.opts.DataConnector.SearchTraces(r.Context(), traceId, spanId, levelUpInt, levelDownInt, spanLimit, db.SmartTraceAlgorithm)
|
|
if ah.HandleError(w, err, http.StatusBadRequest) {
|
|
return
|
|
}
|
|
|
|
ah.WriteJSON(w, r, result)
|
|
|
|
}
|