| defer func() { |
| if r := recover(); r != nil { |
| // log error |
| // fmt.Printf("error: %v", r) |
| log.Errorf("execute interceptor after invoke error, instrument name: %s, interceptor name: %s, function ID: %s, error: %v, stack: %s", |
| "{{.InstrumentName}}", "{{.InterceptorDefineName}}", "{{.FuncID}}", r, tracing.DebugStack()) |
| } |
| }() |
| |
| // real invoke |
| if err := {{.InterceptorVarName}}.AfterInvoke(invocation{{ range $index, $value := .Results -}} |
| , *ret_{{$index}} |
| {{- end}}); err != nil { |
| // using go2sky log error |
| log.Warnf("execute interceptor after invoke error, instrument name: %s, interceptor name: %s, function ID: %s, error: %v", |
| "{{.InstrumentName}}", "{{.InterceptorDefineName}}", "{{.FuncID}}", err) |
| } |
| |
| if (invocation.isContinue) { |
| {{- range $index, $value := .Results }} |
| if invocation.returnValues[{{$index}}] != nil { |
| *ret_{{$index}} = (invocation.returnValues[{{$index}}]).({{$value.PackagedTypeName}}) |
| } else { |
| *ret_{{$index}} = {{$value.DefaultValueAsString}} |
| } |
| {{- end }} |
| } |