public boolean preHandle()

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;
    }