Skip to content

Commit

Permalink
Merge 5698d8e into 63e79be
Browse files Browse the repository at this point in the history
  • Loading branch information
bishnuag committed Sep 5, 2022
2 parents 63e79be + 5698d8e commit da7b69a
Show file tree
Hide file tree
Showing 82 changed files with 1,668 additions and 490 deletions.
55 changes: 37 additions & 18 deletions codegen/template_bundle/template_files.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion codegen/templates/http_client.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ type Client interface {
{{if ne .RequestType "" -}}
args {{.RequestType}},
{{end -}}
timeoutPerAttempt time.Duration,
maxAttempts int,
) (context.Context, {{- if ne .ResponseType "" -}} {{.ResponseType}}, {{- end -}}map[string]string, error)
{{- end -}}
{{- end -}}
Expand Down Expand Up @@ -258,6 +260,8 @@ func (c *{{$clientName}}) {{$methodName}}(
{{if ne .RequestType "" -}}
r {{.RequestType}},
{{end -}}
timeoutPerAttempt time.Duration,
maxAttempts int,
) (context.Context, {{- if ne .ResponseType "" -}} {{.ResponseType}}, {{- end -}}map[string]string, error) {
reqUUID := zanzibar.RequestUUIDFromCtx(ctx)
if headers == nil {
Expand All @@ -273,7 +277,7 @@ func (c *{{$clientName}}) {{$methodName}}(
{{if .ResponseType -}}
var defaultRes {{.ResponseType}}
{{end -}}
req := zanzibar.NewClientHTTPRequest(ctx, c.clientID, "{{$methodName}}", "{{$serviceMethod}}", c.httpClient)
req := zanzibar.NewClientHTTPRequest(ctx, c.clientID, "{{$methodName}}", "{{$serviceMethod}}", c.httpClient,timeoutPerAttempt,maxAttempts)

{{if .ReqHeaderGoStatements }}
{{range $index, $line := .ReqClientHeaderGoStatements -}}
Expand Down
4 changes: 3 additions & 1 deletion codegen/templates/service_mock.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ type MockService interface {
method string,
headers map[string]string,
req, resp zanzibar.RWTStruct,
timeoutPerAttempt time.Duration, retryCount int,
) (bool, map[string]string, error)
{{$mock}}() *{{$mockType}}
Server() *zanzibar.Gateway
Expand Down Expand Up @@ -188,12 +189,13 @@ func (m *mockService) MakeTChannelRequest(
method string,
headers map[string]string,
req, res zanzibar.RWTStruct,
timeoutPerAttempt time.Duration, retryCount int,
) (bool, map[string]string, error) {
if !m.started {
return false, nil, errors.New("mock server is not started")
}

sc := m.server.ServerTChannel.GetSubChannel(m.server.ServiceName)
sc.Peers().Add(m.server.RealTChannelAddr)
return m.tChannelClient.Call(ctx, thriftService, method, headers, req, res)
return m.tChannelClient.Call(ctx, thriftService, method, headers, req, res, timeoutPerAttempt, retryCount)
}
8 changes: 6 additions & 2 deletions codegen/templates/tchannel_client.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ type Client interface {
{{if ne .RequestType "" -}}
args {{.RequestType}},
{{end -}}
timeoutPerAttempt time.Duration,
maxAttempts int,
) (context.Context, {{- if ne .ResponseType "" -}} {{.ResponseType}}, {{- end -}}map[string]string, error)
{{- end -}}
{{- end -}}
Expand Down Expand Up @@ -329,6 +331,8 @@ type {{$clientName}} struct {
{{if ne .RequestType "" -}}
args {{.RequestType}},
{{end -}}
timeoutPerAttempt time.Duration,
maxAttempts int,
) (context.Context, {{- if ne .ResponseType "" -}} {{.ResponseType}}, {{- end -}}map[string]string, error) {
var result {{.GenCodePkgName}}.{{title $svc.Name}}_{{title .Name}}_Result
{{if .ResponseType -}}
Expand All @@ -345,7 +349,7 @@ type {{$clientName}} struct {
var err error
if (c.circuitBreakerDisabled) {
success, respHeaders, err = c.client.Call(
ctx, "{{$svc.Name}}", "{{.Name}}", reqHeaders, args, &result,
ctx, "{{$svc.Name}}", "{{.Name}}", reqHeaders, args, &result, timeoutPerAttempt, maxAttempts,
)
} else {
// We want hystrix ckt-breaker to count errors only for system issues
Expand All @@ -360,7 +364,7 @@ type {{$clientName}} struct {
elapsed := time.Now().Sub(start)
scope.Timer("hystrix-timer").Record(elapsed)
success, respHeaders, clientErr = c.client.Call(
ctx, "{{$svc.Name}}", "{{.Name}}", reqHeaders, args, &result,
ctx, "{{$svc.Name}}", "{{.Name}}", reqHeaders, args, &result, timeoutPerAttempt, maxAttempts,
)
if _, isSysErr := clientErr.(tchannel.SystemError); !isSysErr {
// Declare ok if it is not a system-error
Expand Down
4 changes: 3 additions & 1 deletion codegen/templates/tchannel_endpoint.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,8 @@ func (h *{{$handlerName}}) redirectToDeputy(
h.Deps.Default.Config.MustGetInt("tchannel.deputy.timeoutPerAttempt"),
)

maxAttempts := int(h.Deps.Default.Config.MustGetInt("clients.{{$clientID}}.retryCount"))

methodNames := map[string]string{
"{{.ThriftService}}::{{.Name}}": "{{$methodName}}",
}
Expand All @@ -266,7 +268,7 @@ func (h *{{$handlerName}}) redirectToDeputy(
},
)

success, respHeaders, err := client.Call(ctx, "{{.ThriftService}}", "{{$methodName}}", reqHeaders, req, res)
success, respHeaders, err := client.Call(ctx, "{{.ThriftService}}", "{{$methodName}}", reqHeaders, req, res, timeoutPerAttempt, maxAttempts)
return ctx, success, res, respHeaders, err
}
{{end -}}
Expand Down
23 changes: 15 additions & 8 deletions codegen/templates/workflow.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ func New{{$workflowInterface}}(deps *module.Dependencies) {{$workflowInterface}}
Clients: deps.Client,
Logger: deps.Default.Logger,
whitelistedDynamicHeaders: whitelistedDynamicHeaders,
defaultDeps: deps.Default,
}
}

Expand All @@ -99,6 +100,7 @@ type {{$workflowStruct}} struct {
Clients *module.ClientDependencies
Logger *zap.Logger
whitelistedDynamicHeaders []string
defaultDeps *zanzibar.DefaultDependencies
}

// Handle calls thrift client.
Expand Down Expand Up @@ -168,40 +170,45 @@ func (w {{$workflowStruct}}) Handle(
}
}

//maxRetry value 0 will execute all previous code and doesn't changes anything
//maxRetry value 0 will not use timoutPerAttempt information
var timoutPerAttempt time.Duration = 1 * time.Second
var maxRetry int = 0

{{if and (eq $clientReqType "") (eq $clientResType "")}}
{{if (eq (len $resHeaderMap) 0) -}}
ctx, _, err := w.Clients.{{$clientName}}.{{$clientMethodName}}(ctx, clientHeaders)
ctx, _, err := w.Clients.{{$clientName}}.{{$clientMethodName}}(ctx, clientHeaders, timoutPerAttempt, maxRetry)
{{else}}
ctx, cliRespHeaders, err := w.Clients.{{$clientName}}.{{$clientMethodName}}(ctx, clientHeaders)
ctx, cliRespHeaders, err := w.Clients.{{$clientName}}.{{$clientMethodName}}(ctx, clientHeaders, timoutPerAttempt, maxRetry)
{{- end }}
{{else if eq $clientReqType ""}}
{{if (eq (len $resHeaderMap) 0) -}}
ctx, clientRespBody, cliRespHeaders, err := w.Clients.{{$clientName}}.{{$clientMethodName}}(
ctx, clientHeaders,
ctx, clientHeaders, timoutPerAttempt, maxRetry,
)
{{else}}
ctx, clientRespBody, cliRespHeaders, err := w.Clients.{{$clientName}}.{{$clientMethodName}}(
ctx, clientHeaders,
ctx, clientHeaders, timoutPerAttempt, maxRetry,
)
{{- end }}
{{else if eq $clientResType ""}}
{{if (eq (len $resHeaderMap) 0) -}}
ctx, _, err := w.Clients.{{$clientName}}.{{$clientMethodName}}(
ctx, clientHeaders, clientRequest,
ctx, clientHeaders, clientRequest, timoutPerAttempt, maxRetry,
)
{{else}}
ctx, cliRespHeaders, err := w.Clients.{{$clientName}}.{{$clientMethodName}}(
ctx, clientHeaders, clientRequest,
ctx, clientHeaders, clientRequest, timoutPerAttempt, maxRetry,
)
{{- end }}
{{else}}
{{if (eq (len $resHeaderMap) 0) -}}
ctx, clientRespBody, cliRespHeaders, err := w.Clients.{{$clientName}}.{{$clientMethodName}}(
ctx, clientHeaders, clientRequest,
ctx, clientHeaders, clientRequest, timoutPerAttempt, maxRetry,
)
{{else}}
ctx, clientRespBody, cliRespHeaders, err := w.Clients.{{$clientName}}.{{$clientMethodName}}(
ctx, clientHeaders, clientRequest,
ctx, clientHeaders, clientRequest, timoutPerAttempt, maxRetry,
)
{{- end }}
{{end -}}
Expand Down
Loading

0 comments on commit da7b69a

Please sign in to comment.