You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ci: fix lint IWYU + latent CCN gate and cap concurrency stress under valgrind
Three failures on the feature/v2.0 Verify run, two of them latent behind
the lint job's step ordering:
- cpplint (lint lane): two build/include_what_you_use errors on
webserver_impl_dispatch.hpp. The header is a class-body fragment
(#error-gated, included mid-class) so it cannot carry its own
#include lines; suppress with NOLINT on the two anchor declarations,
matching the existing suppression already in this file.
- complexity gate (lint lane, never reached because cpplint failed
first): fire_response_sent_gated had crept to CCN 11. The
`server_gate || route_gate` predicate was spelled out twice; hoisting
it into a named `user_gate` both reads better and drops one boolean
operator, bringing the function back to CCN 10. Behaviour-preserving.
- valgrind-drd lane timeout (90 min): route_table_concurrency and
ws_registry_concurrency spin up to 20 threads hammering a single
shared_mutex for a 30 s real-time window. helgrind/drd track a
happens-before relation over every lock/atomic across every thread
pair, so that workload explodes their internal state (the drd lane
hung with no output for 88 minutes). memcheck, which tracks no thread
ordering, ran the same binary in ~60 s. Add stress_window() /
stress_threads() helpers in test_utils.hpp that shrink the run window
(30 s -> 3 s) and per-role fan-out (-> 3) only when VALGRIND is set; a
race detector needs only a short concurrent window to flag a missing
synchronisation. Native and TSan lanes keep the full-size stress.
Verified locally: cpplint clean, check-complexity/file-size/
warning-suppression gates pass, and make check is 113/113.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments