Hi,

On Tue, Mar 31, 2020 at 8:17 PM <[email protected]>
wrote:

> -----Original Message-----
> > From: Bhavesh Mistry <[email protected]>
> > Sent: Wednesday, February 26, 2020 7:51 PM
> > To: Tomcat Users List <[email protected]>
> > Subject: Re: Tomcat 9.31 PUT/POST Request receiving Partial Data
>
> > The response get truncated after 16321 bytes.  Please let me know what
> is best way to wait and in > order to consume entire request payload.
>
> > Thanks,
> > Bhavesh
>
> > On Wed, Feb 26, 2020 at 4:34 PM Bhavesh Mistry <
> [email protected]>
> > wrote:
>
> > Hi Tomcat Team,
> >
> > I have servlet filter for all requests to cache the entire PUT/POST
> > Payload.   When content is large 4KB or more, I am getting partial
> content
> > when I read from HttpServletRequest.getInputStream().  But I but 10
> > seconds wait before consuming the input stream, I am getting entire
> > content.  Can you please let me know what is the correct way to wait
> > for the entire content is ready to consume from the tomcat servlet
> request input stream?
> >
> >
> > Filter Code:
> > If I put Thread.sleep(100000) at begin of filter, I am getting full
> > content.
> >
> > @Override
> > protected void doFilterInternal(HttpServletRequest httpServletRequest,
> HttpServletResponse httpServletResponse, FilterChain filterChain) throws
> ServletException, IOException {
> >     CachedBodyHttpServletRequest cachedBodyHttpServletRequest = new
> CachedBodyHttpServletRequest(httpServletRequest);
> >     filterChain.doFilter(cachedBodyHttpServletRequest,
> > httpServletResponse); }
> >
> > // Wrapper to cache content.
> >
> > public CachedBodyHttpServletRequest(HttpServletRequest request) throws
> IOException {
> >     super(request);
> >     ServletInputStream inputStream = request.getInputStream();
> >     final int len = request.getContentLength();
> >     if (len >= 0) {
> >         cachedBody = new byte[len];
> >         ByteStreams.readFully(inputStream, cachedBody);
> >     } else {
> >         cachedBody = ByteStreams.toByteArray(inputStream);
> >     }
> > }
> >
> >
> > Thanks,
> >
> > Bhavesh
> >
>
> I have a team reporting the same issue with 9.0.31. Reverting to 9.0.30
> resolves their issue. Here are some details:
>
> STEPS done to identify cause :-
> 1.      We have tried to increase maxSwallowSize , connectionTimeout ,
> socket.appWriteBufSize="24576" on tomcat 9.0.31 but issue still persisted
> 2.      We tried to roll back java upgrade from 1.8.0.242 to 1.8.0.231 but
> issue still persisted
> 3.      Enabled SSL debug log to verify if request gets dropped at but it
> was not very helpful .
> 4.      FINALLY when we rolledback tomcat upgrade to 9.0.30 , same request
> worked fine .
>
> We were basically getting 400 error for few requests while smaller request
> always succeeds while larger request (100kb-180kb) frequently gets dropped
> or partially processed.
> Now we are using the 9.0.30 version until its resolved from tomcat side .
>

Have you tried 9.0.33 ?
I believe this is fixed in .33.

Martin

Reply via email to