Skip to content

fix(control): exit stale UDP convoy after failed delete#27

Merged
MaurUppi merged 1 commit intomainfrom
broken-pipe-patch
Feb 28, 2026
Merged

fix(control): exit stale UDP convoy after failed delete#27
MaurUppi merged 1 commit intomainfrom
broken-pipe-patch

Conversation

@MaurUppi
Copy link
Owner

@MaurUppi MaurUppi commented Feb 28, 2026

Summary

  • fix remaining convoy residency path when tryDeleteQueue fails after mapping was already removed/replaced
  • add regression test TestConvoyExitsWhenQueueMappingDeletedBeforeSelfDelete
  • extend udp-taskpool-tdd.yml race test regex to include this regression guard

Root cause

When old convoy enters draining and another path deletes/replaces key -> q first, old convoy's self-delete fails. Existing logic reset timer and continued, allowing stale convoy to loop outside map and accumulate.

Validation

  • go test -v -race -timeout 30s ./control/... -run "Test(UdpTaskPool|CompareAndDelete|NoGoroutineLeak|ConvoyExitAfterFailedDelete|ConvoyExitsWhenQueueMappingDeletedBeforeSelfDelete|HighConcurrencyStress)"
  • go test ./component/sniffing -run "TestIsLikelyQuicInitialPacket" -count=1

- add regression test for queue mapping deleted before convoy self-delete\n- exit convoy when queue map no longer points to current queue\n- include new convoy exit test in udp-taskpool TDD workflow
@github-actions
Copy link

UDP TaskPool TDD Summary

Test Status

  • go test -race ./control/... -run Test(UdpTaskPool|CompareAndDelete|NoGoroutineLeak|ConvoyExitAfterFailedDelete|HighConcurrencyStress): pass
  • go test ./component/sniffing -run TestIsLikelyQuicInitialPacket: pass

Suite Delta (time/op geomean)

  • Before (base): origin/main
  • After (head): bcc75f176f00e63ccbf203f669dd2146011e84f8
  • Bench params: -count=3 -benchtime=200ms

Suite Status

  • udp_taskpool_compare_and_delete: pass
  • udp_taskpool_core: pass
  • udp_taskpool_load_and_delete_pattern: pass

Delta

  • udp_taskpool_compare_and_delete: n/a (no common benchmark delta)
  • udp_taskpool_core: n/a (no common benchmark delta)
  • udp_taskpool_load_and_delete_pattern: n/a (no common benchmark delta)

@github-actions
Copy link

DNS Benchmark Compare Summary

  • Before (base): origin/main
  • After (head): bcc75f176f00e63ccbf203f669dd2146011e84f8
  • Base strategy: merge-base
  • Suite profile: dns-module
  • Overall: pass (6/6 passed)
  • Workflow run: https://github.com/MaurUppi/dae/actions/runs/22514228001
  • Full report artifact: dns-benchmark-compare-22514228001

Suite Status

  • component_upstream_hotpath: pass
  • control_cache_hotpath: pass
  • control_cache_regression_guard: pass
  • control_cache_structures: pass
  • control_core_flow: pass
  • control_singleflight_scale: pass

Suite Delta (time/op geomean)

  • component_upstream_hotpath: 2.315n -> 2.490n+7.56%)
  • control_cache_hotpath: 12.95n -> 12.46n-3.79%)
  • control_cache_regression_guard: 123.0n -> 130.3n+5.97%)
  • control_cache_structures: 42.62n -> 43.59n+2.27%)
  • control_core_flow: 252.9n -> 250.1n-1.14%)
  • control_singleflight_scale: 117.0µ -> 105.6µ-9.74%)

@MaurUppi MaurUppi merged commit 8da533f into main Feb 28, 2026
36 checks passed
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