in tchannel-crossdock/src/main/java/com/uber/tchannel/crossdock/behavior/trace/TraceBehavior.java [56:82]
private Response callDownstream(Downstream downstream) {
if (downstream == null) {
return null;
}
logger.info("Calling downstream {}", downstream);
InetAddress host = host(downstream);
int port = port(downstream);
Response response;
try {
if (downstream.getEncoding().equals(ArgScheme.JSON.getScheme())) {
response = jsonHandler.callDownstream(downstream, host, port);
} else if (downstream.getEncoding().equals(ArgScheme.THRIFT.getScheme())) {
response = thriftHandler.callDownstream(downstream, host, port);
} else {
throw new IllegalArgumentException("Unsupported encoding " + downstream.getEncoding());
}
} catch (Exception e) {
logger.error("Failed to call downstream", e);
return new Response(new ObservedSpan(e.toString(), false, e.toString()), null);
}
if (response == null) {
response = new Response(
new ObservedSpan("Downstream call failed for " + downstream, false, ""),
null);
}
return response;
}