On 22/11/2023 14:46, Sandeep Gaur wrote:
HI,
Thanks for the quick reply!.
Absolutely, I'll provide you with the wire logs for further analysis.
For my clarification, does my observation from the previous email make
sense?
In your case HttpClient is streaming data to the remote endpoint, so the
max frame limit is defined by remoteConfig, not by logicConfig. At the
moment I cannot agree with your conclusion. I need to see the exact
details of the settings handshake.
Oleg
I can successfully make calls to the endpoint when the
Application Load Balancer (ALB) is not involved. Additionally, in our
past experiences, we have noticed that when ALB is in the picture, the
remote server indicates a frame size of 16MB.
Thanks,
Sandeep Gaur
On Wed, Nov 22, 2023 at 5:41 PM Sandeep Gaur <sandeep.gaur...@gmail.com
<mailto:sandeep.gaur...@gmail.com>> wrote:
Hi All/Oleg,
Greetings everyone! I trust you are all doing well. We've been
utilizing httpcore5-h2 (version 5.2.2), and unfortunately, we
encountered an issue in our production environment yesterday. Upon
investigation of the library code, it appears that the problem lies
within the library.
The Issue: HTTP calls to send a file larger than 16KB are failing
due to an error stating, "Frame size exceeds maximum."
Background: Our server is accessed behind an Application Load
Balancer (ALB). We previously faced an issue where the frame size
was set to 16MB, as dictated by the remote configuration, leading to
memory problems. This particular issue was addressed in a previous
resolution: https://issues.apache.org/jira/browse/HTTPCORE-751
<https://issues.apache.org/jira/browse/HTTPCORE-751>. In that
resolution, we agreed to use a smaller frame size, expecting that
the server would not send frames larger than the specified size.
I believe that the current issue may be a regression resulting from
the changes implemented in
https://issues.apache.org/jira/browse/HTTPCORE-751
<https://issues.apache.org/jira/browse/HTTPCORE-751>.
image.png
if you look at the code highlighted above in
AbstractH2StreamMultiplexer class, it should be
final int maxPayloadSize =Math.min(capacity, localConfig.getMaxFrameSize());
because we have set it value between the minimum of both server and local
config otherwise payload can exceed the outBuffer size which is happening in
our case.
Traces Of the issues:
java.lang.IllegalArgumentException: Frame size exceeds maximum
at org.apache.hc.core5.util.Args.check(Args.java:41)
at
org.apache.hc.core5.http2.impl.nio.FrameOutputBuffer.write(FrameOutputBuffer.java:98)
at
org.apache.hc.core5.http2.impl.nio.AbstractH2StreamMultiplexer.streamDataFrame(AbstractH2StreamMultiplexer.java:340)
at
org.apache.hc.core5.http2.impl.nio.AbstractH2StreamMultiplexer.streamData(AbstractH2StreamMultiplexer.java:361)
at
org.apache.hc.core5.http2.impl.nio.AbstractH2StreamMultiplexer.access$1300(AbstractH2StreamMultiplexer.java:92)
at
org.apache.hc.core5.http2.impl.nio.AbstractH2StreamMultiplexer$H2StreamChannelImpl.write(AbstractH2StreamMultiplexer.java:1709)
at
org.apache.hc.core5.http2.impl.nio.ClientH2StreamHandler$1.write(ClientH2StreamHandler.java:92)
at
org.apache.hc.client5.http.impl.async.HttpAsyncMainClientExec$1$1.write(HttpAsyncMainClientExec.java:172)
at
org.apache.hc.core5.http.nio.entity.BasicAsyncEntityProducer.produce(BasicAsyncEntityProducer.java:129)
at
org.apache.hc.core5.http.nio.support.BasicRequestProducer.produce(BasicRequestProducer.java:104)
at
com.iontrading.treasuryportal.core.bindingshelper.producers.TARequestProducer.produce(TARequestProducer.java:52)
at
org.apache.hc.client5.http.impl.async.InternalAbstractHttpAsyncClient$2.produce(InternalAbstractHttpAsyncClient.java:260)
at
org.apache.hc.client5.http.impl.async.HttpAsyncMainClientExec$1.produce(HttpAsyncMainClientExec.java:163)
at
org.apache.hc.core5.http2.impl.nio.ClientH2StreamHandler.produceOutput(ClientH2StreamHandler.java:172)
at
org.apache.hc.core5.http2.impl.nio.AbstractH2StreamMultiplexer$H2Stream.produceOutput(AbstractH2StreamMultiplexer.java:1539)
at
org.apache.hc.core5.http2.impl.nio.AbstractH2StreamMultiplexer.produceOutput(AbstractH2StreamMultiplexer.java:1266)
at
org.apache.hc.core5.http2.impl.nio.AbstractH2StreamMultiplexer.onOutput(AbstractH2StreamMultiplexer.java:474)
at
org.apache.hc.core5.http2.impl.nio.AbstractH2IOEventHandler.outputReady(AbstractH2IOEventHandler.java:74)
at
org.apache.hc.core5.http2.impl.nio.ClientH2IOEventHandler.outputReady(ClientH2IOEventHandler.java:39)
Thanks,
Sandeep Gaur
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org
For additional commands, e-mail: dev-h...@hc.apache.org