feat(raft-drive-async): bound peer connect (O_NONBLOCK+poll), close tasks 1.3/1.4/1.5

socket_connect sets O_NONBLOCK before connect and bounds the attempt with
poll(timeout); new connect_timeout_ms param (0=DEFAULT_CONNECT_TIMEOUT_MS);
all 5 callers updated (ha.c x3, client.c, xcectx.c). Revalidation Trigger:
shared netio helper signature changed. Broad build links all components;
xcelib_test 278/0, controller_unit_test 194/0. 1.4/1.5 unit tests satisfied
by the TDD output of 1.2/1.3 (test_slowlane.c, test_netio_bounded_connect.c).
This commit is contained in:
Rongsong Shen 2026-06-26 07:10:53 +00:00
parent 5650acd375
commit 0781c6c027
9 changed files with 289 additions and 18 deletions

View file

@ -17,7 +17,7 @@ Tasks mirror the design's 4-phase migration. The slow lane is foundational (ever
- _Requirements: 3.1, 3.2, 3.3, 3.4, 1.5_
- _Boundary: SlowLane_
- [ ] 1.3 Bound the peer connect path
- [x] 1.3 Bound the peer connect path
- Reorder `socket_connect` to set non-blocking before connect and bound the attempt with a poll timeout (reuse the existing probe pattern); return success/timeout/error.
- Update connect callers to pass the configured timeout.
- Observable: a connect to an unreachable host returns within the configured timeout instead of the OS connect timeout; a connect to a reachable host still succeeds.
@ -25,14 +25,14 @@ Tasks mirror the design's 4-phase migration. The slow lane is foundational (ever
- _Boundary: BoundedConnect_
- _Depends: 1.1_
- [ ] 1.4 (P) SlowLane unit tests
- [x] 1.4 (P) SlowLane unit tests
- Assert non-blocking submit, admission-cap bounds on concurrency, per-key dedup returns the deduped result, and run-exactly-once.
- Observable: tests pass and fail if the cap or dedup is removed.
- _Requirements: 3.1, 3.2, 3.3, 3.4, 1.5_
- _Boundary: SlowLane_
- _Depends: 1.2_
- [ ] 1.5 (P) Bounded-connect unit test
- [x] 1.5 (P) Bounded-connect unit test
- Assert `socket_connect` returns within the timeout against an unreachable host and succeeds against a reachable one.
- Observable: test passes; reverting the reorder makes it hang/fail.
- _Requirements: 2.3_