protected String getRequestId(Channel channel, SessionContext ctx) { return ctx == null ? "-" : ctx.getUUID(); } }
protected String getRequestId(Channel channel, SessionContext ctx) { return ctx == null ? "-" : ctx.getUUID(); } }
@Override protected void configure() { // sample specific bindings bind(BaseServerStartup.class).to(SampleServerStartup.class); // use provided basic netty origin manager bind(OriginManager.class).to(BasicNettyOriginManager.class); // zuul filter loading install(new ZuulFiltersModule()); bind(FilterFileManager.class).asEagerSingleton(); // general server bindings bind(ServerStatusManager.class); // health/discovery status bind(SessionContextDecorator.class).to(ZuulSessionContextDecorator.class); // decorate new sessions when requests come in bind(Registry.class).to(DefaultRegistry.class); // atlas metrics registry bind(RequestCompleteHandler.class).to(BasicRequestCompleteHandler.class); // metrics post-request completion bind(AbstractDiscoveryClientOptionalArgs.class).to(DiscoveryClient.DiscoveryClientOptionalArgs.class); // discovery client bind(RequestMetricsPublisher.class).to(BasicRequestMetricsPublisher.class); // timings publisher // access logger, including request ID generator bind(AccessLogPublisher.class).toInstance(new AccessLogPublisher("ACCESS", (channel, httpRequest) -> ClientRequestReceiver.getRequestFromChannel(channel).getContext().getUUID())); } }
@Override public void filter(final HttpRequestMessage zuulReq) { if (zuulReq.getContext().isCancelled()) { zuulReq.disposeBufferedBody(); logger.debug("Request was cancelled, UUID {}", zuulReq.getContext().getUUID()); return; } final String endpointName = getEndPointName(zuulReq.getContext()); try { Preconditions.checkNotNull(zuulReq, "input message"); final ZuulFilter<HttpRequestMessage, HttpResponseMessage> endpoint = getEndpoint(endpointName, zuulReq); logger.debug("Got endpoint {}, UUID {}", endpoint.filterName(), zuulReq.getContext().getUUID()); setEndpoint(zuulReq, endpoint); final HttpResponseMessage zuulResp = filter(endpoint, zuulReq); if ((zuulResp != null)&&(! (endpoint instanceof ProxyEndpoint))) { //EdgeProxyEndpoint calls invokeNextStage internally logger.debug("Endpoint calling invokeNextStage, UUID {}", zuulReq.getContext().getUUID()); invokeNextStage(zuulResp); } } catch (Exception ex) { handleException(zuulReq, endpointName, ex); } }
zuulCtx.getUUID(), clientRequest.uri(), reason.name(), ChannelUtils.channelInfoForLogging(ctx.channel()));
LOG.error("Error while connecting to origin, UUID {} " + context.getUUID(), ex); storeAndLogOriginRequestInfo(); if (promise != null && ! promise.isDone()) {
@Override protected void configure() { // sample specific bindings bind(BaseServerStartup.class).to(SampleServerStartup.class); // use provided basic netty origin manager bind(OriginManager.class).to(BasicNettyOriginManager.class); // zuul filter loading install(new ZuulFiltersModule()); bind(FilterFileManager.class).asEagerSingleton(); // general server bindings bind(ServerStatusManager.class); // health/discovery status bind(SessionContextDecorator.class).to(ZuulSessionContextDecorator.class); // decorate new sessions when requests come in bind(Registry.class).to(DefaultRegistry.class); // atlas metrics registry bind(RequestCompleteHandler.class).to(BasicRequestCompleteHandler.class); // metrics post-request completion bind(AbstractDiscoveryClientOptionalArgs.class).to(DiscoveryClient.DiscoveryClientOptionalArgs.class); // discovery client bind(RequestMetricsPublisher.class).to(BasicRequestMetricsPublisher.class); // timings publisher // access logger, including request ID generator bind(AccessLogPublisher.class).toInstance(new AccessLogPublisher("ACCESS", (channel, httpRequest) -> ClientRequestReceiver.getRequestFromChannel(channel).getContext().getUUID())); } }
@Override public void filter(final HttpRequestMessage zuulReq) { if (zuulReq.getContext().isCancelled()) { zuulReq.disposeBufferedBody(); logger.debug("Request was cancelled, UUID {}", zuulReq.getContext().getUUID()); return; } final String endpointName = getEndPointName(zuulReq.getContext()); try { Preconditions.checkNotNull(zuulReq, "input message"); final ZuulFilter<HttpRequestMessage, HttpResponseMessage> endpoint = getEndpoint(endpointName, zuulReq); logger.debug("Got endpoint {}, UUID {}", endpoint.filterName(), zuulReq.getContext().getUUID()); setEndpoint(zuulReq, endpoint); final HttpResponseMessage zuulResp = filter(endpoint, zuulReq); if ((zuulResp != null)&&(! (endpoint instanceof ProxyEndpoint))) { //EdgeProxyEndpoint calls invokeNextStage internally logger.debug("Endpoint calling invokeNextStage, UUID {}", zuulReq.getContext().getUUID()); invokeNextStage(zuulResp); } } catch (Exception ex) { handleException(zuulReq, endpointName, ex); } }
protected void recordFilterCompletion(final ExecutionStatus status, final ZuulFilter<I, O> filter, long startTime, final ZuulMessage zuulMesg, final ZuulMessage startSnapshot) { final SessionContext zuulCtx = zuulMesg.getContext(); final long execTime = System.currentTimeMillis() - startTime; if (execTime >= FILTER_EXCESSIVE_EXEC_TIME.get()) { LOG.warn("Filter {} took {} ms to complete! status = {}", filter.filterName(), execTime, status.name()); } // Record the execution summary in context. switch (status) { case FAILED: zuulCtx.addFilterExecutionSummary(filter.filterName(), FAILED.name(), execTime); break; case SUCCESS: zuulCtx.addFilterExecutionSummary(filter.filterName(), SUCCESS.name(), execTime); if (startSnapshot != null) { //debugRouting == true Debug.addRoutingDebug(zuulCtx, "Filter {" + filter.filterName() + " TYPE:" + filter.filterType().toString() + " ORDER:" + filter.filterOrder() + "} Execution time = " + execTime + "ms"); Debug.compareContextState(filter.filterName(), zuulCtx, startSnapshot.getContext()); } break; default: break; } LOG.debug("Filter {} completed with status {}, UUID {}", filter.filterName(), status.name(), zuulMesg.getContext().getUUID()); // Notify configured listener. usageNotifier.notify(filter, status); }
zuulCtx.getUUID(), clientRequest.uri(), reason.name(), ChannelUtils.channelInfoForLogging(ctx.channel()));
LOG.error("Error while connecting to origin, UUID {} " + context.getUUID(), ex); storeAndLogOriginRequestInfo(); if (promise != null && ! promise.isDone()) {
LOG.debug("Filter {} waiting for body, UUID {}", filter.filterName(), inMesg.getContext().getUUID()); return null; //wait for whole body to be buffered
protected void recordFilterCompletion(final ExecutionStatus status, final ZuulFilter<I, O> filter, long startTime, final ZuulMessage zuulMesg, final ZuulMessage startSnapshot) { final SessionContext zuulCtx = zuulMesg.getContext(); final long execTime = System.currentTimeMillis() - startTime; if (execTime >= FILTER_EXCESSIVE_EXEC_TIME.get()) { LOG.warn("Filter {} took {} ms to complete! status = {}", filter.filterName(), execTime, status.name()); } // Record the execution summary in context. switch (status) { case FAILED: zuulCtx.addFilterExecutionSummary(filter.filterName(), FAILED.name(), execTime); break; case SUCCESS: zuulCtx.addFilterExecutionSummary(filter.filterName(), SUCCESS.name(), execTime); if (startSnapshot != null) { //debugRouting == true Debug.addRoutingDebug(zuulCtx, "Filter {" + filter.filterName() + " TYPE:" + filter.filterType().toString() + " ORDER:" + filter.filterOrder() + "} Execution time = " + execTime + "ms"); Debug.compareContextState(filter.filterName(), zuulCtx, startSnapshot.getContext()); } break; default: break; } LOG.debug("Filter {} completed with status {}, UUID {}", filter.filterName(), status.name(), zuulMesg.getContext().getUUID()); // Notify configured listener. usageNotifier.notify(filter, status); }
LOG.debug("Filter {} waiting for body, UUID {}", filter.filterName(), inMesg.getContext().getUUID()); return null; //wait for whole body to be buffered
protected String getRequestId(Channel channel, SessionContext ctx) { return ctx == null ? "-" : ctx.getUUID(); } }
@Override public void filter(final HttpRequestMessage zuulReq) { if (zuulReq.getContext().isCancelled()) { zuulReq.disposeBufferedBody(); logger.debug("Request was cancelled, UUID {}", zuulReq.getContext().getUUID()); return; } final String endpointName = getEndPointName(zuulReq.getContext()); try { Preconditions.checkNotNull(zuulReq, "input message"); final ZuulFilter<HttpRequestMessage, HttpResponseMessage> endpoint = getEndpoint(endpointName, zuulReq); logger.debug("Got endpoint {}, UUID {}", endpoint.filterName(), zuulReq.getContext().getUUID()); setEndpoint(zuulReq, endpoint); final HttpResponseMessage zuulResp = filter(endpoint, zuulReq); if ((zuulResp != null)&&(! (endpoint instanceof ProxyEndpoint))) { //EdgeProxyEndpoint calls invokeNextStage internally logger.debug("Endpoint calling invokeNextStage, UUID {}", zuulReq.getContext().getUUID()); invokeNextStage(zuulResp); } } catch (Exception ex) { handleException(zuulReq, endpointName, ex); } }
zuulCtx.getUUID(), clientRequest.uri(), reason.name(), ChannelUtils.channelInfoForLogging(ctx.channel()));
private void proxyRequestToOrigin() { Promise<PooledConnection> promise = null; try { attemptNum += 1; requestStat = createRequestStat(); origin.preRequestChecks(zuulRequest); concurrentReqCount++; promise = origin.connectToOrigin(zuulRequest, channelCtx.channel().eventLoop(), attemptNum, passport, chosenServer); logOriginRequestInfo(); currentRequestAttempt = origin.newRequestAttempt(chosenServer.get(), context, attemptNum); requestAttempts.add(currentRequestAttempt); passport.add(PassportState.ORIGIN_CONN_ACQUIRE_START); if (promise.isDone()) { operationComplete(promise); } else { promise.addListener(this); } } catch (Exception ex) { LOG.error("Error while connecting to origin, UUID {} " + context.getUUID(), ex); logOriginRequestInfo(); if (promise != null && ! promise.isDone()) { promise.setFailure(ex); } else { errorFromOrigin(ex); } } }
protected void recordFilterCompletion(final ExecutionStatus status, final ZuulFilter<I, O> filter, long startTime, final ZuulMessage zuulMesg, final ZuulMessage startSnapshot) { final SessionContext zuulCtx = zuulMesg.getContext(); final long execTime = System.currentTimeMillis() - startTime; // Record the execution summary in context. switch (status) { case FAILED: zuulCtx.addFilterExecutionSummary(filter.filterName(), FAILED.name(), execTime); break; case SUCCESS: zuulCtx.addFilterExecutionSummary(filter.filterName(), SUCCESS.name(), execTime); if (startSnapshot != null) { //debugRouting == true Debug.addRoutingDebug(zuulCtx, "Filter {" + filter.filterName() + " TYPE:" + filter.filterType().toString() + " ORDER:" + filter.filterOrder() + "} Execution time = " + execTime + "ms"); Debug.compareContextState(filter.filterName(), zuulCtx, startSnapshot.getContext()); } break; default: break; } LOG.debug("Filter {} completed with status {}, UUID {}", filter.filterName(), status.name(), zuulMesg.getContext().getUUID()); // Notify configured listener. usageNotifier.notify(filter, status); }
LOG.debug("Filter {} waiting for body, UUID {}", filter.filterName(), inMesg.getContext().getUUID()); return null; //wait for whole body to be buffered