Skip to content

fix(urltest): probe policy members with bounded concurrency - #2

Merged
kovawx merged 6 commits into
developfrom
agent/concurrent-urltest-probes
Aug 3, 2026
Merged

fix(urltest): probe policy members with bounded concurrency#2
kovawx merged 6 commits into
developfrom
agent/concurrent-urltest-probes

Conversation

@kovawx

@kovawx kovawx commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

What changed

  • run independent URLTest member probes concurrently instead of strictly serially
  • enforce one process-wide limit of eight real URLTest/outbound probe sockets across all URLTest groups
  • include diagnostics.probe_outbound in the same process-wide concurrency budget
  • coalesce overlapping probes for the same runtime configuration, target tag, and test URL
  • suppress duplicate manual full-cycle triggers while the same URLTest group is already probing
  • reset the scheduled interval after startup, manual, and scheduled cycles
  • preserve configured member order in runtime state and policy.probe.completed events
  • retain deterministic fastest-member selection, including configuration-order tie behavior

Updated develop integration

This branch has been rebuilt on the current develop runtime model.

  • URLTest group planning and target resolution use the immutable EngineRuntimeSnapshot held by TcpRuntimeServices
  • configuration reconciliation aborts and joins the previous URLTest generation before clearing triggers and shared in-flight state
  • a newly reconciled generation therefore cannot reuse old-generation URLTest tasks or committed member state
  • the final pull-request diff is limited to crates/proxy/Cargo.toml and crates/proxy/src/groups/urltest.rs

Root cause

The previous implementation awaited every member in sequence, so one group could take approximately member_count × 5s. Separate URLTest groups and direct diagnostic probes could also multiply the number of simultaneous sockets, while overlapping requests for the same target repeated DNS resolution and connection work.

Expected effect

For a group containing 44 nodes, up to eight real probes run concurrently across the process. Requests that overlap for the same runtime configuration, target, and URL share one in-flight operation. Each group still commits its own ordered member state and emits its own completion event.

Compatibility

The command and event contracts are unchanged. policy.probe.completed continues to contain all members in configuration order and is emitted after the group state is committed.

Validation

  • Version Contract: passed
  • formatting and workspace Clippy: passed
  • all-feature workspace check and tests: passed
  • architecture boundary tests: passed
  • Linux musl build and static-link verification: passed
  • optional-surface matrix: passed
  • representative proxy-feature matrix: passed

@kovawx
kovawx force-pushed the agent/concurrent-urltest-probes branch from 3436a76 to fc7fe2e Compare August 3, 2026 05:18
@kovawx
kovawx marked this pull request as ready for review August 3, 2026 05:24
@kovawx
kovawx force-pushed the agent/concurrent-urltest-probes branch from 4f53481 to fc7fe2e Compare August 3, 2026 05:26
@kovawx
kovawx merged commit 5c06b1c into develop Aug 3, 2026
32 of 46 checks passed
@kovawx
kovawx deleted the agent/concurrent-urltest-probes branch August 6, 2026 02:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant