Skip to content

fix: guard track creation and report failed track releases - #414

Merged
devopvoid merged 3 commits into
mainfrom
fix/local-track-close
Oct 22, 2026
Merged

devopvoid merged 3 commits into
mainfrom
fix/local-track-close

Conversation

@devopvoid

Copy link
Copy Markdown
Owner
  • Track creations in LocalMediaImpl register before they touch the factory, so a closing runtime waits for them and closes what they made before it frees the factory.
  • LocalTrackImpl.release() tries every release step, fails the track's closeAsync() when one fails, and keeps the track so that the runtime's close fails and leaves the factory undisposed.

The runtime takes a control pool and a timer through package-private
builder methods, so tests step through control tasks and fire timeouts
themselves. createPeer is split into register and open, the points a
closing runtime can meet it at. New tests cover SerialExecutor rejection,
createPeer against close at each point, answers that arrive after the
session timed out, and how close failures are reported; the HTTP test
endpoint holds answers on a latch instead of sleeping.
Track creations register before touching the factory, so a closing runtime waits for them. A failed track release still runs its remaining steps and fails the track's and the runtime's close.
# Conflicts:
#	webrtc/src/test/java/dev/onvoid/webrtc/client/RuntimeCloseTests.java
@devopvoid
devopvoid merged commit 8956629 into main Oct 22, 2026
25 checks passed
@devopvoid
devopvoid deleted the fix/local-track-close branch October 22, 2026 16:50
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