From c0fc6c13d5788c764ca0cbc6ded2bc05e1c26959 Mon Sep 17 00:00:00 2001 From: Eli Yukelzon Date: Thu, 2 Apr 2020 11:33:43 +0300 Subject: [PATCH] Opentracing layer generator improvement (#14206) --- app/layer_generators/main.go | 13 ++++++++++++- app/layer_generators/opentracing_layer.go.tmpl | 4 +--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/layer_generators/main.go b/app/layer_generators/main.go index 321dab7cb2..b58d17aad0 100644 --- a/app/layer_generators/main.go +++ b/app/layer_generators/main.go @@ -108,7 +108,7 @@ func extractMethodMetadata(method *ast.Field, src []byte) methodData { for paramName := range paramsToTrace { found := false for _, param := range params { - if param.Name == paramName { + if param.Name == paramName || strings.HasPrefix(paramName, param.Name+".") { found = true break } @@ -218,6 +218,17 @@ func generateLayer(name, templateFile string) ([]byte, error) { } return "" }, + "shouldTrace": func(params map[string]bool, param string) string { + if _, ok := params[param]; ok { + return fmt.Sprintf(`span.SetTag("%s", %s)`, param, param) + } + for pName := range params { + if strings.HasPrefix(pName, param+".") { + return fmt.Sprintf(`span.SetTag("%s", %s)`, pName, pName) + } + } + return "" + }, "joinParams": func(params []methodParam) string { paramsNames := []string{} for _, param := range params { diff --git a/app/layer_generators/opentracing_layer.go.tmpl b/app/layer_generators/opentracing_layer.go.tmpl index 90a9e2ab5a..f8b6cd75aa 100644 --- a/app/layer_generators/opentracing_layer.go.tmpl +++ b/app/layer_generators/opentracing_layer.go.tmpl @@ -58,9 +58,7 @@ func (a *{{$.Name}}) {{$index}}({{$element.Params | joinParamsWithType}}) {{$ele a.ctx = origCtx }() {{range $paramIdx, $param := $element.Params}} - {{if index $element.ParamsToTrace $param.Name}} - span.SetTag("{{$param.Name}}", {{$param.Name}}) - {{end}} + {{ shouldTrace $element.ParamsToTrace $param.Name }} {{end}} defer span.Finish() {{- if $element.Results | len | eq 0}}