Jens Geyer created THRIFT-6354:
----------------------------------

             Summary: Java nonblocking servers keep reading a connection whose 
frame waits for read buffer memory
                 Key: THRIFT-6354
                 URL: https://issues.apache.org/jira/browse/THRIFT-6354
             Project: Thrift
          Issue Type: Bug
          Components: Java - Library
            Reporter: Jens Geyer


When a frame does not fit into the read buffer memory that is left 
({{maxReadBufferBytes}}), the nonblocking servers defer it but leave the 
connection registered for reading. The selector then returns for that 
connection straight away, again and again, and the selector thread stays busy 
until memory is released. With {{maxReadBufferBytes}} set below the maximum 
frame size, a frame larger than the whole limit is never admitted. Related to 
THRIFT-5494.

Fixed on master by 
[6e992c1d1|https://github.com/apache/thrift/commit/6e992c1d1b3ad0670ec424cf1823e4dccb6a1529]:
 {{TNonblockingServer}}, {{THsHaServer}} and {{TThreadedSelectorServer}} now 
clear the read interest of such a connection and restore it once memory is 
released. A frame larger than the read buffer memory limit closes its 
connection, as a frame over the maximum frame size does.

Reported by Sylwester Lachiewicz.

_Drafted with AI assistance (Claude Opus 5); reviewed and posted by Jens Geyer._



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to