[ https://issues.apache.org/jira/browse/HTTPCLIENT-2232?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17602887#comment-17602887 ]
ASF subversion and git services commented on HTTPCLIENT-2232: ------------------------------------------------------------- Commit ce41bf26c4a51d8e20b4da0c820486bb6ffb2ef2 in httpcomponents-client's branch refs/heads/5.1.x from Oleg Kalnichevski [ https://gitbox.apache.org/repos/asf?p=httpcomponents-client.git;h=ce41bf26c ] HTTPCLIENT-2232: last protocol interceptrs moved at the end of the H2 protocol processing pipeline > Registering RequestInterceptorLast is misleading > ------------------------------------------------ > > Key: HTTPCLIENT-2232 > URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2232 > Project: HttpComponents HttpClient > Issue Type: Bug > Components: HttpClient (async) > Affects Versions: 5.1.3 > Reporter: Patrick Barry > Priority: Major > > > {code:java} > CloseableHttpAsyncClient client = HttpAsyncClients.custom() > .addRequestInterceptorLast(new MyRequestInterceptor()) > .build(); > client.start();{code} > We were registering our request interceptor and were trying to log out some > of the important headers we wish to see on our outgoing requests, like > transfer-encoding. We found out the hard way this header is set later in > processing, in the H2RequestContent class that is registered in the > HttpAsyncClientEventHandlerFactory and later in IOReactor. This is super > frustrating because registering something 'last' should be the last thing > that is hit before reaching out to target. Because we it is not, we do not > see the header we wish to see. We limit the headers we expose, so turning > on Wire logging or something like that is not an option for us. The way the > HttpAsyncClientBuilder is written, I do not have the option of registering my > own interceptor in HttpAsyncClientEventHandlerFactory or even providing my > own IOEventHandlerFactory. What do you guys suggest here? The only option I > see is to manually create our async client, and due to the heavy > configuration of this class, I am hoping for an alternative. FYI- I do not > need to change the outgoing request in any way, this is merely a logging > issue for us. > > {code:java} > final IOEventHandlerFactory ioEventHandlerFactory = new > HttpAsyncClientEventHandlerFactory( > new DefaultHttpProcessor(new H2RequestContent(), new > H2RequestTargetHost(), new H2RequestConnControl()), > new HandlerFactory<AsyncPushConsumer>() { > @Override > public AsyncPushConsumer create(final HttpRequest request, final > HttpContext context) throws HttpException { > return pushConsumerRegistry.get(request); > } > }, > versionPolicy != null ? versionPolicy : HttpVersionPolicy.NEGOTIATE, > h2Config != null ? h2Config : H2Config.DEFAULT, > h1Config != null ? h1Config : Http1Config.DEFAULT, > charCodingConfig != null ? charCodingConfig : > CharCodingConfig.DEFAULT, > reuseStrategyCopy); > final DefaultConnectingIOReactor ioReactor = new DefaultConnectingIOReactor( > ioEventHandlerFactory, > ioReactorConfig != null ? ioReactorConfig : IOReactorConfig.DEFAULT, > threadFactory != null ? threadFactory : new > DefaultThreadFactory("httpclient-dispatch", true), > LoggingIOSessionDecorator.INSTANCE, > ioReactorExceptionCallback != null ? ioReactorExceptionCallback : > LoggingExceptionCallback.INSTANCE, > null, > new Callback<IOSession>() { > @Override > public void execute(final IOSession ioSession) { > ioSession.enqueue(new ShutdownCommand(CloseMode.GRACEFUL), > Command.Priority.IMMEDIATE); > } > });{code} > > > > -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org