Commit Graph
262 Commits
Author SHA1 Message Date
Nils Andreas Svee 4632e310d7 test(managed): verify timeout budget fairness 2026-08-10 01:18:38 +07:00
Nils Andreas Svee a67331a297 fix(managed): bound timeout work per poll 2026-08-10 01:05:41 +07:00
Nils Andreas Svee 9769a1b49e refactor(client): index pending probe deadlines 2026-08-10 01:00:50 +07:00
Nils Andreas Svee 8d47dc9c6e test(managed): cover stopping admission overlap 2026-08-10 00:27:18 +07:00
Nils Andreas Svee dd396a8b5a test(managed): verify bounded control progress 2026-08-10 00:06:31 +07:00
Nils Andreas Svee dd1182d24d fix(managed): harden control admission 2026-08-10 00:05:48 +07:00
Nils Andreas Svee 1c6b4be915 fix(client): bound asynchronous opening work 2026-08-09 23:45:19 +07:00
Nils Andreas Svee 33fe01f252 refactor(irtt-client): gate functions that are only used with tokio enabled 2026-08-09 22:03:45 +07:00
Nils Andreas Svee 36eaa90e2a fix(cli): harden managed frontend cutover 2026-08-09 21:51:20 +07:00
Nils Andreas Svee c599c84715 refactor(managed): remove legacy runtime 2026-08-09 20:58:36 +07:00
Nils Andreas Svee 9de95b303c feat(managed): support subscribed blocking start 2026-08-09 20:21:12 +07:00
Nils Andreas Svee 93fed6dce6 fix(managed): bound blocking runtime shutdown 2026-08-09 20:02:35 +07:00
Nils Andreas Svee 749306394c test(managed): verify blocking owner lifecycle 2026-08-09 19:18:38 +07:00
Nils Andreas Svee 03ee6e2f28 feat(managed): add blocking managed owner 2026-08-09 19:10:56 +07:00
Nils Andreas Svee de902722e7 test(managed): verify dynamic target generations 2026-08-09 18:52:16 +07:00
Nils Andreas Svee 89ec57d48c feat(managed): add transactional target updates 2026-08-09 18:51:46 +07:00
Nils Andreas Svee 99b6ddfead fix(managed): preserve drain and pacing invariants 2026-08-05 00:09:46 +07:00
Nils Andreas Svee 8445c0cd99 fix(managed): harden stop and deadline ordering 2026-08-04 23:19:18 +07:00
Nils Andreas Svee 1af8afcfae fix(managed): correct pacing and drain cleanup 2026-08-04 22:33:00 +07:00
Nils Andreas Svee 1cb6e07706 test(managed): verify unified task lifecycle 2026-08-04 20:59:42 +07:00
Nils Andreas Svee fd3c29e63a feat(managed): add unified Tokio managed task 2026-08-04 20:38:52 +07:00
Nils Andreas Svee a24898ada6 refactor(client): share pollable async transactions 2026-08-04 19:17:33 +07:00
Nils Andreas Svee b67dcfb425 test(client): focus async adapter coverage 2026-08-04 16:28:27 +07:00
Nils Andreas Svee 2f7932862a fix(client): reformat tokio dependency entry 2026-08-04 15:54:41 +07:00
Nils Andreas Svee b1e32d543c test(client): verify async lifecycle equivalence 2026-08-04 15:34:20 +07:00
Nils Andreas Svee 62a9c8899e feat(client): add Tokio async client 2026-08-04 15:34:19 +07:00
Nils Andreas Svee a542d4edf1 feat(client): add optional Tokio socket support 2026-08-04 15:29:35 +07:00
Nils Andreas Svee 56f54a7b4e fix(managed): classify opening overflow as configuration 2026-08-04 14:24:40 +07:00
Nils Andreas Svee 04e7893e3e fix(managed): bound opening receiver drains 2026-08-04 14:22:23 +07:00
Nils Andreas Svee 3948e3dec9 fix(client): timestamp close events after send 2026-08-04 13:44:33 +07:00
Nils Andreas Svee ef19c45c1f fix(managed): transact group session close 2026-08-04 13:08:38 +07:00
Nils Andreas Svee 357e1356ea fix(client): transact blocking session close 2026-08-04 13:03:51 +07:00
Nils Andreas Svee da731edd0d refactor(session): prepare close transactions 2026-08-04 12:59:27 +07:00
Nils Andreas Svee 185e0bf3e4 fix(managed): drain queued opening replies before retry 2026-08-04 12:34:13 +07:00
Nils Andreas Svee dd74f3800e fix(client): preserve no-test opening semantics 2026-08-04 12:18:31 +07:00
Nils Andreas Svee e270183f5d refactor(managed): transact group session opening 2026-08-04 12:12:05 +07:00
Nils Andreas Svee ff27ec24c6 refactor(client): transact blocking session opening 2026-08-04 12:11:32 +07:00
Nils Andreas Svee dad4d2a298 refactor(session): prepare opening transactions 2026-08-04 12:11:32 +07:00
Nils Andreas Svee e642f962d4 fix(client): separate probe admission and send timing 2026-08-04 11:36:25 +07:00
Nils Andreas Svee 9bc2ac90b3 refactor(client): commit probe sends transactionally 2026-08-04 01:04:42 +07:00
Nils Andreas Svee b5d0b1e52e refactor(probe): preflight pending insertion 2026-08-04 00:53:26 +07:00
Nils Andreas Svee cabe0f6c24 feat(proto): add directional echo codecs 2026-08-04 00:34:12 +07:00
Nils Andreas Svee 1920d5e33c test(managed): make probe pacing assertions deterministic 2026-08-04 00:11:27 +07:00
Nils Andreas Svee 22b8bb80ea refactor(client): separate probe scheduling from session state 2026-08-04 00:11:27 +07:00
Nils Andreas Svee 4b4adc518c refactor(session): consolidate client session lifecycle 2026-07-31 11:10:23 +07:00
Nils Andreas Svee dc827908d9 refactor(session): separate negotiation from session state 2026-07-31 11:08:25 +07:00
Nils Andreas Svee dfe0534905 test(managed): cover group late replies during final drain
Exercise a real one-target ManagedClientGroup through timeout, Draining, a gated retained reply, LateReply classification, local close, and authoritative TargetFinished publication. Synchronize release after EchoLoss and a scheduler-handled no-op update so the ordering is deterministic rather than delay-dependent.

