Skip to content

Fix concurrent container disposal - #384

Merged
Aaronontheweb merged 1 commit into
devfrom
fix/container-node-concurrent-dispose
Aug 14, 2026
Merged

Fix concurrent container disposal#384
Aaronontheweb merged 1 commit into
devfrom
fix/container-node-concurrent-dispose

Conversation

@Aaronontheweb

Copy link
Copy Markdown
Owner

Summary

  • make ContainerNode disposal atomic and idempotent
  • prevent a second teardown from completing an already-disposed R3 subject
  • add a deterministic concurrent-disposal regression test

Incident evidence

Netclaw native smoke failed with ObjectDisposedException in R3 Subject.OnCompleted through ContainerNode.Dispose and KeyedDynamicLayoutNode.DisposeRetiredChildren. The regression test produces the same R3 stack on unpatched dev and passes with this change.

Validation

  • dotnet build Termina.slnx -c Release --no-restore
  • dotnet test Termina.slnx -c Release --no-build --no-restore: 1,713 passed
  • Slopwatch on both changed files: 0 issues
  • git diff --check

@Aaronontheweb
Aaronontheweb marked this pull request as ready for review August 14, 2026 16:47
@Aaronontheweb
Aaronontheweb enabled auto-merge (squash) August 14, 2026 16:47
@Aaronontheweb
Aaronontheweb merged commit b81bc96 into dev Aug 14, 2026
13 checks passed
@Aaronontheweb
Aaronontheweb deleted the fix/container-node-concurrent-dispose branch August 14, 2026 16:49
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