Christopher Tubbs created THRIFT-5732: -----------------------------------------
Summary: Java - TFramedTransport won't allow max frame size larger than default max message size Key: THRIFT-5732 URL: https://issues.apache.org/jira/browse/THRIFT-5732 Project: Thrift Issue Type: Bug Components: Java - Library Affects Versions: 0.14.0 Reporter: Christopher Tubbs The constructor for the TFramedTransport.Factory allows directly specifying the max frame size. However, if the max frame size provided is larger than the default max message size, then the internal checks for the max message size will trigger a failure, even if the message is smaller than the max frame size that was specified. For reference, the default max frame size is 16MB, and the default max message size is 100MB. So, if you pass in a max frame size of 200MB to the factory, and then send a message of size 101MB, this will trigger the error. A proposed solution would be to have the TFramedTransport.Factory set the maximum message size at the same time it sets the max frame size on the underlying TConfiguration. I was thinking the max message size could be set to the same as the provided max frame size. However, I'm not exactly sure how the frame header size comes into play here, so maybe the max message size should be slightly larger to account for the frame header size bytes? So maybe the max message size should be set to either the larger of: the current value in TConfiguration, the default max message size, and the max frame size +4 bytes for the frame header? (and being careful not to exceed {{Integer.MAX_VALUE}}). This bug was introduced in 0.14.0 with THRIFT-5237's Java implementation. See also the issue reported in Apache Accumulo at https://github.com/apache/accumulo/issues/3731 and proposed workarounds on https://github.com/apache/accumulo/issues/3737 -- This message was sent by Atlassian Jira (v8.20.10#820010)