|
23 | 23 | import com.google.common.collect.ImmutableMap;
|
24 | 24 | import com.google.gson.Gson;
|
25 | 25 | import com.google.gson.GsonBuilder;
|
26 |
| -import com.uber.cadence.BadRequestError; |
27 |
| -import com.uber.cadence.ClientVersionNotSupportedError; |
28 |
| -import com.uber.cadence.ClusterInfo; |
29 |
| -import com.uber.cadence.CountWorkflowExecutionsRequest; |
30 |
| -import com.uber.cadence.CountWorkflowExecutionsResponse; |
31 |
| -import com.uber.cadence.DeprecateDomainRequest; |
32 |
| -import com.uber.cadence.DescribeDomainRequest; |
33 |
| -import com.uber.cadence.DescribeDomainResponse; |
34 |
| -import com.uber.cadence.DescribeTaskListRequest; |
35 |
| -import com.uber.cadence.DescribeTaskListResponse; |
36 |
| -import com.uber.cadence.DescribeWorkflowExecutionRequest; |
37 |
| -import com.uber.cadence.DescribeWorkflowExecutionResponse; |
38 |
| -import com.uber.cadence.DomainAlreadyExistsError; |
39 |
| -import com.uber.cadence.DomainNotActiveError; |
40 |
| -import com.uber.cadence.EntityNotExistsError; |
41 |
| -import com.uber.cadence.GetSearchAttributesResponse; |
42 |
| -import com.uber.cadence.GetTaskListsByDomainRequest; |
43 |
| -import com.uber.cadence.GetTaskListsByDomainResponse; |
44 |
| -import com.uber.cadence.GetWorkflowExecutionHistoryRequest; |
45 |
| -import com.uber.cadence.GetWorkflowExecutionHistoryResponse; |
46 |
| -import com.uber.cadence.History; |
47 |
| -import com.uber.cadence.InternalServiceError; |
48 |
| -import com.uber.cadence.LimitExceededError; |
49 |
| -import com.uber.cadence.ListArchivedWorkflowExecutionsRequest; |
50 |
| -import com.uber.cadence.ListArchivedWorkflowExecutionsResponse; |
51 |
| -import com.uber.cadence.ListClosedWorkflowExecutionsRequest; |
52 |
| -import com.uber.cadence.ListClosedWorkflowExecutionsResponse; |
53 |
| -import com.uber.cadence.ListDomainsRequest; |
54 |
| -import com.uber.cadence.ListDomainsResponse; |
55 |
| -import com.uber.cadence.ListOpenWorkflowExecutionsRequest; |
56 |
| -import com.uber.cadence.ListOpenWorkflowExecutionsResponse; |
57 |
| -import com.uber.cadence.ListTaskListPartitionsRequest; |
58 |
| -import com.uber.cadence.ListTaskListPartitionsResponse; |
59 |
| -import com.uber.cadence.ListWorkflowExecutionsRequest; |
60 |
| -import com.uber.cadence.ListWorkflowExecutionsResponse; |
61 |
| -import com.uber.cadence.PollForActivityTaskRequest; |
62 |
| -import com.uber.cadence.PollForActivityTaskResponse; |
63 |
| -import com.uber.cadence.PollForDecisionTaskRequest; |
64 |
| -import com.uber.cadence.PollForDecisionTaskResponse; |
65 |
| -import com.uber.cadence.QueryFailedError; |
66 |
| -import com.uber.cadence.QueryWorkflowRequest; |
67 |
| -import com.uber.cadence.QueryWorkflowResponse; |
68 |
| -import com.uber.cadence.RecordActivityTaskHeartbeatByIDRequest; |
69 |
| -import com.uber.cadence.RecordActivityTaskHeartbeatRequest; |
70 |
| -import com.uber.cadence.RecordActivityTaskHeartbeatResponse; |
71 |
| -import com.uber.cadence.RefreshWorkflowTasksRequest; |
72 |
| -import com.uber.cadence.RegisterDomainRequest; |
73 |
| -import com.uber.cadence.RequestCancelWorkflowExecutionRequest; |
74 |
| -import com.uber.cadence.ResetStickyTaskListRequest; |
75 |
| -import com.uber.cadence.ResetStickyTaskListResponse; |
76 |
| -import com.uber.cadence.ResetWorkflowExecutionRequest; |
77 |
| -import com.uber.cadence.ResetWorkflowExecutionResponse; |
78 |
| -import com.uber.cadence.RespondActivityTaskCanceledByIDRequest; |
79 |
| -import com.uber.cadence.RespondActivityTaskCanceledRequest; |
80 |
| -import com.uber.cadence.RespondActivityTaskCompletedByIDRequest; |
81 |
| -import com.uber.cadence.RespondActivityTaskCompletedRequest; |
82 |
| -import com.uber.cadence.RespondActivityTaskFailedByIDRequest; |
83 |
| -import com.uber.cadence.RespondActivityTaskFailedRequest; |
84 |
| -import com.uber.cadence.RespondDecisionTaskCompletedRequest; |
85 |
| -import com.uber.cadence.RespondDecisionTaskCompletedResponse; |
86 |
| -import com.uber.cadence.RespondDecisionTaskFailedRequest; |
87 |
| -import com.uber.cadence.RespondQueryTaskCompletedRequest; |
88 |
| -import com.uber.cadence.ServiceBusyError; |
89 |
| -import com.uber.cadence.SignalWithStartWorkflowExecutionRequest; |
90 |
| -import com.uber.cadence.SignalWorkflowExecutionRequest; |
91 |
| -import com.uber.cadence.StartWorkflowExecutionRequest; |
92 |
| -import com.uber.cadence.StartWorkflowExecutionResponse; |
93 |
| -import com.uber.cadence.TerminateWorkflowExecutionRequest; |
94 |
| -import com.uber.cadence.UpdateDomainRequest; |
95 |
| -import com.uber.cadence.UpdateDomainResponse; |
96 |
| -import com.uber.cadence.WorkflowExecutionAlreadyCompletedError; |
97 |
| -import com.uber.cadence.WorkflowExecutionAlreadyStartedError; |
98 |
| -import com.uber.cadence.WorkflowService; |
| 26 | +import com.uber.cadence.*; |
99 | 27 | import com.uber.cadence.WorkflowService.GetWorkflowExecutionHistory_result;
|
100 | 28 | import com.uber.cadence.internal.Version;
|
101 | 29 | import com.uber.cadence.internal.common.CheckedExceptionWrapper;
|
|
114 | 42 | import com.uber.tchannel.messages.ThriftRequest;
|
115 | 43 | import com.uber.tchannel.messages.ThriftResponse;
|
116 | 44 | import com.uber.tchannel.messages.generated.Meta;
|
| 45 | +import io.opentelemetry.api.GlobalOpenTelemetry; |
| 46 | +import io.opentelemetry.context.Context; |
| 47 | +import io.opentelemetry.context.propagation.TextMapPropagator; |
| 48 | +import io.opentelemetry.context.propagation.TextMapSetter; |
117 | 49 | import java.net.InetAddress;
|
118 | 50 | import java.net.InetSocketAddress;
|
119 | 51 | import java.net.UnknownHostException;
|
@@ -275,13 +207,27 @@ public CompletableFuture<Boolean> isHealthy() {
|
275 | 207 | return result;
|
276 | 208 | }
|
277 | 209 |
|
278 |
| - private <T> ThriftRequest<T> buildThriftRequest(String apiName, T body, Long rpcTimeoutOverride) { |
| 210 | + protected <T> ThriftRequest<T> buildThriftRequest( |
| 211 | + String apiName, T body, Long rpcTimeoutOverride) { |
279 | 212 | String endpoint = getEndpoint(INTERFACE_NAME, apiName);
|
280 | 213 | ThriftRequest.Builder<T> builder =
|
281 | 214 | new ThriftRequest.Builder<>(options.getServiceName(), endpoint);
|
282 | 215 | // Create a mutable hashmap for headers, as tchannel.tracing.PrefixedHeadersCarrier assumes
|
283 | 216 | // that it can call put directly to add new stuffs (e.g. traces).
|
284 | 217 | final HashMap<String, String> headers = new HashMap<>(thriftHeaders);
|
| 218 | + TextMapPropagator textMapPropagator = |
| 219 | + GlobalOpenTelemetry.getPropagators().getTextMapPropagator(); |
| 220 | + |
| 221 | + String tracingHeadersPrefix = "$tracing$"; |
| 222 | + TextMapSetter<Map<String, String>> setter = |
| 223 | + (carrier, key, value) -> { |
| 224 | + if (carrier != null) { |
| 225 | + carrier.put(tracingHeadersPrefix + key, value); |
| 226 | + } |
| 227 | + }; |
| 228 | + |
| 229 | + textMapPropagator.inject(Context.current(), headers, setter); |
| 230 | + |
285 | 231 | if (this.options.getAuthProvider() != null) {
|
286 | 232 | headers.put(
|
287 | 233 | "cadence-authorization",
|
|
0 commit comments