Add a silent-server control that verifies completion only after the final-drain deadline, and assert bounded join, queued-event draining through disconnection, target counters, terminal outcome equality, and group aggregates in both cases.

Harden the analogous single-client late-drain test with a viable one-probe run window and packet-shape checks. No production final-drain behavior change was required.
2026-07-28 15:55:18 +07:00
Nils Andreas Svee 7cc55bd619 fix(managed): decouple peer-close control from event delivery
Add a scheduler-owned saturating peer-close counter shared with the group session. Update it before best-effort TargetFinished publication so bounded subscriber overflow cannot hide the live shutdown condition, while retaining the existing events, bounded history, and aggregate accounting.

Make grouped CLI and TUI supervision consult the durable count on each existing activity loop and funnel both count and event observations through one-shot stop policy. Preserve interruption suppression, queued-event draining, structured failures, drop reporting, and peer-close diagnostic precedence.

Cover scheduler-only accounting, non-peer exclusions, receiver and removal races, deterministic capacity-one DropOldest eviction with an active target, frontend one-shot policy, and the existing process-level peer-close and interruption behavior.
2026-07-28 15:49:53 +07:00
Nils Andreas Svee bbe3261eb3 fix(managed): record peer closure in the receiver
After publishing the authenticated reply classification and session-close events, mark the target PeerClosed while the receiver still holds its lock. Wake the scheduler to publish and account for the single authoritative terminal outcome.

Add controlled-order regressions proving later scheduler sends and target removal cannot overwrite peer-close provenance, counters remain intact, and ordinary replies stay active.
2026-07-28 14:55:30 +07:00
Nils Andreas Svee dfe9adb36e fix(managed): block while dynamic groups are idle
Block the group scheduler on its control channel when no opening, pacing, or final-drain deadline exists. Preserve bounded timed waits whenever scheduled work remains.

Cover no-deadline blocking, channel disconnection, deadline wakeups, and empty dynamic-group update, stop, and drop behavior with bounded tests.
2026-07-28 14:48:57 +07:00