diff --git a/pkg/agent/client.go b/pkg/agent/client.go index 13d4aba9b..df1ff7dfe 100644 --- a/pkg/agent/client.go +++ b/pkg/agent/client.go @@ -122,7 +122,11 @@ func (c *agentClient) LaunchJob(ctx context.Context, desc *JobRequest) *serverut dispatcher := c.getDispatcher(desc.AgentName, desc.JobType) if dispatcher == nil { - logger.Infow("not dispatching agent job since no worker is available", "agentName", desc.AgentName, "jobType", desc.JobType) + logger.Infow("not dispatching agent job since no worker is available", + "agentName", desc.AgentName, + "jobType", desc.JobType, + "room", desc.Room.Name, + "roomID", desc.Room.Sid) return ret } @@ -183,6 +187,12 @@ func (c *agentClient) getDispatcher(agName string, jobType livekit.JobType) *ser } c.mu.Unlock() + if agName == "" { + // if no agent name is given, we would need to dispatch backwards compatible mode + // which means dispatching to each of the namespaces + return target + } + done := make(chan *serverutils.IncrementalDispatcher[string], 1) c.workers.Submit(func() { agentNames.ForEach(func(ag string) { diff --git a/pkg/rtc/room.go b/pkg/rtc/room.go index b0c515df0..dde6974aa 100644 --- a/pkg/rtc/room.go +++ b/pkg/rtc/room.go @@ -1488,7 +1488,15 @@ func (r *Room) createAgentDispatchesFromRoomAgent() { return } - for _, ag := range r.internal.AgentDispatches { + roomDisp := r.internal.AgentDispatches + if len(roomDisp) == 0 { + // Backward compatibility: by default, start any agent in the empty JobName + roomDisp = []*livekit.RoomAgentDispatch{ + &livekit.RoomAgentDispatch{}, + } + } + + for _, ag := range roomDisp { ad := &livekit.AgentDispatch{ Id: guid.New(guid.AgentDispatchPrefix), AgentName: ag.AgentName, diff --git a/pkg/service/roomallocator.go b/pkg/service/roomallocator.go index 131e77c41..2670985e5 100644 --- a/pkg/service/roomallocator.go +++ b/pkg/service/roomallocator.go @@ -106,15 +106,9 @@ func (r *StandardRoomAllocator) CreateRoom(ctx context.Context, req *livekit.Cre internal.TrackEgress = req.Egress.Tracks } } - if req.Agent == nil { - // Backward compatibility: by default, start any agent in the empty JobName - req.Agent = &livekit.RoomAgent{ - Dispatches: []*livekit.RoomAgentDispatch{ - &livekit.RoomAgentDispatch{}, - }, - } + if req.Agent != nil { + internal.AgentDispatches = req.Agent.Dispatches } - internal.AgentDispatches = req.Agent.Dispatches if req.MinPlayoutDelay > 0 || req.MaxPlayoutDelay > 0 { internal.PlayoutDelay = &livekit.PlayoutDelay{ Enabled: true,