mirror of
https://github.com/livekit/livekit.git
synced 2026-08-28 11:44:43 +00:00
Correct off-by-one lost count on a restart. (#3337)
* Correct off-by-one lost count on a restart. * log sender snap shot ID * metadata cache overflow count per snapshot
This commit is contained in:
@@ -152,10 +152,11 @@ type senderSnapshot struct {
|
||||
maxJitterFeed float64
|
||||
maxJitter float64
|
||||
|
||||
extLastRRSN uint64
|
||||
intervalStats intervalStats
|
||||
processedReceptionReports []rtcp.ReceptionReport
|
||||
skippedReceptionReports []rtcp.ReceptionReport
|
||||
extLastRRSN uint64
|
||||
intervalStats intervalStats
|
||||
processedReceptionReports []rtcp.ReceptionReport
|
||||
skippedReceptionReports []rtcp.ReceptionReport
|
||||
metadataCacheOverflowCount int
|
||||
}
|
||||
|
||||
func (s *senderSnapshot) MarshalLogObject(e zapcore.ObjectEncoder) error {
|
||||
@@ -188,6 +189,7 @@ func (s *senderSnapshot) MarshalLogObject(e zapcore.ObjectEncoder) error {
|
||||
e.AddObject("intervalStats", &s.intervalStats)
|
||||
e.AddObject("processedReceptionReports", wrappedReceptionReportsLogger{s, false})
|
||||
e.AddObject("skippedReceptionReports", wrappedReceptionReportsLogger{s, true})
|
||||
e.AddInt("metadataCacheOverflowCount", s.metadataCacheOverflowCount)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -228,11 +230,10 @@ type RTPStatsSender struct {
|
||||
nextSenderSnapshotID uint32
|
||||
senderSnapshots []senderSnapshot
|
||||
|
||||
clockSkewCount int
|
||||
metadataCacheOverflowCount int
|
||||
largeJumpNegativeCount int
|
||||
largeJumpCount int
|
||||
timeReversedCount int
|
||||
clockSkewCount int
|
||||
largeJumpNegativeCount int
|
||||
largeJumpCount int
|
||||
timeReversedCount int
|
||||
}
|
||||
|
||||
func NewRTPStatsSender(params RTPStatsParams, cacheSize int) *RTPStatsSender {
|
||||
@@ -370,7 +371,8 @@ func (r *RTPStatsSender) Update(
|
||||
"gapSN", gapSN,
|
||||
"currTS", extTimestamp,
|
||||
"gapTS", int64(extTimestamp-r.extHighestTS),
|
||||
"packetTime", packetTime,
|
||||
"packetTime", time.Unix(0, packetTime),
|
||||
"timeSinceHighest", time.Duration(packetTime-r.highestTime),
|
||||
"marker", marker,
|
||||
"hdrSize", hdrSize,
|
||||
"payloadSize", payloadSize,
|
||||
@@ -385,7 +387,7 @@ func (r *RTPStatsSender) Update(
|
||||
}
|
||||
|
||||
if extSequenceNumber < r.extStartSN {
|
||||
r.packetsLost += r.extStartSN - extSequenceNumber
|
||||
r.packetsLost += r.extStartSN - extSequenceNumber - 1
|
||||
|
||||
// adjust start of snapshots
|
||||
for i := uint32(0); i < r.nextSnapshotID-cFirstSnapshotID; i++ {
|
||||
@@ -635,17 +637,18 @@ func (r *RTPStatsSender) UpdateFromReceiverReport(rr rtcp.ReceptionReport) (rtt
|
||||
if r.lastRRTime == 0 {
|
||||
timeSinceLastRR = time.Duration(mono.UnixNano() - r.startTime)
|
||||
}
|
||||
r.metadataCacheOverflowCount++
|
||||
if (r.metadataCacheOverflowCount-1)%10 == 0 {
|
||||
s.metadataCacheOverflowCount++
|
||||
if (s.metadataCacheOverflowCount-1)%10 == 0 {
|
||||
r.logger.Infow(
|
||||
"metadata cache overflow",
|
||||
"senderSnapshotID", i+cFirstSnapshotID,
|
||||
"timeSinceLastRR", timeSinceLastRR,
|
||||
"receivedRR", rr,
|
||||
"extReceivedRRSN", extReceivedRRSN,
|
||||
"packetsInInterval", extReceivedRRSN-s.extLastRRSN,
|
||||
"intervalStats", &is,
|
||||
"aggregateIntervalStats", eis,
|
||||
"count", r.metadataCacheOverflowCount,
|
||||
"count", s.metadataCacheOverflowCount,
|
||||
"rtpStats", lockedRTPStatsSenderLogEncoder{r},
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user