From 0d9dcef9946c7b8b5e668ed26ca497694b70259a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=9C-24=20=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D1=81?= =?UTF-8?q?=D0=BB=D0=B0=D0=B2=20=D0=9A=D0=BE=D0=B2=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=BA=D0=BE?= Date: Thu, 26 Mar 2026 15:52:33 +0000 Subject: [PATCH 1/4] fix: close connection after GET in websocket --- store/main.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/store/main.py b/store/main.py index 8ebef39..2ecae0d 100644 --- a/store/main.py +++ b/store/main.py @@ -48,7 +48,9 @@ async def websocket_endpoint(websocket: WebSocket, user_id: int): try: # send already available data r = processed_agent_data.select().order_by(processed_agent_data.c.timestamp) + session = SessionLocal() stored_data = SessionLocal().execute(r).fetchall() + session.close() jsonable_data = [{c.name: getattr(i, c.name) for c in processed_agent_data.columns} for i in stored_data] for i in jsonable_data: -- 2.49.1 From 1bf568750526f24e70a7c97067a3c2b4c228b5d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=9C-24=20=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D1=81?= =?UTF-8?q?=D0=BB=D0=B0=D0=B2=20=D0=9A=D0=BE=D0=B2=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=BA=D0=BE?= Date: Thu, 26 Mar 2026 15:56:34 +0000 Subject: [PATCH 2/4] fix: add session rollback in PUT --- store/main.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/store/main.py b/store/main.py index 2ecae0d..08a5979 100644 --- a/store/main.py +++ b/store/main.py @@ -200,8 +200,12 @@ def update_processed_agent_data(processed_agent_data_id: int, data: ProcessedAge session.commit() updated_result = session.execute(query).fetchone() - return ProcessedAgentDataInDB(**updated_result._mapping) + + except Exception as err: + session.rollback() + print(f"Database error: {err}") + raise HTTPException(status_code=500, detail="Internal Server Error") finally: session.close() -- 2.49.1 From c553384ce7f6df755a5cbf99ce72d6b165ebede5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=9C-24=20=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D1=81?= =?UTF-8?q?=D0=BB=D0=B0=D0=B2=20=D0=9A=D0=BE=D0=B2=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=BA=D0=BE?= Date: Thu, 26 Mar 2026 15:59:57 +0000 Subject: [PATCH 3/4] fix: add session rollback in DELETE --- store/main.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/store/main.py b/store/main.py index 08a5979..e05a599 100644 --- a/store/main.py +++ b/store/main.py @@ -236,7 +236,12 @@ def delete_processed_agent_data(processed_agent_data_id: int): session.commit() return ProcessedAgentDataInDB(**result._mapping) - + + except Exception as err: + session.rollback() + print(f"Database error: {err}") + raise HTTPException(status_code=500, detail="Internal Server Error") + finally: session.close() -- 2.49.1 From eca98c44697c5d2416bd68bcaff2e151db25d851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=86=D0=9C-24=20=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D1=81?= =?UTF-8?q?=D0=BB=D0=B0=D0=B2=20=D0=9A=D0=BE=D0=B2=D0=B0=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=BA=D0=BE?= Date: Thu, 26 Mar 2026 16:52:00 +0000 Subject: [PATCH 4/4] fix: actually use session variable in websocket GET --- store/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/store/main.py b/store/main.py index e05a599..f1a1a4c 100644 --- a/store/main.py +++ b/store/main.py @@ -49,7 +49,7 @@ async def websocket_endpoint(websocket: WebSocket, user_id: int): # send already available data r = processed_agent_data.select().order_by(processed_agent_data.c.timestamp) session = SessionLocal() - stored_data = SessionLocal().execute(r).fetchall() + stored_data = session.execute(r).fetchall() session.close() jsonable_data = [{c.name: getattr(i, c.name) for c in processed_agent_data.columns} for i in stored_data] -- 2.49.1