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