From 20ac7fb4163ac2ca5fcda35f562a6bb040c22006 Mon Sep 17 00:00:00 2001 From: cnderrauber Date: Wed, 28 Feb 2024 12:16:34 +0800 Subject: [PATCH] Confirm migrated tracks info before declare migration completed (#2522) * Confirm migrated tracks info before declare migration completed * log expected mid --- pkg/rtc/participant.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pkg/rtc/participant.go b/pkg/rtc/participant.go index f037a46cb..3443ce2b1 100644 --- a/pkg/rtc/participant.go +++ b/pkg/rtc/participant.go @@ -709,7 +709,10 @@ func (p *ParticipantImpl) handleMigrateTracks() { if mt != nil { addedTracks = append(addedTracks, mt) } else { - p.pubLogger.Warnw("could not find migrated track", nil, "cid", cid) + p.pubLogger.Warnw("could not find migrated track, migration failed", nil, "cid", cid) + p.pendingTracksLock.Unlock() + p.IssueFullReconnect(types.ParticipantCloseReasonMigrateCodecMismatch) + return } } @@ -910,6 +913,9 @@ func (p *ParticipantImpl) SetMigrateState(s types.MigrateState) { } p.params.Logger.Debugw("SetMigrateState", "state", s) + if s == types.MigrateStateComplete { + p.handleMigrateTracks() + } p.migrateState.Store(s) p.dirty.Store(true) @@ -918,7 +924,7 @@ func (p *ParticipantImpl) SetMigrateState(s types.MigrateState) { p.TransportManager.ProcessPendingPublisherOffer() case types.MigrateStateComplete: - p.handleMigrateTracks() + p.TransportManager.ProcessPendingPublisherDataChannels() } @@ -1966,7 +1972,7 @@ func (p *ParticipantImpl) addMigratedTrack(cid string, ti *livekit.TrackInfo) *M p.pubLogger.Infow("add migrated track", "cid", cid, "trackID", ti.Sid, "track", logger.Proto(ti)) rtpReceiver := p.TransportManager.GetPublisherRTPReceiver(ti.Mid) if rtpReceiver == nil { - p.pubLogger.Errorw("could not find receiver for migrated track", nil, "trackID", ti.Sid) + p.pubLogger.Errorw("could not find receiver for migrated track", nil, "trackID", ti.Sid, "mid", ti.Mid) return nil }