in opbeans/src/main/java/co/elastic/apm/opbeans/controllers/DTInterceptor.java [67:92]
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.debug("Received request to {}",request.getRequestURI());
if (random.nextFloat() <= dtProb) {
String destination = hostList[random.nextInt(hostList.length)];
log.debug("Executing remote call to {}{}",destination,request.getRequestURI());
try {
String json = restTemplate.getForObject(destination + request.getRequestURI(), String.class);
response.setContentType("application/json");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().write(json);
} catch (RestClientException e) {
Throwable cause = e.getCause();
if (cause instanceof RestCallException) {
RestCallException rce = (RestCallException) cause;
response.sendError(rce.statusCode, rce.statusText);
log.debug("Returned error {},{}",rce.statusCode, rce.statusText);
} else {
log.error("Returned unknown error 500 ",e);
response.sendError(500, "Internal error while executing remote DT call");
}
}
return false;
}
log.debug("Proceeding to local service");
return true;
}