From c1d7dbd4fc9865eb31931804b914e2d505dad56e Mon Sep 17 00:00:00 2001 From: David Zhao Date: Mon, 19 Dec 2022 14:30:14 -0800 Subject: [PATCH] Tweaks to prometheus participant counter (#1240) * Tweaks to prometheus participant counter Ensure that we don't miss adding a count in migration scenarios * avoid nil ICEConfig --- pkg/rtc/transportmanager.go | 1 + pkg/telemetry/events.go | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/pkg/rtc/transportmanager.go b/pkg/rtc/transportmanager.go index 1df76e823..131255046 100644 --- a/pkg/rtc/transportmanager.go +++ b/pkg/rtc/transportmanager.go @@ -83,6 +83,7 @@ func NewTransportManager(params TransportManagerParams) (*TransportManager, erro t := &TransportManager{ params: params, mediaLossProxy: NewMediaLossProxy(MediaLossProxyParams{Logger: params.Logger}), + iceConfig: &livekit.ICEConfig{}, } t.mediaLossProxy.OnMediaLossUpdate(t.onMediaLossUpdate) diff --git a/pkg/telemetry/events.go b/pkg/telemetry/events.go index e68dfb3c1..bb39b372d 100644 --- a/pkg/telemetry/events.go +++ b/pkg/telemetry/events.go @@ -110,6 +110,8 @@ func (t *telemetryService) ParticipantActive( worker, ok := t.getWorker(livekit.ParticipantID(participant.Sid)) if !ok { + // in case of session migration, we may not have seen a Join event take place. + // we'd need to create the worker here before being able to process events worker = t.createWorker( ctx, livekit.RoomID(room.Sid), @@ -117,6 +119,9 @@ func (t *telemetryService) ParticipantActive( livekit.ParticipantID(participant.Sid), livekit.ParticipantIdentity(participant.Identity), ) + + // need to also account for participant count + prometheus.AddParticipant() } worker.SetConnected() @@ -138,12 +143,17 @@ func (t *telemetryService) ParticipantLeft(ctx context.Context, ) { t.enqueue(func() { isConnected := false + hasWorker := false if worker, ok := t.getWorker(livekit.ParticipantID(participant.Sid)); ok { + hasWorker = true isConnected = worker.IsConnected() worker.Close() } - prometheus.SubParticipant() + if hasWorker { + // signifies we had incremented participant count + prometheus.SubParticipant() + } if isConnected && shouldSendEvent { t.NotifyEvent(ctx, &livekit.WebhookEvent{