fix: avoid creating/initializing databases during user discovery

get_all_user_ids now checks if DB file exists before calling get_session_for_user. This prevents get_engine_for_user from triggering init_user_database and creating tables for stale workspace folders. Without this fix, a read-only ID scan creates/initializes SQLite databases and default tables as a side effect, which can silently create fresh DBs for stale workspace folders and hide missing/corrupt-database states that discovery previously surfaced.
This commit is contained in:
ajaysi
2026-03-09 14:23:29 +05:30
parent 3cfd95d179
commit 209a723584

View File

@@ -106,15 +106,22 @@ def get_all_user_ids() -> List[str]:
canonical_user_id = workspace_id canonical_user_id = workspace_id
db = None db = None
try: try:
db = get_session_for_user(workspace_id) # Check if DB file exists before opening session to avoid creating/initializing DBs
if db: db_path = get_user_db_path(workspace_id)
onboarding_row = ( if not os.path.exists(db_path):
db.query(OnboardingSession.user_id) # No DB file exists, use workspace ID as fallback
.order_by(OnboardingSession.updated_at.desc()) canonical_user_id = workspace_id
.first() else:
) # DB file exists, try to resolve canonical user_id from DB
if onboarding_row and onboarding_row[0]: db = get_session_for_user(workspace_id)
canonical_user_id = str(onboarding_row[0]) if db:
onboarding_row = (
db.query(OnboardingSession.user_id)
.order_by(OnboardingSession.updated_at.desc())
.first()
)
if onboarding_row and onboarding_row[0]:
canonical_user_id = str(onboarding_row[0])
except Exception as resolve_error: except Exception as resolve_error:
logger.debug( logger.debug(
f"Could not resolve canonical user_id from DB for workspace {workspace_id}: {resolve_error}" f"Could not resolve canonical user_id from DB for workspace {workspace_id}: {resolve_error}"