always return debug sessions that are <30s fresh (#3132)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import asyncio
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from enum import Enum
|
||||
from functools import partial
|
||||
from typing import Annotated, Any
|
||||
@@ -2100,8 +2101,32 @@ async def new_debug_session(
|
||||
sessions associated with those completed debug sessions.
|
||||
|
||||
Return the new debug session.
|
||||
|
||||
CAVEAT: if an existing debug session for this user is <30s old, then we
|
||||
return that instead. This is to curtail damage from browser session
|
||||
spamming.
|
||||
"""
|
||||
|
||||
if current_user_id:
|
||||
debug_session = await app.DATABASE.get_latest_debug_session_for_user(
|
||||
organization_id=current_org.organization_id,
|
||||
user_id=current_user_id,
|
||||
workflow_permanent_id=workflow_permanent_id,
|
||||
)
|
||||
|
||||
if debug_session:
|
||||
now = datetime.now(timezone.utc)
|
||||
if now - debug_session.created_at < timedelta(seconds=30):
|
||||
LOG.info(
|
||||
"Existing debug session is less than 30s old, returning it",
|
||||
debug_session_id=debug_session.debug_session_id,
|
||||
browser_session_id=debug_session.browser_session_id,
|
||||
organization_id=current_org.organization_id,
|
||||
user_id=current_user_id,
|
||||
workflow_permanent_id=workflow_permanent_id,
|
||||
)
|
||||
return debug_session
|
||||
|
||||
completed_debug_sessions = await app.DATABASE.complete_debug_sessions(
|
||||
organization_id=current_org.organization_id,
|
||||
user_id=current_user_id,
|
||||
|
||||
Reference in New Issue
Block a user