public String format(LiveHttpRequest request) { return String.format(format, request == null ? "" : request.id()); } }
public void logRequest(LiveHttpRequest request, Origin origin, boolean secure) { if (request == null) { logger.warn("requestId=N/A, request=null, origin={}", origin); } else { logger.info("requestId={}, secure={}, request={}", new Object[] {request.id(), secure, information(request, origin, longFormatEnabled)}); } }
public void logRequest(LiveHttpRequest request, Origin origin) { if (request == null) { logger.warn("requestId=N/A, request=null, origin={}", origin); } else { logger.info("requestId={}, request={}", new Object[] {request.id(), information(request, origin, longFormatEnabled)}); } }
@Override public void onError(Throwable cause) { eventProcessor.submit(new ResponseObservableErrorEvent(ctx, cause, request.id())); }
@Override public void onCompleted() { eventProcessor.submit(new ResponseObservableCompletedEvent(ctx, request.id())); }
private State onResponseWriteError(ChannelHandlerContext ctx, Throwable cause) { metrics.counter("requests.cancelled.responseWriteError").inc(); cancelSubscription(); statsSink.onTerminate(ongoingRequest.id()); tracker.endTrack(ongoingRequest); ctx.channel().writeAndFlush(EMPTY_LAST_CONTENT).addListener(CLOSE); httpErrorStatusListener.proxyWriteFailure(ongoingRequest, ongoingResponse, cause); return TERMINATED; }
private State onChannelExceptionWhenSendingResponse(ChannelHandlerContext ctx, Throwable cause) { metrics.counter("requests.cancelled.channelExceptionWhileSendingResponse").inc(); cancelSubscription(); statsSink.onTerminate(ongoingRequest.id()); tracker.endTrack(ongoingRequest); ctx.channel().writeAndFlush(EMPTY_LAST_CONTENT).addListener(CLOSE); httpErrorStatusListener.proxyErrorOccurred(cause); return TERMINATED; }
private State onChannelInactive() { metrics.counter("requests.cancelled.channelInactive").inc(); if (future != null) { LOGGER.warn(warningMessage("message=onChannelInactive")); future.cancel(false); } cancelSubscription(); statsSink.onTerminate(ongoingRequest.id()); tracker.endTrack(ongoingRequest); return TERMINATED; }
private State onResponseObservableCompletedTooSoon(ChannelHandlerContext ctx, Object requestId) { metrics.counter("requests.cancelled.observableCompletedTooSoon").inc(); if (!ongoingRequest.id().equals(requestId)) { return this.state(); } cancelSubscription(); statsSink.onTerminate(ongoingRequest.id()); tracker.endTrack(ongoingRequest); responseWriterFactory.create(ctx).write(LiveHttpResponse.response(INTERNAL_SERVER_ERROR).build()) .handle((dontCare, ignore) -> ctx.close()); return TERMINATED; }
private State onSpuriousRequest(LiveHttpRequest request, State state) { LOGGER.warn(warningMessage("message='Spurious request received while handling another request', spuriousRequest=" + request)); metrics.counter("requests.cancelled.spuriousRequest").inc(); statsSink.onTerminate(ongoingRequest.id()); tracker.endTrack(ongoingRequest); cancelSubscription(); return TERMINATED; }
private State onResponseSentAfterClientClosed(ChannelHandlerContext ctx) { statsSink.onComplete(ongoingRequest.id(), ongoingResponse.status().code()); tracker.endTrack(ongoingRequest); ongoingRequest = null; ctx.close(); return TERMINATED; }
private State onChannelExceptionWhenWaitingForResponse(ChannelHandlerContext ctx, Throwable cause) { metrics.counter("requests.cancelled.channelExceptionWhileWaitingForResponse").inc(); statsSink.onTerminate(ongoingRequest.id()); tracker.endTrack(ongoingRequest); cancelSubscription(); return handleChannelException(ctx, cause); }
/** * Creates a new {@link Builder} from streaming request and a content byte array. * * @param request a streaming HTTP request object * @param body an HTTP body content array */ public Builder(LiveHttpRequest request, byte[] body) { this.id = request.id(); this.method = request.method(); this.url = request.url(); this.version = request.version(); this.headers = request.headers().newBuilder(); this.body = body; }
private LiveHttpRequest enrich(LiveHttpRequest request, Context context) { LiveHttpRequest.Transformer builder = request.newBuilder(); xForwardedFor(request, context) .ifPresent(headerValue -> builder.header(X_FORWARDED_FOR, headerValue)); return builder .header(requestIdHeaderName, request.id()) .header(X_FORWARDED_PROTO, xForwardedProto(request, context.isSecure())) .build(); }
Builder(LiveHttpRequest request) { this.id = request.id(); this.method = request.method(); this.url = request.url(); this.version = request.version(); this.headers = request.headers().newBuilder(); this.body = request.body(); }
@Test public void transformsId() { LiveHttpRequest request = LiveHttpRequest.get("/").id("abc").build() .newBuilder() .id("xyz") .build(); assertEquals(request.id(), "xyz"); }
/** * Creates a new {@link Builder} from an existing request with a new body content stream. * * @param request a HTTP request object * @param contentStream a body content stream */ public Builder(LiveHttpRequest request, ByteStream contentStream) { this.id = request.id(); this.method = httpMethod(request.method().name()); this.url = request.url(); this.version = httpVersion(request.version().toString()); this.headers = request.headers().newBuilder(); this.body = body; }