Search in sources :

Example 21 with XLog

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();
    }
}
Also used : XLog(org.apache.oozie.util.XLog) Instrumentation(org.apache.oozie.util.Instrumentation) AccessControlException(java.security.AccessControlException)

Aggregations

XLog (org.apache.oozie.util.XLog)21 IOException (java.io.IOException)7 ArrayList (java.util.ArrayList)5 URI (java.net.URI)4 URIHandlerService (org.apache.oozie.service.URIHandlerService)4 File (java.io.File)3 Calendar (java.util.Calendar)3 GregorianCalendar (java.util.GregorianCalendar)3 Configuration (org.apache.hadoop.conf.Configuration)3 CommandException (org.apache.oozie.command.CommandException)3 URIHandler (org.apache.oozie.dependency.URIHandler)3 ELEvaluator (org.apache.oozie.util.ELEvaluator)3 InputStream (java.io.InputStream)2 URISyntaxException (java.net.URISyntaxException)2 Context (org.apache.oozie.dependency.URIHandler.Context)2 Instrumentation (org.apache.oozie.util.Instrumentation)2 WorkflowException (org.apache.oozie.workflow.WorkflowException)2 FileInputStream (java.io.FileInputStream)1 FileOutputStream (java.io.FileOutputStream)1 StringReader (java.io.StringReader)1