Commit Graph

2322 Commits

Author SHA1 Message Date
Raja Subramanian 79cdc2df2e Unify muted and unmuted migration paths. (#2406)
* Unify muted and unmuted migration paths.

If dynacast had disabled all layers, after a migration, the client did
not restart publish (it is akin to muted track). That failed migration
because migration state machine waits for unmuted tracks to be published
(i. e. server has to receive packets).

If a migrating track is in muted state, server does not wait for
packets. It synthesises the published event and catches up later when
packets actually come in.

Just treating all migrations as the erstwhile muted case. Sythesise
publish whether track is muted or not. In the unmuted case, packets
might arrive soon after whereas in muted case, it will depend on when
unmute happens.

This is tricky stuff. So, will need good testing.

* use muted from track info
2024-01-25 01:24:09 +05:30
Denys Smirnov 89c7cec2ad SIP: New protocol for creating participants. (#2404) 2024-01-24 20:01:22 +02:00
Pablo Fuente Pérez f6608977f0 Fix race condition on Participant.updateState (#2401)
The comparisson between the last and current ParticipantInfo_State wasn't atomic. This sometimes resulted in two calls to onStateChange method for the same participant state. In the end this was reflected in two ACTIVE events being generated for the same participant at exactly the same moment. The fix actually uses the atomic method Swap to properly protect the "compare and set" operation and avoid any race condition.
2024-01-22 17:11:34 -08:00
Paul Wells 867325d120 restore legacy room delete behavior (#2400) 2024-01-22 05:18:12 -08:00
Paul Wells cb42c6152c add psrpc redis keepalive (#2398)
* add psrpc redis keepalive

* deps
2024-01-21 06:16:40 -08:00
Raja Subramanian 8c932da678 Add ControllerNodeId and SelectionReason to StartSession. (#2396)
* Add ControllerNodeId and SelectionReason to StartSession.

Media node has that information and can log it in context.

* Update deps

* clean up and mage generate

* clean up and fix test

* clean up

* clean up
2024-01-19 17:06:09 +05:30
Jonas Schell e255b8a51d update readme (#2392) 2024-01-18 15:48:23 -08:00
Paul Wells fbd488adc3 remove participant key helpers (#2385)
* remove participant key helpers

* deps
2024-01-18 06:46:34 -08:00
Raja Subramanian 899067ba0f Simulation scenarios to disable signal channel on resume (#2389)
* Add a simulation scenario to disconnect signal channel on resume

- Requesting that scenario add that participant to a map with a timeout
  of 5 seconds.
- If a resume (reconnect = 1) happens before the timeout, the signalling
  channel is closed immediately on resume.
- There is a clean up worker which will remove entries from the map when
  they timout.
- The participant is also removed from the map if the disconnect on
  resume is invoked once.

* simulate disconnect signal on resume no messages

* comment

* comment

* Close all retries

* update deps

* abort resume only if simulation applied

* Revert SIP change
2024-01-17 20:44:05 +05:30
Sean DuBois 750d2b5765 Update livekit/protocol (#2390)
Fix API breakage with SIP
2024-01-17 10:03:47 -05:00
Raja Subramanian f29a28611b Prevent writable race. (#2388)
It is possible that onBindAndConnectedChanged gets executed in such a
way that `writable` does not have the correct value in some very rare
timing case (i. e. case like two executions of the function is racing
and one atomic was read on first exeuction and second execution runs and
sets `writable` and then first execution completes the sets `writable`
to incorrect value based on stale read of first execution).

Prevent it by executing under bind lock.
2024-01-16 12:15:13 +05:30
cnderrauber 5b4848e772 remove dd debug logs (#2387) 2024-01-16 12:07:29 +08:00
Paul Wells 3f2f850bdb clean up legacy rpc (#2384)
* clean up legacy rpc

* cleanup

* cleanup

* cleanup

* tidy

* cleanup

* cleanup
2024-01-14 01:49:26 -08:00
renovate[bot] 1cb4b3e585 Update go deps (#2382)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-13 17:42:34 -08:00
renovate[bot] 2ba4e5c070 Update go deps (#2366)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-12 10:30:22 -08:00
Paul Wells 78bf642d67 record session once (#2381) 2024-01-12 05:55:56 -08:00
Paul Wells c726cbf2ba increase max session start time bin size (#2380) 2024-01-12 03:49:23 -08:00
Raja Subramanian bf0e88dea4 Squelch only the log, not the error return. (#2379) 2024-01-12 16:58:23 +05:30
Paul Wells 2fe2a9c9f2 add session start time metric (#2377) 2024-01-11 23:23:51 -08:00
Raja Subramanian 3687396d84 Squelch error logs while waiting for track resolve. (#2376) 2024-01-12 12:16:19 +05:30
Raja Subramanian dc1b09c757 Update pion/ice to pick some more trace logging (#2374) 2024-01-11 13:57:29 +05:30
Raja Subramanian 6ff7b0faba Pass mock track in track update callback (#2373) 2024-01-11 07:54:26 +05:30
Paul Wells d70a8e366c inject logger constructor into signal server (#2372)
* inject logger constructor into signal server

* tidy

* tidy

* test
2024-01-10 03:31:54 -08:00
Benjamin Pracht 4e30e1a86d Send telemetry events when switching to COMPLETE state (#2371) 2024-01-08 16:24:53 -08:00
Raja Subramanian a1ca41a4e1 Skip reporting skew for out-of-order reports (#2369) 2024-01-08 13:11:04 +05:30
renovate[bot] d8df0f7727 Update module github.com/florianl/go-tc to v0.4.3 (#2365)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-06 22:21:37 -08:00
Paul Wells b9f9a6b35e force shutdown after second signal (#2364) 2024-01-05 04:16:02 -08:00
Raja Subramanian 32bd75648f Wait for metadata update. (#2363) 2024-01-05 17:07:44 +05:30
renovate[bot] 7049627767 Update module golang.org/x/sync to v0.6.0 (#2361)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-04 22:16:41 -08:00
renovate[bot] a738062099 Update go deps (#2352)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-01-03 16:27:27 -08:00
Paul Wells a10830a995 add protocol version 12 helper (#2358) 2024-01-03 00:06:43 -08:00
Raja Subramanian 7c8b60431d Update mute if necessary when updating track info. (#2357) 2024-01-02 23:32:43 +05:30
Raja Subramanian 73af5da956 Notify TrackInfo available from red receivers. (#2354)
* Notify TrackInfo available from red receivers.

That kicks off the down track scorer.

* test
2023-12-28 15:50:51 +05:30
Raja Subramanian 2f1a2ff39d Protect against stats getting reset. (#2351)
A reset would make `after` look like it is `before` and the diff will be
large unsigned numbers.
2023-12-28 01:16:59 +05:30
Raja Subramanian 5eea679589 Include packets out-of-order in TrafficStats. (#2350)
PacketsLost may not provide useful if repairs are discounting the loss.
So, out-of-order packets are an indication of loss and maybe subsequent
repair. Note that out-of-order could be just out-of-order by a short
amount of time, but a lot of that happening is not good either.
So, out-of-order could provide a decent view of link quality.
2023-12-27 23:15:24 +05:30
Raja Subramanian 15500d8a18 Add padding and lost packets to traffic stats (#2349)
* Add padding and lost packets to traffic stats

* aggregate padding packets
2023-12-27 17:40:59 +05:30
renovate[bot] ffac7561c8 Update module github.com/urfave/cli/v2 to v2.27.0 (#2348)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-26 16:41:32 -08:00
cnderrauber fcee6edcb2 change svc frame number log to debug (#2347) 2023-12-26 11:40:34 +08:00
renovate[bot] 28ee3f4007 Update golang.org/x/exp digest to 02704c9 (#2326)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-25 18:01:42 -08:00
Raja Subramanian bdfc684cd7 Prevent race of new track and new receiver. (#2345)
* Prevent race of new track and new receiver.

Two different concepts
1. Creation of a new media track
2. Creation of a new receiver inside the media track
collided and caused track published to not be fired.

Unify to mark creation of new receiver as the source of truth.
With simulcast codecs, creation of a new receiver should be treated as a
new published track.

* Fire onTrackPublished only on new track
2023-12-25 23:05:59 +05:30
Raja Subramanian 5429edd476 Record node selection reason. (#2346) 2023-12-25 23:03:39 +05:30
Raja Subramanian bdcd142c0d Adding some logs in subscribe path. (#2343)
Trying to chase down an older client failing to subscribe some times.
2023-12-25 14:12:08 +05:30
Raja Subramanian f5e2c1da15 Debug log downtrack life cycle a bit (#2342) 2023-12-24 14:03:51 +05:30
Raja Subramanian ee1a167c3e Correct logger field (#2341) 2023-12-24 12:25:05 +05:30
Raja Subramanian 6cac17affe Add some debug logs around track publish (#2340) 2023-12-23 18:55:24 +05:30
shishirng 3770fbce64 Analytics: send local node room state/info (#2335)
* Analytics: send local node room state/info

Signed-off-by: shishir gowda <shishir@livekit.io>
2023-12-22 18:59:04 -05:00
Raja Subramanian 26c96ec283 Synthesise codec when adding pending track for no simulcast case also. (#2339)
* Synthesise codec when adding pending track for no simulcast case also.

Older clients not using simulcast codecs were failing e2e migration
tests. Problem is that they did not have layer information and hence
SSRC could not be set on migration.

A codec was getting added later (when OnTrack was received). I missed
adding layers in that code. Could have cloned layers there and added it.
But, simplifying and adding at the start itself.

Also, cleaning up code in `MediaTrackReceiver` for no codecs case as it
should not happen any more.

* clone per layer

* fix priority determination
2023-12-22 17:09:49 +05:30
David Zhao 28ae092ea8 version 1.5.2 (#2338) v1.5.2 2023-12-21 23:04:19 -08:00
renovate[bot] 7008fdf78b Update livekit deps (#2274)
Generated by renovateBot

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-12-21 08:58:20 -08:00
Paul Wells 01f90d185f copy receivers on write (#2336)
* copy receivers on write

* cleanup

* cleanup

* test
2023-12-21 08:23:22 -08:00