[
https://issues.apache.org/jira/browse/THRIFT-5371?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17735965#comment-17735965
]
Malcolm Butler commented on THRIFT-5371:
----------------------------------------
Our application uses long-lived connections with buffered or framed transports.
We also found they were throwing TTransportException "MaxMessageSize reached"
and concluded the message size counters are not being reset at the end of a
frame, so I think the proposed solution would be correct.
I suspect THRIFT-5351 needs a similar fix as THttpTransport::readEnd() also
does not appear call resetConsumedMessageSize().
We are using Thrift 0.16.1 but the latest release and master look like they
have the same problem.
> Max Message Size is eventually exceeded when using TFramedTransport
> -------------------------------------------------------------------
>
> Key: THRIFT-5371
> URL: https://issues.apache.org/jira/browse/THRIFT-5371
> Project: Thrift
> Issue Type: Bug
> Components: C++ - Library
> Affects Versions: 0.14.1
> Environment: Windows 2010, Visual Studio 2017, CMake 3.15.2
> Reporter: Paul Caswell
> Priority: Major
>
> I have been trying to upgrade our application from Thrift 0.11.0 to 0.14.1
> and have noticed what I think is a bug.
> Our thrift application uses a TFramedTransport to transmit large quantities
> of data from the client to the server using a oneway call. The transports
> are all created using the (new) default TConfiguration class giving a maximum
> message size of 100MB.
> Our application sends data through the thrift library in circa 10MB blocks
> using a oneway call. On the 10th call the server terminates with a
> TTransportException thrown on line 329 of TTransport.h.
> I believe this is happening because the TFramedTransport doesn't reset the
> 'knownMessageSize_' and 'remainingMessageSize_' counters when a message
> transfer is completed. This means that the counter continually reduces until
> the exception is thrown. I am new to the thrift library and so perhaps I
> have this wrong but it's what looks like is happening to me.
> I can make the library work by adding resetConsumedMessageSize(); inside
> TFramedTransport::readEnd() in file TBufferTransports.cpp (at line 310). Is
> this the correct solution?
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)