diff --git a/pkg/rtc/participant.go b/pkg/rtc/participant.go index d8872f872..db253389d 100644 --- a/pkg/rtc/participant.go +++ b/pkg/rtc/participant.go @@ -1611,16 +1611,13 @@ func (p *ParticipantImpl) addMediaTrack(signalCid string, sdpCid string, ti *liv p.supervisor.ClearPublishedTrack(livekit.TrackID(ti.Sid), mt) // not logged when closing - if !p.isClosed.Load() { - p.params.Telemetry.TrackUnpublished( - context.Background(), - p.ID(), - p.Identity(), - mt.ToProto(), - true, - ) - } - p.MigrateState() + p.params.Telemetry.TrackUnpublished( + context.Background(), + p.ID(), + p.Identity(), + mt.ToProto(), + !p.IsClosed(), + ) // re-use track sid p.pendingTracksLock.Lock() diff --git a/pkg/rtc/subscriptionmanager.go b/pkg/rtc/subscriptionmanager.go index f4d93e8bc..193dfbb7f 100644 --- a/pkg/rtc/subscriptionmanager.go +++ b/pkg/rtc/subscriptionmanager.go @@ -512,14 +512,16 @@ func (m *SubscriptionManager) handleSubscribedTrackClose(s *trackSubscription, w s.setSubscribedTrack(nil) go m.params.OnTrackUnsubscribed(subTrack) + // always trigger to decrement unsubscribed counter. However, only log an analytics event when + // * the participant isn't closing + // * it's not a migration + m.params.Telemetry.TrackUnsubscribed( + context.Background(), + m.params.Participant.ID(), + &livekit.TrackInfo{Sid: string(s.trackID), Type: subTrack.MediaTrack().Kind()}, + !willBeResumed && !m.params.Participant.IsClosed(), + ) if !willBeResumed { - m.params.Telemetry.TrackUnsubscribed( - context.Background(), - m.params.Participant.ID(), - &livekit.TrackInfo{Sid: string(s.trackID), Type: subTrack.MediaTrack().Kind()}, - !m.params.Participant.IsClosed(), - ) - sender := subTrack.RTPSender() if sender != nil { m.params.Logger.Debugw("removing PeerConnection track",