mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2026-02-04 09:56:47 +00:00
race condition debug wip
This commit is contained in:
@@ -129,6 +129,10 @@ class DailyClient(VideoPlatformClient):
|
|||||||
"""Get room presence/session data for a Daily.co room."""
|
"""Get room presence/session data for a Daily.co room."""
|
||||||
return await self._api_client.get_room_presence(room_name)
|
return await self._api_client.get_room_presence(room_name)
|
||||||
|
|
||||||
|
async def delete_room(self, room_name: str) -> None:
|
||||||
|
"""Delete a Daily.co room (idempotent - succeeds even if room doesn't exist)."""
|
||||||
|
return await self._api_client.delete_room(room_name)
|
||||||
|
|
||||||
async def get_meeting_participants(
|
async def get_meeting_participants(
|
||||||
self, meeting_id: str
|
self, meeting_id: str
|
||||||
) -> MeetingParticipantsResponse:
|
) -> MeetingParticipantsResponse:
|
||||||
|
|||||||
@@ -845,15 +845,47 @@ async def process_meetings():
|
|||||||
end_date = end_date.replace(tzinfo=timezone.utc)
|
end_date = end_date.replace(tzinfo=timezone.utc)
|
||||||
|
|
||||||
client = create_platform_client(meeting.platform)
|
client = create_platform_client(meeting.platform)
|
||||||
room_sessions = await client.get_room_sessions(meeting.room_name)
|
has_active_sessions = False
|
||||||
|
has_had_sessions = False
|
||||||
|
|
||||||
has_active_sessions = bool(
|
if meeting.platform == "daily":
|
||||||
room_sessions and any(s.ended_at is None for s in room_sessions)
|
try:
|
||||||
)
|
presence = await client.get_room_presence(meeting.room_name)
|
||||||
has_had_sessions = bool(room_sessions)
|
has_active_sessions = presence.total_count > 0
|
||||||
logger_.info(
|
|
||||||
f"has_active_sessions={has_active_sessions}, has_had_sessions={has_had_sessions}"
|
room_sessions = await client.get_room_sessions(
|
||||||
)
|
meeting.room_name
|
||||||
|
)
|
||||||
|
has_had_sessions = bool(room_sessions)
|
||||||
|
|
||||||
|
logger_.info(
|
||||||
|
"Daily.co presence check",
|
||||||
|
has_active_sessions=has_active_sessions,
|
||||||
|
has_had_sessions=has_had_sessions,
|
||||||
|
presence_count=presence.total_count,
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
logger_.warning(
|
||||||
|
"Daily.co presence API failed, falling back to DB sessions",
|
||||||
|
exc_info=True,
|
||||||
|
)
|
||||||
|
room_sessions = await client.get_room_sessions(
|
||||||
|
meeting.room_name
|
||||||
|
)
|
||||||
|
has_active_sessions = bool(
|
||||||
|
room_sessions
|
||||||
|
and any(s.ended_at is None for s in room_sessions)
|
||||||
|
)
|
||||||
|
has_had_sessions = bool(room_sessions)
|
||||||
|
else:
|
||||||
|
room_sessions = await client.get_room_sessions(meeting.room_name)
|
||||||
|
has_active_sessions = bool(
|
||||||
|
room_sessions and any(s.ended_at is None for s in room_sessions)
|
||||||
|
)
|
||||||
|
has_had_sessions = bool(room_sessions)
|
||||||
|
logger_.info(
|
||||||
|
f"has_active_sessions={has_active_sessions}, has_had_sessions={has_had_sessions}"
|
||||||
|
)
|
||||||
|
|
||||||
if has_active_sessions:
|
if has_active_sessions:
|
||||||
logger_.debug("Meeting still has active sessions, keep it")
|
logger_.debug("Meeting still has active sessions, keep it")
|
||||||
@@ -872,7 +904,20 @@ async def process_meetings():
|
|||||||
await meetings_controller.update_meeting(
|
await meetings_controller.update_meeting(
|
||||||
meeting.id, is_active=False
|
meeting.id, is_active=False
|
||||||
)
|
)
|
||||||
logger_.info("Meeting is deactivated")
|
logger_.info("Meeting deactivated in database")
|
||||||
|
|
||||||
|
if meeting.platform == "daily":
|
||||||
|
try:
|
||||||
|
await client.delete_room(meeting.room_name)
|
||||||
|
logger_.info(
|
||||||
|
"Daily.co room deleted", room_name=meeting.room_name
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
logger_.warning(
|
||||||
|
"Failed to delete Daily.co room",
|
||||||
|
room_name=meeting.room_name,
|
||||||
|
exc_info=True,
|
||||||
|
)
|
||||||
|
|
||||||
processed_count += 1
|
processed_count += 1
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user