Commit Graph

1870 Commits

Author SHA1 Message Date
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
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
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
Raja Subramanian
32bd75648f Wait for metadata update. (#2363) 2024-01-05 17:07:44 +05:30
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
cnderrauber
fcee6edcb2 change svc frame number log to debug (#2347) 2023-12-26 11:40:34 +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
Paul Wells
01f90d185f copy receivers on write (#2336)
* copy receivers on write

* cleanup

* cleanup

* test
2023-12-21 08:23:22 -08:00
Raja Subramanian
4c1047d8c3 Populate simulcast codec layers. (#2334)
Previously, it was done on read. Missed populating it on write
in the TrackInfo consolidation effort.

Fix by populating layers when adding pending track itself.
As all codecs will have same layers, clone the top level layers and add
it all codecs.
2023-12-21 18:52:49 +05:30
Raja Subramanian
a4888fcf8f Prevent unsafe access (hopefully). (#2332)
* Prevent unsafe access (hopefully).

Thank you @paulwe for catching it.

* prevent recursive locks
2023-12-21 16:02:10 +05:30
Kou
5dc87d7ac5 Fix panic occurs when starting livekit-server with key-file option (#2312) (#2313) 2023-12-20 23:18:28 -08:00
Raja Subramanian
faff67162b Consolidate TrackInfo. (#2331)
* Consolidate TrackInfo.

TrackInfo was spread across a bit. Consolidating it.

* TODO comments

* test

* update TrackInfo on SSRC change

* further consolidation

* log mimes only

* update receivers on SSRC set

* clone proto on return

* feedback: break loop on mime match

* prevent data race
2023-12-21 09:56:54 +05:30
David Zhao
be526cc43e Adds callback to notify when workers are registered (#2328) 2023-12-20 08:10:35 -08:00
Raja Subramanian
d0c36aa6cc Make UpdateTrackInfo an interface. (#2327) 2023-12-20 09:58:08 +05:30
Raja Subramanian
7c841e8895 Only assign TrackInfo Version on fresh publish. (#2325)
* Only assign TrackInfo Version on fresh publish.

* remove redundant nil check
2023-12-20 09:48:13 +05:30
Raja Subramanian
37539fdf76 Add Version to TrackInfo. (#2324)
* Add Version to TrackInfo.

Set when a track is published.

* update protocol
2023-12-19 11:50:48 +05:30
Raja Subramanian
5ee307952e Reduce a couple of logs to Debugw. Small saving. (#2322) 2023-12-18 14:27:55 +05:30
Raja Subramanian
3cf4fbc6a9 Store identity in participant update cache. (#2320)
Need to store identity of other partiicpant in cache so that it
can be sent with the disconnected participant update.
Side note: Feels like the cache can be made to hold the full proto
to make things simpler, but just adding a field for now.
2023-12-15 15:40:10 +05:30
cnderrauber
a150eaf697 Fix mid info lost when migrating multi-codec simulcast track (#2315)
* Fix mid info lost when migrating multi-codec simulcast track

* update pion
2023-12-15 00:02:27 +08:00
Raja Subramanian
0478af449f Do not error on end-of-candidates candidate (#2314) 2023-12-14 15:22:57 +05:30
lukasIO
23b46042cc Populate disconnect updates with participant identity (#2310) 2023-12-13 15:32:25 +01:00
Raja Subramanian
dfcafff955 Log track info when media published. (#2306)
With pending track added moved to Debugw, will be good to have this when
track is published.
2023-12-11 11:20:25 +05:30
Raja Subramanian
c766676d36 Handle nil pair (#2305) 2023-12-10 21:44:16 +05:30
cnderrauber
b0b7489b0e Fix svc freeze caused by key frame id wrap around (#2302)
* Fix svc freeze caused by key frame id wrap around

* rename
2023-12-07 12:53:17 +08:00
David Colburn
1bff4f387d Update io service (#2300)
* update io service

* consistency
2023-12-06 11:17:59 -08:00
Raja Subramanian
1f335dd564 Convert to formatter string for lazy evaluation. (#2298) 2023-12-06 18:11:05 +05:30