59
}
60
61
>
client := nexusrpc.NewCompletionHTTPClient(nexusrpc.CompletionHTTPClientOptions{
nexus_invocation.go
62
>
HTTPCaller: e.HTTPCallerProvider(queuescommon.NamespaceIDAndDestination{
63
>
NamespaceID: ns.ID().String(),
64
>
Destination: task.Destination(),
65
>
}),
66
>
Serializer: commonnexus.PayloadSerializer,
67
>
})
68
>
// Make the call and record metrics.
69
>
startTime := time.Now()
70
>
71
>
n.completion.Header = n.nexus.Header
72
>
err := client.CompleteOperation(ctx, n.nexus.Url, n.completion)
73
>
74
>
namespaceTag := metrics.NamespaceTag(ns.Name().String())
75
>
destTag := metrics.DestinationTag(task.Destination())
76
>
statusCodeTag := metrics.OutcomeTag(outcomeTag(ctx, err))
77
>
e.MetricsHandler.Counter(RequestCounter.Name()).Record(1, namespaceTag, destTag, statusCodeTag)
78
>
e.MetricsHandler.Timer(RequestLatencyHistogram.Name()).Record(time.Since(startTime), namespaceTag, destTag, statusCodeTag)
79
>
80
>
if err != nil {
81
retryable := isRetryableCallError(err)
82
e.Logger.Error("Callback request failed", tag.Error(err), tag.Bool("retryable", retryable))