docs(archreview): R2-01 S7 live gate CLOSED — read-leg wall-clock fix (PR #453)
Running S7_1500ConnectTimeoutOutageTests (docker-pause blackhole, self-serviceable over SSH) uncovered + fixed the read-leg wall-clock gap STAB-14 left. Updates the R2-01 STATUS row, the needs-user/still-open lists, and the STAB-14 remediation note.
This commit is contained in:
@@ -172,7 +172,13 @@ are the new STAB-14..17 below.
|
||||
> `when (token.IsCancellationRequested)` filters on the read/write ensure-wrappers (`:488`/`:1000`) and all
|
||||
> three poll-loop OCE catches — so a non-teardown OCE degrades/backs-off instead of killing the loop. Unit
|
||||
> guards T1–T4 (`S7DriverReconnectTests`, incl. the poll-loop-survival regression). Live gate
|
||||
> `S7_1500ConnectTimeoutOutageTests` (env-gated SYN-blackhole, `deferred-live`).
|
||||
> `S7_1500ConnectTimeoutOutageTests` **CLOSED 2026-07-15** — running it (blackhole via `docker pause`)
|
||||
> exposed that the fix above covered only the *connect* leg: S7.Net's socket `ReadTimeout`/`WriteTimeout`
|
||||
> are ignored by its async read/write paths, so a read on an established-but-frozen peer blocked for
|
||||
> minutes and wedged the poll loop. Fixed (PR #453, master `4dc937fc`) by a new `S7OperationDeadline`
|
||||
> wall-clock ceiling on every data-plane wire op (`S7PlcAdapter` → `TimeoutException`) + `IsS7ConnectionFatal`
|
||||
> now treating `TimeoutException` as fatal → mark-dead → reopen (the READ-leg sibling of STAB-14). Live gate
|
||||
> now GREEN; Driver.S7.Tests 246→260.
|
||||
|
||||
**STAB-14 — High — NEW — S7's reconnect wrapper rethrows connect-timeout
|
||||
cancellation, and the poll loop's bare OCE catch then permanently kills the
|
||||
|
||||
Reference in New Issue
Block a user