Commit Graph

1100 Commits

Author SHA1 Message Date
David Zhao d146ec7a1f Improve logging messages with RoomService (#1203) 2022-11-30 22:17:28 -08:00
David Zhao 1ac6311849 Suppress a few additional Pion logs (#1199)
* Suppress a few additional Pion logs

* remove dupe
2022-11-30 13:32:46 -08:00
cnderrauber 3c907ed460 Add stats for data channel and signal (#1198)
* Add stats for data channel and signal

* Solve comment
2022-11-30 14:53:19 +08:00
Mathew Kamkar caae389717 node type prometheus metric labels (#1197) 2022-11-29 20:36:35 -08:00
cnderrauber 711799ecf8 Encoding primary packet only if red encoding don't have enough space (#1196)
* Encoding primary packet only if red encoding don't have enough space

* clean code
2022-11-28 13:58:01 +08:00
cnderrauber aaeb3c933c Fix rtcp lost for downtrack used incorrect buffer factory (#1195)
* Fix rtcp lost for downtrack used incorrect buffer factory

In buffer factory change(#1173), every pariticipant has its own
buffer factory, can't use publisher's bufferfactory to create
DownTrack

* clean code
2022-11-28 13:04:56 +08:00
Raja Subramanian 086009f05a Do not forward media till peer connection is connected. (#1194)
There were some failures with missing media. The only thing I could
see between working and non-working case is when media forwarding
starts. So, delay media forwarding till peer connection is connected.

Also, add a subscribe op only if a subscribe/unsubscribe queuing is
successful. There was a recent change to not queue a subscribe when
the participant is closed/disconnected. This got the subscribe op
counter out of whack.
2022-11-26 21:42:19 +05:30
Raja Subramanian 55718724a9 Check forwarder started when seeing. (#1191)
When switching from local -> remote or remote -> local,
the forwarder state is cached and restored after the switch
to ensure continuity in sequence number /time stamp.
But, if the forwarder had not started before the switch,
the sequence number always starts at 1 because of seeding.
So, do not see unless forwarder was started before the switch.
2022-11-26 01:05:29 +05:30
Raja Subramanian 0256e071ad Promote dyancast logs for debugging (#1190) 2022-11-25 10:16:30 +05:30
cnderrauber c28b07fd11 set stereo max bitrates to 510000 (#1188) 2022-11-24 22:51:15 +08:00
Raja Subramanian 3074cb862f Force 'allowed; even on subscription.' (#1187)
Also not holding lock while resolving by sid. Not pretty.
But, we should deprecate SID based permissions.

Also, wire changes, possibly due to redis cluster PR?
2022-11-23 14:13:20 +05:30
cnderrauber 6711060cdb Add enable loopback candidate option (#1185) 2022-11-23 16:01:36 +08:00
Raja Subramanian 491a15e49e Prevent subscription after participant close. (#1182) 2022-11-23 09:10:44 +05:30
Tom Xiong e5dabd466e Support redis cluster mode (#1181)
* use redisConfig of protocol instead of redisConfig and use redis of protocol to create redis client to support redis cluster mode too
2022-11-22 10:36:43 -08:00
David Zhao b118ba917c Set forceRelay to unset by default (#1184)
Setting it to `DISABLED` could cause clients to override user preference to use relay.
2022-11-22 10:07:56 -08:00
Raja Subramanian aba18accd9 Prevent rtx buffer and forwarding path colliding (#1174)
* Prevent rtx buffer and forwarding path colliding

Received packets are put into RTX buffer which is
a circular buffer and the packet (sequence number) is
queued for forwarding. If the RTX buffer fills up
and cycles before forwarding happens, forwarding
would pick the wrong packet (as it is holding a
reference to a byte slice in the RTX buffer) to forward.

Prevent it by moving reading from RTX buffer just
before forwarding. Adds an extra copy from RTX buffer
-> temp buffer for forwarding, but ensures that forwarding
buffer is not used by another go routine.

* Revert some changes from previous commit

Details:
- Do all forward processing as before.
- One difference is not load raw packet into ExtPacket.
- Load raw packet into provided buffer when module that reads
using ReadExtended calls that function. If the packet is
not there in the retransmission buffer, that packet will be
dropped. This is the case we are trying to fix, i. e. the RTX
buffer has cycled before ReadExtended could pull the packet.
This makes a copy into the provided buffer so that the data
does not change underneath.

* Remove debug comment

* Oops missed a function call
2022-11-19 13:19:49 +05:30
cnderrauber a52a295cf3 Fix potential ssrc collision between participants (#1173) 2022-11-18 10:39:17 +08:00
Raja Subramanian fd1cc36bdc Force full reconnect when there is no previous answer during migration. (#1168) 2022-11-17 10:17:56 +05:30
Mathew Kamkar 8c8a4d245c command to show help with hidden generated flags (#1171) 2022-11-16 19:20:22 -08:00
Benjamin Pracht 2c2c6f9da2 Do not append the stream key to the ingress URL for rtmp (#1167) 2022-11-15 09:19:25 -08:00
cnderrauber a72cbea352 fix memory leak on long run room/participant (#1169)
* Fix memory leak

* update pion

* clean code
2022-11-15 19:34:39 +08:00
Raja Subramanian bea1c77d05 Lmit failed send to specific error type (#1164) 2022-11-15 08:02:11 +05:30
Raja Subramanian 9f4e7ee4bd Check for ignored with fully formatted log message (#1163) 2022-11-14 11:16:01 +05:30
Raja Subramanian 379301c0bc A few more log tweaks (#1159) 2022-11-11 13:44:14 +05:30
Raja Subramanian fe0502c886 Demote some stable logs to Debugw (#1158)
* Demote some stable logs to Debugw

* Add 'discard message from' to ignore list
2022-11-11 10:17:47 +05:30
David Zhao e2d775588f Confirm room creation prior to returning from CreateRoom (#1157) 2022-11-09 23:47:41 -08:00
David Zhao e5d21cb1d9 CreateRoom API to actually create the room on an RTC node (#1155)
Previously, CreateRoom only created the room in storage, but did not
hydrate it on an RTC node. This has caused strange behaviors such as
emptyTimeout not working correctly (#1109).

Also reduced room reap worker to consistently reap rooms. Fixes #241
2022-11-09 23:35:35 -08:00
MaxnSter 7e89ad3fbd RedisStore: make UnlockRoom atomic (#1044)
Co-authored-by: David Zhao <dz@livekit.io>
2022-11-07 23:04:46 -08:00
Benjamin Pracht c735668f67 Use the redis.UniversalClient interface instead of *redis.Client when interacting with go-redis (#1149)
* Use the redis.UniversalClient interface instead of *redis.Client when interacting with go-redis

* Update protocol to v1.2.1
2022-11-07 17:27:28 -08:00
cnderrauber 5a8a6d11b2 Set track level codec settings for all pending tracks (#1148) 2022-11-07 17:45:23 +08:00
cnderrauber 0310aa9250 Make sure client get participant info before track fired (#1147) 2022-11-07 14:50:45 +08:00
cnderrauber 34fd1a02e3 revert canclose method of red receivers (#1142) 2022-11-03 15:30:04 +08:00
Raja Subramanian 4d480fc05b Avoid divide-by-zero (#1141) 2022-11-02 22:38:18 +05:30
cnderrauber bed488ceeb Recover lost packet from red encoding for opus only client (#1139)
* Recover lost packet from red encoding for opus only client
2022-11-02 18:39:57 +08:00
cnderrauber bdd69c7a1c Add red encoding for opus only publisher (#1137)
* Add red encodings for opus only publisher

* Add test case for red receiver
2022-11-02 10:36:29 +08:00
cnderrauber dd30808e5e Don't collect external address for ip filterd out (#1135) 2022-10-31 17:50:11 +08:00
cnderrauber 5edb42a9fd experiment fallback to tcp when udp unstable (#1119)
* fallback to tcp when udp unstable
2022-10-31 09:40:20 +08:00
David Colburn 0aa8684f1c fix activeRecording (#1132)
* fix activeRecording

* also check if p is nil
2022-10-28 12:09:37 -07:00
Raja Subramanian 170d4b8629 Seed snapshots (#1128)
* Seed snapshots

- For one cycle after seeding, delta snap shot can get a huge gap
because of snapshot iitializing from start if not present. Not
a huge deal sa it should not affect functionality, but saving/restoring
(at least with down track) snap shot is a big deal. So just do it.
- Have been seeing a bunch of cases of delta stats getting a lot of
packets due to out-of-order (what seems like) receiver report. So,
save the receiver report and log it when out-of-order is detected
to understand if they are closely spaced or something else could be
happening.

* Remove comment that does not apply anymore

* log current time and RR
2022-10-28 08:53:21 +05:30
cnderrauber 4783db34ef Remove DD extension when AV1 not preferred (#1129) 2022-10-27 15:51:50 +08:00
Benjamin Pracht 9a45b59414 Use ingress specific grants (#1125) 2022-10-26 21:37:36 -07:00
Mathew Kamkar b2493b49f7 baseFlags do not need to be set (#1127) 2022-10-26 14:20:13 -07:00
David Colburn 7223d9c132 web egress (#1126) 2022-10-26 13:43:56 -07:00
Mathew Kamkar 26fe910e88 Generated CLI Flags (#1112) 2022-10-25 22:24:08 -07:00
Raja Subramanian 82c2ec8273 Remove named returns from room service. (#1124) 2022-10-26 10:24:13 +05:30
Raja Subramanian 1e8cc0dc76 Consolidate getMemoryStats (#1122)
* Consolidate getMemoryStats

* Avoid divide-by-0
2022-10-26 09:16:39 +05:30
cnderrauber 7a7fc09372 Add fps calculator for VP8 and DependencyDescriptor (#1110)
* Add fps calculator for VP8 and DependencyDescriptor

* clean code

* unit test

* clean code

* solve comment
2022-10-26 09:28:28 +08:00
Raja Subramanian 96a058b503 Populate memory load in node stats. (#1121) 2022-10-25 21:31:23 +05:30
Raja Subramanian 222ce5d1a8 Notify max layer taking into account overshoot. (#1117)
* Notify max layer taking into account overshoot.

An attempt to handle case of FF stopping layer 0, but not layer 1.
When max subscribed layer is layer 0, server allows overshoot to layer 1
to ensure continued streaming when the channel is not congested.

But, dynacast could have reported maximum subscribed layer as layer 0.

This is a very simple attempt to address that by taking overshoot
into account. Needs testing if this works well or not.

NOTE: When subsriber/down track is unmuted, it will report
the max subscribed layer as the max required layer. In those cases,
if the client does not start layer 0, there will still be an issue.
IOW, server is not keeping track of client behaviour that the client
has stopped layer 0 and publishing only layer 1. Server is just
accommodating overshoot with this change.

* Fix a couple of tests and change reflect.DeepEqual -> require.Equal as
much as possible
2022-10-23 22:46:01 +05:30
Raja Subramanian 794c74360b Do not log duplicate packet error. (#1116)
Also, use bucket.Err* as it has been moved to mediatransportutil
2022-10-23 09:39:50 +05:30