[
https://issues.apache.org/jira/browse/HTTPCLIENT-2232?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17602885#comment-17602885
]
ASF subversion and git services commented on HTTPCLIENT-2232:
-------------------------------------------------------------
Commit 9c0575494a8de03f05f14542a03ec3ed57136418 in httpcomponents-client's
branch refs/heads/master from Oleg Kalnichevski
[ https://gitbox.apache.org/repos/asf?p=httpcomponents-client.git;h=9c0575494 ]
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: [email protected]
For additional commands, e-mail: [email protected]