From 6676832c71dda9b2fd735d53f5729e19bcf062b3 Mon Sep 17 00:00:00 2001 From: Shivanshu Raj Shrivastava Date: Tue, 29 Apr 2025 17:12:35 +0530 Subject: [PATCH] chore: add funnel validation while processing funnel steps Signed-off-by: Shivanshu Raj Shrivastava --- pkg/modules/tracefunnel/utils.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/pkg/modules/tracefunnel/utils.go b/pkg/modules/tracefunnel/utils.go index 3ebb5312f8..2163634406 100644 --- a/pkg/modules/tracefunnel/utils.go +++ b/pkg/modules/tracefunnel/utils.go @@ -2,13 +2,14 @@ package tracefunnel import ( "fmt" + "net/http" + "sort" + "time" + "github.com/SigNoz/signoz/pkg/errors" "github.com/SigNoz/signoz/pkg/types/authtypes" tracefunnel "github.com/SigNoz/signoz/pkg/types/tracefunnel" "github.com/SigNoz/signoz/pkg/valuer" - "net/http" - "sort" - "time" ) // ValidateTimestamp validates a timestamp @@ -102,6 +103,14 @@ func ConstructFunnelResponse(funnel *tracefunnel.Funnel, claims *authtypes.Claim } func ProcessFunnelSteps(steps []tracefunnel.FunnelStep) ([]tracefunnel.FunnelStep, error) { + // First validate the steps + if err := ValidateFunnelSteps(steps); err != nil { + return nil, errors.Newf(errors.TypeInvalidInput, + errors.CodeInvalidInput, + "invalid funnel steps: %v", err) + } + + // Then process the steps for i := range steps { if steps[i].Order < 1 { steps[i].Order = int64(i + 1) @@ -111,11 +120,5 @@ func ProcessFunnelSteps(steps []tracefunnel.FunnelStep) ([]tracefunnel.FunnelSte } } - if err := ValidateFunnelSteps(steps); err != nil { - return nil, errors.Newf(errors.TypeInvalidInput, - errors.CodeInvalidInput, - "invalid funnel steps: %v", err) - } - return NormalizeFunnelSteps(steps), nil }