Skip to content

Commit 8224e7f

Browse files
Log more information in room callbacks (#257)
1 parent 9df7dc8 commit 8224e7f

File tree

3 files changed

+42
-16
lines changed

3 files changed

+42
-16
lines changed

Diff for: go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ require (
1414
github.com/livekit/mediatransportutil v0.0.0-20241220010243-a2bdee945564
1515
github.com/livekit/protocol v1.30.1-0.20250108225018-c533a46256c2
1616
github.com/livekit/psrpc v0.6.1-0.20241018124827-1efff3d113a8
17-
github.com/livekit/server-sdk-go/v2 v2.4.2-0.20250108162600-c551c7c10e15
17+
github.com/livekit/server-sdk-go/v2 v2.4.2-0.20250110074101-30b57947c1c4
1818
github.com/livekit/sipgo v0.13.2-0.20241209123643-27500ef99c39
1919
github.com/mjibson/go-dsp v0.0.0-20180508042940-11479a337f12
2020
github.com/ory/dockertest/v3 v3.10.0
@@ -29,7 +29,7 @@ require (
2929
github.com/urfave/cli/v2 v2.27.2
3030
github.com/zaf/resample v1.5.0
3131
golang.org/x/exp v0.0.0-20241217172543-b2144cdd0a67
32-
google.golang.org/protobuf v1.36.1
32+
google.golang.org/protobuf v1.36.2
3333
gopkg.in/hraban/opus.v2 v2.0.0-20230925203106-0188a62cb302
3434
gopkg.in/yaml.v3 v3.0.1
3535
)

Diff for: go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,8 @@ github.com/livekit/protocol v1.30.1-0.20250108225018-c533a46256c2 h1:0WsFt4+yn35
126126
github.com/livekit/protocol v1.30.1-0.20250108225018-c533a46256c2/go.mod h1:08wT2rI6GecTCwh9n8OA28Gb7ZQNtIR+hX/LccP1TaY=
127127
github.com/livekit/psrpc v0.6.1-0.20241018124827-1efff3d113a8 h1:Ibh0LoFl5NW5a1KFJEE0eLxxz7dqqKmYTj/BfCb0PbY=
128128
github.com/livekit/psrpc v0.6.1-0.20241018124827-1efff3d113a8/go.mod h1:CQUBSPfYYAaevg1TNCc6/aYsa8DJH4jSRFdCeSZk5u0=
129-
github.com/livekit/server-sdk-go/v2 v2.4.2-0.20250108162600-c551c7c10e15 h1:4Nku70OAMcXZwiE0OAyQXwjSSuvhpykeN2I3fm9SQHs=
130-
github.com/livekit/server-sdk-go/v2 v2.4.2-0.20250108162600-c551c7c10e15/go.mod h1:9TSaPKBrbTO38TLJPYtdiKTrI1e0VXWrl/y7Ye9Cp4M=
129+
github.com/livekit/server-sdk-go/v2 v2.4.2-0.20250110074101-30b57947c1c4 h1:/bYM2bv5vjdFOoeZ5e3FFMaIeNzVFsHBzWG+/9dPwJQ=
130+
github.com/livekit/server-sdk-go/v2 v2.4.2-0.20250110074101-30b57947c1c4/go.mod h1:w7GnR750YKsx8yG8kpBoUlO1Y2p/0nPqdGMP4XSoLYQ=
131131
github.com/livekit/sipgo v0.13.2-0.20241209123643-27500ef99c39 h1:Lm1cv4AlKKvprrjxsg7ilnzA3XC6ivxqLGAqTJkBdcM=
132132
github.com/livekit/sipgo v0.13.2-0.20241209123643-27500ef99c39/go.mod h1:nbNi0IsYn4tyY2ab7Rafvifty07miHYvgedPMKWbaI4=
133133
github.com/mackerelio/go-osstat v0.2.5 h1:+MqTbZUhoIt4m8qzkVoXUJg1EuifwlAJSk4Yl2GXh+o=
@@ -360,8 +360,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241219192143-6b3ec007d9bb h1:
360360
google.golang.org/genproto/googleapis/rpc v0.0.0-20241219192143-6b3ec007d9bb/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA=
361361
google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU=
362362
google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
363-
google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
364-
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
363+
google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU=
364+
google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
365365
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
366366
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
367367
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=

Diff for: pkg/sip/room.go

+36-10
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,17 @@ type ParticipantInfo struct {
4545

4646
type Room struct {
4747
log logger.Logger
48+
roomLog logger.Logger // deferred logger
4849
room *lksdk.Room
4950
mix *mixer.Mixer
5051
out *media.SwitchWriter
5152
outDtmf atomic.Pointer[dtmf.Writer]
5253
p ParticipantInfo
53-
ready atomic.Bool
54+
ready core.Fuse
5455
subscribe atomic.Bool
5556
subscribed core.Fuse
5657
stopped core.Fuse
58+
closed core.Fuse
5759
}
5860

5961
type ParticipantConfig struct {
@@ -75,6 +77,21 @@ type RoomConfig struct {
7577
func NewRoom(log logger.Logger) *Room {
7678
r := &Room{log: log, out: media.NewSwitchWriter(RoomSampleRate)}
7779
r.mix = mixer.NewMixer(r.out, rtp.DefFrameDur)
80+
81+
roomLog, resolve := log.WithDeferredValues()
82+
r.roomLog = roomLog
83+
84+
go func() {
85+
select {
86+
case <-r.ready.Watch():
87+
resolve("room", r.room.Name(), "roomID", r.room.SID())
88+
case <-r.stopped.Watch():
89+
resolve()
90+
case <-r.closed.Watch():
91+
resolve()
92+
}
93+
}()
94+
7895
return r
7996
}
8097

@@ -100,7 +117,7 @@ func (r *Room) Room() *lksdk.Room {
100117
}
101118

102119
func (r *Room) participantJoin(rp *lksdk.RemoteParticipant) {
103-
log := r.log.WithValues("participant", rp.Identity())
120+
log := r.roomLog.WithValues("participant", rp.Identity(), "pID", rp.SID())
104121
log.Debugw("participant joined")
105122
switch rp.Kind() {
106123
case lksdk.ParticipantSIP:
@@ -112,8 +129,13 @@ func (r *Room) participantJoin(rp *lksdk.RemoteParticipant) {
112129
}
113130
}
114131

132+
func (r *Room) participantLeft(rp *lksdk.RemoteParticipant) {
133+
log := r.roomLog.WithValues("participant", rp.Identity(), "pID", rp.SID())
134+
log.Debugw("participant left")
135+
}
136+
115137
func (r *Room) subscribeTo(pub *lksdk.RemoteTrackPublication, rp *lksdk.RemoteParticipant) {
116-
log := r.log.WithValues("participant", rp.Identity(), "track", pub.SID(), "trackName", pub.Name())
138+
log := r.roomLog.WithValues("participant", rp.Identity(), "pID", rp.SID(), "trackID", pub.SID(), "trackName", pub.Name())
117139
if pub.Kind() != lksdk.TrackKindAudio {
118140
log.Debugw("skipping non-audio track")
119141
return
@@ -138,25 +160,28 @@ func (r *Room) Connect(conf *config.Config, rconf RoomConfig) error {
138160
}
139161
roomCallback := &lksdk.RoomCallback{
140162
OnParticipantConnected: func(rp *lksdk.RemoteParticipant) {
141-
log := r.log.WithValues("participant", rp.Identity())
163+
log := r.roomLog.WithValues("participant", rp.Identity(), "pID", rp.SID())
142164
if !r.subscribe.Load() {
143165
log.Debugw("skipping participant join event - subscribed flag not set")
144166
return // will subscribe later
145167
}
146168
r.participantJoin(rp)
147169
},
170+
OnParticipantDisconnected: func(rp *lksdk.RemoteParticipant) {
171+
r.participantLeft(rp)
172+
},
148173
ParticipantCallback: lksdk.ParticipantCallback{
149174
OnTrackPublished: func(pub *lksdk.RemoteTrackPublication, rp *lksdk.RemoteParticipant) {
150-
log := r.log.WithValues("participant", rp.Identity(), "track", pub.SID(), "trackName", pub.Name())
175+
log := r.roomLog.WithValues("participant", rp.Identity(), "pID", rp.SID(), "trackID", pub.SID(), "trackName", pub.Name())
151176
if !r.subscribe.Load() {
152177
log.Debugw("skipping track publish event - subscribed flag not set")
153178
return // will subscribe later
154179
}
155180
r.subscribeTo(pub, rp)
156181
},
157182
OnTrackSubscribed: func(track *webrtc.TrackRemote, pub *lksdk.RemoteTrackPublication, rp *lksdk.RemoteParticipant) {
158-
log := r.log.WithValues("participant", rp.Identity(), "track", track.ID(), "trackName", pub.Name())
159-
if !r.ready.Load() {
183+
log := r.roomLog.WithValues("participant", rp.Identity(), "pID", rp.SID(), "trackID", track.ID(), "trackName", pub.Name())
184+
if !r.ready.IsBroken() {
160185
log.Warnw("ignoring track, room not ready", nil)
161186
return
162187
}
@@ -236,7 +261,7 @@ func (r *Room) Connect(conf *config.Config, rconf RoomConfig) error {
236261
r.p.ID = r.room.LocalParticipant.SID()
237262
r.p.Identity = r.room.LocalParticipant.Identity()
238263
room.LocalParticipant.SetAttributes(partConf.Attributes)
239-
r.ready.Store(true)
264+
r.ready.Break()
240265
r.subscribe.Store(false) // already false, but keep for visibility
241266

242267
// Not subscribing to any tracks just yet!
@@ -316,7 +341,8 @@ func (r *Room) CloseWithReason(reason livekit.DisconnectReason) error {
316341
if r == nil {
317342
return nil
318343
}
319-
r.ready.Store(false)
344+
345+
r.closed.Break()
320346
r.subscribe.Store(false)
321347
err := r.CloseOutput()
322348
r.SetDTMFOutput(nil)
@@ -358,7 +384,7 @@ func (r *Room) NewParticipantTrack(sampleRate int) (media.WriteCloser[media.PCM1
358384
}
359385

360386
func (r *Room) SendData(data lksdk.DataPacket, opts ...lksdk.DataPublishOption) error {
361-
if r == nil || !r.ready.Load() {
387+
if r == nil || !r.ready.IsBroken() || r.closed.IsBroken() {
362388
return nil
363389
}
364390
return r.room.LocalParticipant.PublishDataPacket(data, opts...)

0 commit comments

Comments
 (0)