use of org.apache.oozie.util.XLog in project oozie by apache.
the class JsonRestServlet method service.
/**
* Dispatches to super after loginfo and intrumentation handling. In case of errors dispatches error response codes
* and does error logging.
*/
@SuppressWarnings("unchecked")
protected final void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// if (Services.get().isSafeMode() && !request.getMethod().equals("GET") && !allowSafeModeChanges) {
if (Services.get().getSystemMode() != SYSTEM_MODE.NORMAL && !request.getMethod().equals("GET") && !allowSafeModeChanges) {
sendErrorResponse(response, HttpServletResponse.SC_SERVICE_UNAVAILABLE, ErrorCode.E0002.toString(), ErrorCode.E0002.getTemplate());
return;
}
Instrumentation.Cron cron = new Instrumentation.Cron();
requestCron.set(cron);
try {
cron.start();
validateRestUrl(request.getMethod(), getResourceName(request), request.getParameterMap());
XLog.Info.get().clear();
String user = getUser(request);
TOTAL_REQUESTS_SAMPLER_COUNTER.incrementAndGet();
samplerCounter.incrementAndGet();
// If trace is enabled then display the request headers
XLog log = XLog.getLog(getClass());
if (log.isTraceEnabled()) {
logHeaderInfo(request);
}
super.service(request, response);
} catch (XServletException ex) {
XLog log = XLog.getLog(getClass());
log.warn("URL[{0} {1}] error[{2}], {3}", request.getMethod(), getRequestUrl(request), ex.getErrorCode(), ex.getMessage(), ex);
request.setAttribute(AUDIT_ERROR_MESSAGE, ex.getMessage());
request.setAttribute(AUDIT_ERROR_CODE, ex.getErrorCode().toString());
request.setAttribute(AUDIT_HTTP_STATUS_CODE, ex.getHttpStatusCode());
incrCounter(INSTR_TOTAL_FAILED_REQUESTS_COUNTER, 1);
sendErrorResponse(response, ex.getHttpStatusCode(), ex.getErrorCode().toString(), ex.getMessage());
} catch (AccessControlException ex) {
XLog log = XLog.getLog(getClass());
log.error("URL[{0} {1}] error, {2}", request.getMethod(), getRequestUrl(request), ex.getMessage(), ex);
incrCounter(INSTR_TOTAL_FAILED_REQUESTS_COUNTER, 1);
sendErrorResponse(response, HttpServletResponse.SC_UNAUTHORIZED, ErrorCode.E1400.toString(), ex.getMessage());
} catch (IllegalArgumentException ex) {
XLog log = XLog.getLog(getClass());
log.warn("URL[{0} {1}] user error, {2}", request.getMethod(), getRequestUrl(request), ex.getMessage(), ex);
incrCounter(INSTR_TOTAL_FAILED_REQUESTS_COUNTER, 1);
sendErrorResponse(response, HttpServletResponse.SC_BAD_REQUEST, ErrorCode.E1603.toString(), ex.getMessage());
} catch (RuntimeException ex) {
XLog log = XLog.getLog(getClass());
log.error("URL[{0} {1}] error, {2}", request.getMethod(), getRequestUrl(request), ex.getMessage(), ex);
incrCounter(INSTR_TOTAL_FAILED_REQUESTS_COUNTER, 1);
throw ex;
} finally {
logAuditInfo(request);
TOTAL_REQUESTS_SAMPLER_COUNTER.decrementAndGet();
incrCounter(INSTR_TOTAL_REQUESTS_COUNTER, 1);
samplerCounter.decrementAndGet();
XLog.Info.remove();
cron.stop();
// TODO
incrCounter(instrumentationName, 1);
incrCounter(instrumentationName + "-" + request.getMethod(), 1);
addCron(instrumentationName, cron);
addCron(instrumentationName + "-" + request.getMethod(), cron);
requestCron.remove();
}
}
Aggregations