I have an app that for a library needs to run on JDK 1.8_252, using Spring 2.3.x with Spring Webflux for WebClient and Apache HttpCore5,
I have the following setup:
@Slf4j
@Configuration
public class WebClientConfig {
@Autowired
private Settings settings;
@Bean
CloseableHttpAsyncClient httpClient() {
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(Timeout.ofMilliseconds(Long.parseLong(settings.getConnectionTimeout())))
.setConnectionRequestTimeout(Timeout.ofMilliseconds(Integer.valueOf(settings.getConnectionReadTimeout())))
.setResponseTimeout(Timeout.ofMilliseconds(Long.parseLong(settings.getSocketTimeout())))
.build();
log.debug("requestConfig: {}", requestConfig);
PoolingAsyncClientConnectionManager poolingConnManager = new PoolingAsyncClientConnectionManager();
poolingConnManager.setDefaultMaxPerRoute(settings.getMaxPerRoute());
poolingConnManager.setMaxTotal(settings.getMaxTotal());
log.debug("poolingConnManager: {}", poolingConnManager);
HttpHost httpProxy = new HttpHost(settings.getProxyHost(), Integer.valueOf(settings.getProxyPort()));
DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(httpProxy);
log.debug("routePlanner: {}, proxyEnabled?: {}", routePlanner, settings.isOtpEnableProxy());
HttpAsyncClientBuilder httpClientBuilder = HttpAsyncClients.custom()
.setConnectionManager(poolingConnManager)
.setConnectionManagerShared(true)
.setDefaultRequestConfig(requestConfig);
if (settings.isEnableProxy())
httpClientBuilder.setProxy(httpProxy); // httpClientBuilder.setRoutePlanner(routePlanner);
httpClientBuilder.setConnectionReuseStrategy((request, response, context) -> false);
log.debug("httpClientBuilder: {}", httpClientBuilder);
CloseableHttpAsyncClient httpClient = httpClientBuilder.build();
log.debug("httpClient: {}", httpClient);
return httpClient;
}
@Bean("webClient")
WebClient webClient(CloseableHttpAsyncClient httpAsyncClient) {
return WebClient.builder()
.clientConnector(new HttpComponentsClientHttpConnector(httpAsyncClient))
.filter(this.logRequest())
.filter(this.logResponse())
.build();
}
...
}
I have tried setting .setProxy() or .setRoutePlanner(), and either way, when I am making the request, I see the following exception: (sensitive IP information edited out)
2023-06-08T23:51:19.915-0400 DEBUG org.apache.hc.core5.reactor.IOSessionImpl:223 - c-0000000000[ACTIVE][rc:c] protocol upgrade class org.apache.hc.core5.http2.impl.nio.ClientHttpProtocolNegotiator
2023-06-08T23:51:19.917-0400 DEBUG org.apache.hc.client5.http.impl.nio.MultihomeIOSessionRequester:146 - http://${proxy.host}:${proxy.port} connected c-0000000000 /${host.ip}:${host.port}->${proxy.host}/${ip}:${proxy.port}
2023-06-08T23:51:19.920-0400 DEBUG org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManager:410 - ep-0000000001 connected c-0000000000
2023-06-08T23:51:19.920-0400 DEBUG org.apache.hc.client5.http.impl.async.InternalHttpAsyncClient:221 - ep-0000000001 endpoint connected
2023-06-08T23:51:19.921-0400 DEBUG org.apache.hc.client5.http.impl.async.AsyncConnectExec:228 - ex-0000000001 connected to proxy
2023-06-08T23:51:19.921-0400 DEBUG org.apache.hc.client5.http.impl.async.AsyncConnectExec:251 - ex-0000000001 create tunnel
2023-06-08T23:51:19.923-0400 DEBUG org.apache.hc.client5.http.impl.async.HttpAsyncMainClientExec:101 - ex-0000000001 executing CONNECT ${request.host}:${request.port} HTTP/1.1
2023-06-08T23:51:19.925-0400 DEBUG org.apache.hc.client5.http.impl.async.InternalHttpAsyncClient:255 - ep-0000000001 start execution ex-0000000001
2023-06-08T23:51:19.925-0400 DEBUG org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManager:598 - ep-0000000001 executing exchange ex-0000000001 over c-0000000000
2023-06-08T23:51:19.927-0400 DEBUG org.apache.hc.client5.http.impl.nio.DefaultManagedAsyncClientConnection:173 - c-0000000000 RequestExecutionCommand with NORMAL priority
2023-06-08T23:51:19.927-0400 DEBUG org.apache.hc.core5.reactor.IOSessionImpl:83 - c-0000000000[ACTIVE][rwc:c] Enqueued RequestExecutionCommand with priority IMMEDIATE
2023-06-08T23:51:19.927-0400 DEBUG org.apache.hc.core5.reactor.IOSessionImpl:146 - c-0000000000[ACTIVE][rw:c] Event cleared [c]
2023-06-08T23:51:19.941-0400 DEBUG org.apache.hc.core5.reactor.IOSessionImpl:223 - c-0000000000[ACTIVE][rw:c] protocol upgrade class org.apache.hc.core5.http.impl.nio.ClientHttp1IOEventHandler
2023-06-08T23:51:19.943-0400 DEBUG org.apache.hc.client5.http.impl.async.HttpAsyncMainClientExec:80 - ex-0000000001 send request CONNECT ${request.host}:8443 HTTP/1.1, null entity
2023-06-08T23:51:19.944-0400 DEBUG org.apache.hc.client5.http.headers:124 - c-0000000000 >> CONNECT ${request.host}:${request.port} HTTP/1.1
2023-06-08T23:51:19.944-0400 DEBUG org.apache.hc.client5.http.headers:126 - c-0000000000 >> Host: ${request.host}:${request.port}
2023-06-08T23:51:19.944-0400 DEBUG org.apache.hc.client5.http.headers:126 - c-0000000000 >> User-Agent: Apache-HttpAsyncClient/5.1.4 (Java/1.8.0_252)
2023-06-08T23:51:19.945-0400 DEBUG org.apache.hc.core5.reactor.IOSessionImpl:321 - c-0000000000[ACTIVE][rw:c] 142 bytes written
2023-06-08T23:51:19.945-0400 DEBUG org.apache.hc.client5.http.wire:297 - c-0000000000[ACTIVE][rw:c] >> CNNECT ...
2023-06-08T23:51:19.946-0400 DEBUG org.apache.hc.core5.reactor.IOSessionImpl:138 - c-0000000000[ACTIVE][rw:c] Event set [w]
2023-06-08T23:51:19.946-0400 DEBUG org.apache.hc.core5.reactor.IOSessionImpl:146 - c-0000000000[ACTIVE][r:c] Event cleared [w]
2023-06-08T23:51:19.981-0400 DEBUG org.apache.hc.core5.reactor.IOSessionImpl:305 - c-0000000000[ACTIVE][r:r] 39 bytes read
2023-06-08T23:51:19.981-0400 DEBUG org.apache.hc.client5.http.wire:297 - c-0000000000[ACTIVE][r:r] << HTTP/1.1 200 Con 48 54 54 50 2f 31 2e 31 20 32 30 30 20 43 6f 6e
2023-06-08T23:51:19.981-0400 DEBUG org.apache.hc.client5.http.wire:297 - c-0000000000[ACTIVE][r:r] << nection establis 6e 65 63 74 69 6f 6e 20 65 73 74 61 62 6c 69 73
2023-06-08T23:51:19.981-0400 DEBUG org.apache.hc.client5.http.wire:297 - c-0000000000[ACTIVE][r:r] << hed 68 65 64 0d 0a 0d 0a
2023-06-08T23:51:19.984-0400 DEBUG org.apache.hc.client5.http.headers:134 - c-0000000000 << HTTP/1.1 200 Connection established
2023-06-08T23:51:19.984-0400 DEBUG org.apache.hc.core5.reactor.IOSessionImpl:171 - c-0000000000[ACTIVE][r:r] Close GRACEFUL
2023-06-08T23:51:19.985-0400 DEBUG org.apache.hc.client5.http.impl.async.HttpAsyncMainClientExec:149 - ex-0000000001 consume response HTTP/1.1 200 Connection established, null entity
2023-06-08T23:51:19.986-0400 DEBUG org.apache.hc.client5.http.impl.nio.DefaultManagedAsyncClientConnection:81 - c-0000000000 Shutdown connection GRACEFUL
2023-06-08T23:51:19.986-0400 DEBUG org.apache.hc.client5.http.impl.async.AsyncConnectExec:273 - ex-0000000001 proxy disconnected
2023-06-08T23:51:19.986-0400 DEBUG org.apache.hc.client5.http.impl.async.AsyncConnectExec:290 - ex-0000000001 tunnel to target created
2023-06-08T23:51:19.986-0400 DEBUG org.apache.hc.client5.http.impl.async.HttpAsyncMainClientExec:189 - ex-0000000001 execution failed: No tunnel unless connected
2023-06-08T23:51:19.986-0400 DEBUG org.apache.hc.client5.http.impl.async.InternalAbstractHttpAsyncClient:338 - ex-0000000001 request failed: No tunnel unless connected
2023-06-08T23:51:19.987-0400 DEBUG org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManager:562 - ep-0000000001 close IMMEDIATE
2023-06-08T23:51:19.987-0400 DEBUG org.apache.hc.client5.http.impl.async.InternalHttpAsyncClient:136 - ep-0000000001 endpoint closed
2023-06-08T23:51:19.987-0400 DEBUG org.apache.hc.client5.http.impl.async.InternalHttpAsyncClient:140 - ep-0000000001 discarding endpoint
2023-06-08T23:51:19.987-0400 DEBUG org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManager:344 - ep-0000000001 releasing endpoint
2023-06-08T23:51:19.987-0400 DEBUG org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManager:369 - ep-0000000001 connection released [route: {tls}->http://${proxy.host}:${proxy.port}->https://${request.host}:${request.port}][total available: 0; route allocated: 0 of 10; total allocated: 0 of 20]
2023-06-08T23:51:20.008-0400 uuid: [U0100617] WARN org.apache.cxf.phase.PhaseInterceptorChain:475 - Application {http://.../}EndpointImpl has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: No tunnel unless connected; nested exception is java.lang.IllegalStateException: No tunnel unless connected
at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:162) ~[cxf-core-3.3.1.jar!/:3.3.1]
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:128) ~[cxf-core-3.3.1.jar!/:3.3.1]
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:193) ~[cxf-rt-frontend-jaxrs-3.3.1.jar!/:3.3.1]
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:103) ~[cxf-rt-frontend-jaxrs-3.3.1.jar!/:3.3.1]
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59) ~[cxf-core-3.3.1.jar!/:3.3.1]
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96) ~[cxf-core-3.3.1.jar!/:3.3.1]
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) [cxf-core-3.3.1.jar!/:3.3.1]
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) [cxf-core-3.3.1.jar!/:3.3.1]
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267) [cxf-rt-transports-http-3.3.1.jar!/:3.3.1]
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234) [cxf-rt-transports-http-3.3.1.jar!/:3.3.1]
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208) [cxf-rt-transports-http-3.3.1.jar!/:3.3.1]
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160) [cxf-rt-transports-http-3.3.1.jar!/:3.3.1]
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:216) [cxf-rt-transports-http-3.3.1.jar!/:3.3.1]
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:301) [cxf-rt-transports-http-3.3.1.jar!/:3.3.1]
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:220) [cxf-rt-transports-http-3.3.1.jar!/:3.3.1]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:276) [cxf-rt-transports-http-3.3.1.jar!/:3.3.1]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-embed-websocket-9.0.48.jar!/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) [tomcat-embed-core-9.0.48.jar!/:?]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) [spring-web-5.3.27.jar!/:5.3.27]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.27.jar!/:5.3.27]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) [tomcat-embed-core-9.0.48.jar!/:?]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) [spring-web-5.3.27.jar!/:5.3.27]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.27.jar!/:5.3.27]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) [tomcat-embed-core-9.0.48.jar!/:?]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) [spring-web-5.3.27.jar!/:5.3.27]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.27.jar!/:5.3.27]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723) [tomcat-embed-core-9.0.48.jar!/:?]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.48.jar!/:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_252]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_252]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.48.jar!/:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
Caused by: org.springframework.web.reactive.function.client.WebClientRequestException: No tunnel unless connected; nested exception is java.lang.IllegalStateException: No tunnel unless connected
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141) ~[spring-webflux-5.3.27.jar!/:5.3.27]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
|_ checkpoint ⇢ Request to POST https://${request.host}:${request.port}/AdaptiveAuthentication/services/AdaptiveAuthentication [DefaultWebClient]
Stack trace:
at org.springframework.web.reactive.function.client.ExchangeFunctions$DefaultExchangeFunction.lambda$wrapException$9(ExchangeFunctions.java:141) ~[spring-webflux-5.3.27.jar!/:5.3.27]
at reactor.core.publisher.MonoErrorSupplied.subscribe(MonoErrorSupplied.java:70) ~[reactor-core-3.4.7.jar!/:3.4.7]
at reactor.core.publisher.Mono.subscribe(Mono.java:4150) ~[reactor-core-3.4.7.jar!/:3.4.7]
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) ~[reactor-core-3.4.7.jar!/:3.4.7]
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:221) ~[reactor-core-3.4.7.jar!/:3.4.7]
at reactor.core.publisher.FluxPeek$PeekSubscriber.onError(FluxPeek.java:221) ~[reactor-core-3.4.7.jar!/:3.4.7]
at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:270) ~[reactor-core-3.4.7.jar!/:3.4.7]
at reactor.core.publisher.MonoCreate$DefaultMonoSink.error(MonoCreate.java:189) ~[reactor-core-3.4.7.jar!/:3.4.7]
at org.springframework.http.client.reactive.HttpComponentsClientHttpConnector$MonoFutureCallbackAdapter.failed(HttpComponentsClientHttpConnector.java:158) ~[spring-web-5.3.27.jar!/:5.3.27]
at org.apache.hc.core5.concurrent.BasicFuture.failed(BasicFuture.java:138) ~[httpcore5-5.1.1.jar!/:5.1.1]
at org.apache.hc.core5.reactive.ReactiveResponseConsumer.failed(ReactiveResponseConsumer.java:141) ~[httpcore5-reactive-5.1.5.jar!/:5.1.5]
at org.apache.hc.client5.http.impl.async.InternalAbstractHttpAsyncClient$1$3.failed(InternalAbstractHttpAsyncClient.java:342) ~[httpclient5-5.1.4.jar!/:5.1.4]
at org.apache.hc.client5.http.impl.async.AsyncRedirectExec$1.failed(AsyncRedirectExec.java:246) ~[httpclient5-5.1.4.jar!/:5.1.4]
at org.apache.hc.client5.http.impl.async.AsyncHttpRequestRetryExec$1.failed(AsyncHttpRequestRetryExec.java:167) ~[httpclient5-5.1.4.jar!/:5.1.4]
at org.apache.hc.client5.http.impl.async.AsyncProtocolExec$1.failed(AsyncProtocolExec.java:281) ~[httpclient5-5.1.4.jar!/:5.1.4]
at org.apache.hc.client5.http.impl.async.AsyncConnectExec$4.failed(AsyncConnectExec.java:300) ~[httpclient5-5.1.4.jar!/:5.1.4]
at org.apache.hc.client5.http.impl.async.AsyncConnectExec$5.failed(AsyncConnectExec.java:404) ~[httpclient5-5.1.4.jar!/:5.1.4]
at org.apache.hc.client5.http.impl.async.HttpAsyncMainClientExec$1.failed(HttpAsyncMainClientExec.java:124) ~[httpclient5-5.1.4.jar!/:5.1.4]
at org.apache.hc.client5.http.impl.async.LoggingAsyncClientExchangeHandler.failed(LoggingAsyncClientExchangeHandler.java:191) ~[httpclient5-5.1.4.jar!/:5.1.4]
at org.apache.hc.core5.http.impl.nio.ClientHttp1StreamHandler.failed(ClientHttp1StreamHandler.java:295) ~[httpcore5-5.1.1.jar!/:5.1.1]
at org.apache.hc.core5.http.impl.nio.ClientHttp1StreamDuplexer.terminate(ClientHttp1StreamDuplexer.java:181) ~[httpcore5-5.1.1.jar!/:5.1.1]
at org.apache.hc.core5.http.impl.nio.AbstractHttp1StreamDuplexer.shutdownSession(AbstractHttp1StreamDuplexer.java:156) ~[httpcore5-5.1.1.jar!/:5.1.1]
at org.apache.hc.core5.http.impl.nio.AbstractHttp1StreamDuplexer.onException(AbstractHttp1StreamDuplexer.java:395) ~[httpcore5-5.1.1.jar!/:5.1.1]
at org.apache.hc.core5.http.impl.nio.AbstractHttp1IOEventHandler.exception(AbstractHttp1IOEventHandler.java:90) ~[httpcore5-5.1.1.jar!/:5.1.1]
at org.apache.hc.core5.http.impl.nio.ClientHttp1IOEventHandler.exception(ClientHttp1IOEventHandler.java:39) ~[httpcore5-5.1.1.jar!/:5.1.1]
at org.apache.hc.client5.http.impl.async.LoggingIOSession$1.exception(LoggingIOSession.java:253) ~[httpclient5-5.1.4.jar!/:5.1.4]
at org.apache.hc.core5.reactor.InternalDataChannel.onException(InternalDataChannel.java:169) ~[httpcore5-5.1.1.jar!/:5.1.1]
at org.apache.hc.core5.reactor.InternalChannel.handleIOEvent(InternalChannel.java:55) ~[httpcore5-5.1.1.jar!/:5.1.1]
at org.apache.hc.core5.reactor.SingleCoreIOReactor.processEvents(SingleCoreIOReactor.java:178) ~[httpcore5-5.1.1.jar!/:5.1.1]
at org.apache.hc.core5.reactor.SingleCoreIOReactor.doExecute(SingleCoreIOReactor.java:127) ~[httpcore5-5.1.1.jar!/:5.1.1]
at org.apache.hc.core5.reactor.AbstractSingleCoreIOReactor.execute(AbstractSingleCoreIOReactor.java:85) ~[httpcore5-5.1.1.jar!/:5.1.1]
at org.apache.hc.core5.reactor.IOReactorWorker.run(IOReactorWorker.java:44) ~[httpcore5-5.1.1.jar!/:5.1.1]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
Suppressed: java.lang.Exception: #block terminated with an error
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:99) ~[reactor-core-3.4.7.jar!/:3.4.7]
at reactor.core.publisher.Mono.block(Mono.java:1703) ~[reactor-core-3.4.7.jar!/:3.4.7]
at com...marshalSendAndReceive(EndpointImpl.java:57) ~[classes!/:0.0.1.feature-web-client-f1c5030c]
It looks like it does create a successful connection to the proxy, but that connection is closed before the request is tunneled, causing the exception.
2023-06-08T23:51:19.984-0400 DEBUG org.apache.hc.client5.http.headers:134 - c-0000000000 << HTTP/1.1 200 Connection established
2023-06-08T23:51:19.984-0400 DEBUG org.apache.hc.core5.reactor.IOSessionImpl:171 - c-0000000000[ACTIVE][r:r] Close GRACEFUL
2023-06-08T23:51:19.985-0400 DEBUG org.apache.hc.client5.http.impl.async.HttpAsyncMainClientExec:149 - ex-0000000001 consume response HTTP/1.1 200 Connection established, null entity
2023-06-08T23:51:19.986-0400 DEBUG org.apache.hc.client5.http.impl.nio.DefaultManagedAsyncClientConnection:81 - c-0000000000 Shutdown connection GRACEFUL
2023-06-08T23:51:19.986-0400 DEBUG org.apache.hc.client5.http.impl.async.AsyncConnectExec:273 - ex-0000000001 proxy disconnected
2023-06-08T23:51:19.986-0400 DEBUG org.apache.hc.client5.http.impl.async.AsyncConnectExec:290 - ex-0000000001 tunnel to target created
2023-06-08T23:51:19.986-0400 DEBUG org.apache.hc.client5.http.impl.async.HttpAsyncMainClientExec:189 - ex-0000000001 execution failed: No tunnel unless connected
2023-06-08T23:51:19.986-0400 DEBUG org.apache.hc.client5.http.impl.async.InternalAbstractHttpAsyncClient:338 - ex-0000000001 request failed: No tunnel unless connected
2023-06-08T23:51:19.987-0400 DEBUG org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManager:562 - ep-0000000001 close IMMEDIATE
If this is the case, how can I fix this?