protected void recordFilterCompletion()

in zuul-core/src/main/java/com/netflix/zuul/netty/filter/BaseZuulFilterRunner.java [340:389]


    protected void recordFilterCompletion(
            ExecutionStatus status,
            ZuulFilter<I, O> filter,
            long startTime,
            ZuulMessage zuulMesg,
            ZuulMessage startSnapshot) {

        SessionContext zuulCtx = zuulMesg.getContext();
        long execTimeNs = System.nanoTime() - startTime;
        long execTimeMs = execTimeNs / 1_000_000L;
        if (execTimeMs >= FILTER_EXCESSIVE_EXEC_TIME.get()) {
            registry.timer(filterExcessiveTimerId
                            .withTag("id", filter.filterName())
                            .withTag("status", status.name()))
                    .record(execTimeMs, TimeUnit.MILLISECONDS);
        }

        // Record the execution summary in context.
        switch (status) {
            case FAILED:
                if (logger.isDebugEnabled()) {
                    zuulCtx.addFilterExecutionSummary(filter.filterName(), ExecutionStatus.FAILED.name(), execTimeMs);
                }
                break;
            case SUCCESS:
                if (logger.isDebugEnabled()) {
                    zuulCtx.addFilterExecutionSummary(filter.filterName(), ExecutionStatus.SUCCESS.name(), execTimeMs);
                }
                if (startSnapshot != null) {
                    // debugRouting == true
                    Debug.addRoutingDebug(
                            zuulCtx,
                            "Filter {" + filter.filterName() + " TYPE:"
                                    + filter.filterType().toString() + " ORDER:" + filter.filterOrder()
                                    + "} Execution time = " + execTimeMs + "ms");
                    Debug.compareContextState(filter.filterName(), zuulCtx, startSnapshot.getContext());
                }
                break;
            default:
                break;
        }

        logger.debug(
                "Filter {} completed with status {}, UUID {}",
                filter.filterName(),
                status.name(),
                zuulMesg.getContext().getUUID());
        // Notify configured listener.
        usageNotifier.notify(filter, status);
    }