Jens Geyer created THRIFT-6298:
----------------------------------
Summary: Rust: split_halves_must_not_clobber_each_others_timeout
fails on kernels with HZ=250
Key: THRIFT-6298
URL: https://issues.apache.org/jira/browse/THRIFT-6298
Project: Thrift
Issue Type: Bug
Components: Rust - Library
Reporter: Jens Geyer
The test
{{transport::socket::tests::split_halves_must_not_clobber_each_others_timeout}}
({{lib/rs/src/transport/socket.rs}}, from THRIFT-5954) sets a read timeout of
250 ms and expects to read exactly that value back. Linux stores socket
timeouts in jiffies and rounds up. On a kernel with {{CONFIG_HZ=250}}, which is
the Debian default, the value comes back as 252 ms:
{noformat}
assertion `left == right` failed
left: Some(252ms)
right: Some(250ms)
{noformat}
This was seen with Rust 1.85.1 on Debian 13 (kernel 6.12). CI passes, so the
kernels on its runners keep 250 ms exact.
h2. Suggested
Use timeout values that are multiples of 20 ms, which kernels with HZ 100, 250
and 1000 all store exactly. For example, use 240 ms instead of 250 ms; the test
then passes on the HZ=250 machine. The test's other values, 80 ms and 500 ms,
already qualify.
_Drafted with AI assistance (Claude Opus 5); reviewed and filed by Jens Geyer._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)