Summary
The test evict clients in right order (large to small) in tests/unit/client-eviction.tcl fails intermittently when running with --tls flag.
Error: CI error link
*** [err]: evict clients in right order (large to small) in tests/unit/client-eviction.tcl
Expected '2' to be equal to '3' (context: type eval line 53 cmd {assert_equal $count $clients_per_size} proc ::test)
Analysis
TLS testing was added to test-ubuntu-latest-cmake-tls job on Jan 23, 2026 (commit be561e2 cc @madolson @zuiderkwast @enjoy-binbin )
The test creates clients with specific buffer sizes and verifies they are evicted in order (largest to smallest) when maxmemory-clients is reduced. The failure indicates one extra client was evicted when it shouldn't have been.
The flakiness likely (I could be wrong) comes from timing and variability:
- TLS state is dynamic - Session caches, renegotiation buffers, cipher state can vary based on negotiation
- Memory drift - Measured at line 537, but used later at line 559; TLS state can change in between
- Control connection varies - control_mem (line 557) is also a TLS connection with variable overhead
- Jemalloc behavior? Perhaps slight variations in actual memory
Overall, the test assumes memory is stable between measurement and eviction, but TLS makes it more dynamic. When the timing is unlucky and TLS buffers grow slightly after measurement, one extra client gets evicted.
Summary
The test
evict clients in right order (large to small)intests/unit/client-eviction.tclfails intermittently when running with--tlsflag.Error: CI error link
Analysis
TLS testing was added to
test-ubuntu-latest-cmake-tlsjob on Jan 23, 2026 (commit be561e2 cc @madolson @zuiderkwast @enjoy-binbin )The test creates clients with specific buffer sizes and verifies they are evicted in order (largest to smallest) when
maxmemory-clientsis reduced. The failure indicates one extra client was evicted when it shouldn't have been.The flakiness likely (I could be wrong) comes from timing and variability:
Overall, the test assumes memory is stable between measurement and eviction, but TLS makes it more dynamic. When the timing is unlucky and TLS buffers grow slightly after measurement, one extra client gets evicted.