Avoid locking in callback (#588)

This commit is contained in:
Raja Subramanian authored and GitHub committed 2022-04-04 21:37:10 +05:30
1 parent 130aefa597
commit b695376086
2 files changed
+20 -4

No files matched your search

+5 -3
View File
@@ -109,13 +109,13 @@ func (t *MediaTrackSubscriptions) AddSubscriber(sub types.LocalParticipant, code
trackID := t.params.MediaTrack.ID()
subscriberID := sub.ID()
t.subscribedTracksMu.Lock()
defer t.subscribedTracksMu.Unlock()
// don't subscribe to the same track multiple times
t.subscribedTracksMu.Lock()
if _, ok := t.subscribedTracks[subscriberID]; ok {
t.subscribedTracksMu.Unlock()
return nil, nil
}
t.subscribedTracksMu.Unlock()
var rtcpFeedback []webrtc.RTCPFeedback
switch t.params.MediaTrack.Kind() {
@@ -257,7 +257,9 @@ func (t *MediaTrackSubscriptions) AddSubscriber(sub types.LocalParticipant, code
sub.Negotiate()
})
t.subscribedTracksMu.Lock()
t.subscribedTracks[subscriberID] = subTrack
t.subscribedTracksMu.Unlock()
subTrack.SetPublisherMuted(t.params.MediaTrack.IsMuted())
// since sub will lock, run it in a goroutine to avoid deadlocks
+15 -1
View File
@@ -1216,8 +1216,22 @@ func (p *ParticipantImpl) onSubscribedMaxQualityChange(trackID livekit.TrackID,
SubscribedQualities: subscribedQualities,
}
p.params.Telemetry.TrackMaxSubscribedVideoQuality(context.Background(), p.ID(), &livekit.TrackInfo{Sid: string(trackID), Type: livekit.TrackType_VIDEO}, maxSubscribedQuality)
p.params.Telemetry.TrackMaxSubscribedVideoQuality(
context.Background(),
p.ID(),
&livekit.TrackInfo{
Sid: string(trackID),
Type: livekit.TrackType_VIDEO,
},
maxSubscribedQuality,
)
p.params.Logger.Debugw(
"sending max subscribed quality",
"trackID", trackID,
"qualities", subscribedQualities,
"max", maxSubscribedQuality,
)
return p.writeMessage(&livekit.SignalResponse{
Message: &livekit.SignalResponse_SubscribedQualityUpdate{
SubscribedQualityUpdate: subscribedQualityUpdate,