Search in sources :

Example 1 with StartAndEnd

use of com.netflix.zuul.passport.StartAndEnd in project zuul by Netflix.

the class PassportLoggingHandler method logPassport.

private void logPassport(Channel channel) {
    // Collect attributes.
    CurrentPassport passport = CurrentPassport.fromChannel(channel);
    HttpRequestMessage request = ClientRequestReceiver.getRequestFromChannel(channel);
    HttpResponseMessage response = ClientRequestReceiver.getResponseFromChannel(channel);
    SessionContext ctx = request == null ? null : request.getContext();
    String topLevelRequestId = getRequestId(channel, ctx);
    // Do some debug logging of the Passport.
    if (LOG.isDebugEnabled()) {
        LOG.debug("State after complete. " + ", current-server-conns = " + ConnCounter.from(channel).getCurrentActiveConns() + ", current-http-reqs = " + HttpMetricsChannelHandler.getInflightRequestCountFromChannel(channel) + ", status = " + (response == null ? getRequestId(channel, ctx) : response.getStatus()) + ", nfstatus = " + String.valueOf(StatusCategoryUtils.getStatusCategory(ctx)) + ", toplevelid = " + topLevelRequestId + ", req = " + request.getInfoForLogging() + ", passport = " + String.valueOf(passport));
    }
    // Some logging of session states if certain criteria match:
    if (LOG.isInfoEnabled()) {
        if (passport.wasProxyAttempt()) {
            if (passport.findStateBackwards(PassportState.OUT_RESP_LAST_CONTENT_SENDING) == null) {
                incompleteProxySessionCounter.increment();
                LOG.info("Incorrect final state! toplevelid = " + topLevelRequestId + ", " + ChannelUtils.channelInfoForLogging(channel));
            }
        }
        if (!passport.wasProxyAttempt()) {
            if (ctx != null && !isHealthcheckRequest(request)) {
                // Why did we fail to attempt to proxy this request?
                RequestAttempts attempts = RequestAttempts.getFromSessionContext(ctx);
                LOG.debug("State after complete. " + ", context-error = " + String.valueOf(ctx.getError()) + ", current-http-reqs = " + HttpMetricsChannelHandler.getInflightRequestCountFromChannel(channel) + ", toplevelid = " + topLevelRequestId + ", req = " + request.getInfoForLogging() + ", attempts = " + String.valueOf(attempts) + ", passport = " + String.valueOf(passport));
            }
        }
        StartAndEnd inReqToOutResp = passport.findFirstStartAndLastEndStates(PassportState.IN_REQ_HEADERS_RECEIVED, PassportState.OUT_REQ_LAST_CONTENT_SENT);
        if (passport.calculateTimeBetween(inReqToOutResp) > WARN_REQ_PROCESSING_TIME_NS.get()) {
            LOG.info("Request processing took longer than threshold! toplevelid = " + topLevelRequestId + ", " + ChannelUtils.channelInfoForLogging(channel));
        }
        StartAndEnd inRespToOutResp = passport.findLastStartAndFirstEndStates(PassportState.IN_RESP_HEADERS_RECEIVED, PassportState.OUT_RESP_LAST_CONTENT_SENT);
        if (passport.calculateTimeBetween(inRespToOutResp) > WARN_RESP_PROCESSING_TIME_NS.get()) {
            LOG.info("Response processing took longer than threshold! toplevelid = " + topLevelRequestId + ", " + ChannelUtils.channelInfoForLogging(channel));
        }
    }
}
Also used : CurrentPassport(com.netflix.zuul.passport.CurrentPassport) HttpResponseMessage(com.netflix.zuul.message.http.HttpResponseMessage) HttpRequestMessage(com.netflix.zuul.message.http.HttpRequestMessage) RequestAttempts(com.netflix.zuul.niws.RequestAttempts) SessionContext(com.netflix.zuul.context.SessionContext) StartAndEnd(com.netflix.zuul.passport.StartAndEnd)

Aggregations

SessionContext (com.netflix.zuul.context.SessionContext)1 HttpRequestMessage (com.netflix.zuul.message.http.HttpRequestMessage)1 HttpResponseMessage (com.netflix.zuul.message.http.HttpResponseMessage)1 RequestAttempts (com.netflix.zuul.niws.RequestAttempts)1 CurrentPassport (com.netflix.zuul.passport.CurrentPassport)1 StartAndEnd (com.netflix.zuul.passport.StartAndEnd)1