Jens-G opened a new pull request, #3845: URL: https://github.com/apache/thrift/pull/3845
`thrift.server.nonblocking.TNonblockingServer` defaulted `maxFrameSize` to `DEFAULT_MAX_FRAME_SIZE = 256 * 1024 * 1024`, while the rest of `lib/d` uses `16384000` — the frame size limit shared across the Thrift libraries (`DEFAULT_FRAME_SIZE_LIMIT` in `thrift.transport.framed`, and the container and string size limits of the binary, compact and JSON protocols). So the D servers disagreed with each other: `TSimpleServer`, `TThreadedServer` and `TTaskPoolServer` with a `TFramedTransportFactory` refuse a request frame over 16,384,000 bytes (and a D client refuses a response frame over that too), while `TNonblockingServer` accepted one of up to 268,435,456 bytes. THRIFT-6183 made the same change to the C++ `TNonblockingServer`. This sets `DEFAULT_MAX_FRAME_SIZE` to `16384000`. A `maxFrameSize` assigned by the caller still takes precedence. ### Compatibility (breaking) This lowers a shipped, public default. A deployment that exchanges frames between 16,384,001 and 268,435,456 bytes with `TNonblockingServer` and does not set `maxFrameSize` will start having those connections closed; set `maxFrameSize` to `256 * 1024 * 1024` to restore the previous behaviour. Unlike `frameSizeLimit` on `TFramedTransport`, a `maxFrameSize` of zero does not switch the check off. A release note is added to `lib/d/README.md`. ### Test A new unittest in `nonblocking.d` spins up a live server and asserts the default value, that a 16,384,001-byte frame header closes the connection, and that a caller-raised `maxFrameSize` gets the larger frame read and answered. --- Prepared with AI assistance (Claude Opus 5). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
