From 2a6921a4552cf9524674a0fc748f89472f1950bb Mon Sep 17 00:00:00 2001 From: Muhammad Ikhwan Fathulloh <77288014+Muhammad-Ikhwan-Fathulloh@users.noreply.github.com> Date: Sun, 7 Jun 2026 22:08:50 +0700 Subject: [PATCH] Fix logical bugs in event bus and bulk session deletion (#3139) --- routes/session_routes.py | 17 ++++++++++------- src/event_bus.py | 6 ------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/routes/session_routes.py b/routes/session_routes.py index 9aa94c11d..0f2fa01c8 100644 --- a/routes/session_routes.py +++ b/routes/session_routes.py @@ -543,22 +543,25 @@ def setup_session_routes(session_manager: SessionManager, config: dict, webhook_ ids = body.get("ids", []) except Exception: ids = [] + deleted_count = 0 for sid in ids: try: _verify_session_owner(request, sid, session_manager) - session_manager.delete_session(sid) + + # Enforce "starred" protection consistent with single-session delete db = SessionLocal() try: - db.query(_CM).filter(_CM.session_id == sid).delete() - db.query(DbSession).filter(DbSession.id == sid).delete() - db.commit() - except Exception: - db.rollback() + db_sess = db.query(DbSession).filter(DbSession.id == sid).first() + if db_sess and db_sess.is_important: + continue finally: db.close() + + if session_manager.delete_session(sid): + deleted_count += 1 except Exception: pass - return {"deleted": len(ids)} + return {"deleted": deleted_count} @router.delete("/session/{sid}") def delete_session(request: Request, sid: str): diff --git a/src/event_bus.py b/src/event_bus.py index dea8b3cf8..8bdb889a0 100644 --- a/src/event_bus.py +++ b/src/event_bus.py @@ -105,12 +105,6 @@ async def _handle_event(event_name: str, owner: Optional[str] = None): db.commit() # Fire the task if _task_scheduler: - if task.next_run and task.next_run > datetime.utcnow(): - logger.info( - f"Event '{event_name}' reached task '{task.name}', " - f"but it is already deferred until {task.next_run}" - ) - continue logger.info(f"Event '{event_name}' triggered task '{task.name}' (every {threshold})") await _task_scheduler.run_task_now(task.id) else: