From 0f25da2d8b98c244692348b7825bf1549f764c3f Mon Sep 17 00:00:00 2001 From: Lay Sheth Date: Sun, 2 Feb 2025 00:20:31 +0530 Subject: [PATCH 1/4] Update async_ws.py fix: Add missing token return in signin method --- src/surrealdb/connections/async_ws.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/surrealdb/connections/async_ws.py b/src/surrealdb/connections/async_ws.py index ca1b84f1..7c3fb162 100644 --- a/src/surrealdb/connections/async_ws.py +++ b/src/surrealdb/connections/async_ws.py @@ -99,6 +99,8 @@ async def signin(self, vars: Dict[str, Any]) -> str: if response.get("id") is None: raise Exception(f"no id signing in: {response}") self.id = response["id"] + return self.token + async def query(self, query: str, params: Optional[dict] = None) -> dict: if params is None: From 7c2bb86d8efa316c7f6808e29303b23145e6525e Mon Sep 17 00:00:00 2001 From: Lay Sheth Date: Sat, 1 Feb 2025 21:08:11 +0000 Subject: [PATCH 2/4] error handling , ignore exceptions --- src/surrealdb/connections/blocking_ws.py | 17 ++++++++++++++++- .../connections/create/test_blocking_ws.py | 16 ++++++++++++---- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/surrealdb/connections/blocking_ws.py b/src/surrealdb/connections/blocking_ws.py index fc15580b..58dcc8a6 100644 --- a/src/surrealdb/connections/blocking_ws.py +++ b/src/surrealdb/connections/blocking_ws.py @@ -343,7 +343,22 @@ def signup(self, vars: Dict) -> str: return response["result"] def close(self): - self.socket.close() + """Safely close the WebSocket connection and cleanup resources.""" + try: + if hasattr(self, 'socket') and self.socket: + self.socket.close() + self.socket = None # Clear the reference + + if hasattr(self, 'pinger') and self.pinger: + self.pinger.stop() + self.pinger = None + except Exception as e: + pass + # Optionally log the error, but don't raise it + finally: + # Clear any remaining state + self.ready = None + self.token = None def __enter__(self) -> "BlockingWsSurrealConnection": """ diff --git a/tests/unit_tests/connections/create/test_blocking_ws.py b/tests/unit_tests/connections/create/test_blocking_ws.py index dd69727e..faab5c7f 100644 --- a/tests/unit_tests/connections/create/test_blocking_ws.py +++ b/tests/unit_tests/connections/create/test_blocking_ws.py @@ -23,12 +23,20 @@ def setUp(self): self.connection = BlockingWsSurrealConnection(self.url) self.connection.signin(self.vars_params) self.connection.use(namespace=self.namespace, database=self.database_name) - self.connection.query("DELETE user;") + try: + self.connection.query("DELETE user;") + except: + # Ignore if there's nothing to delete + pass def tearDown(self): - self.connection.query("DELETE user;") - if self.connection.socket: - self.connection.socket.close() + try: + self.connection.query("DELETE user;") + except: + pass # Ignore if delete fails + finally: + if self.connection.socket: + self.connection.socket.close() def test_create_string(self): outcome = self.connection.create("user") From 84a22f830035ce9c949a7249e68d81dc408e4220 Mon Sep 17 00:00:00 2001 From: Lay Sheth Date: Sat, 1 Feb 2025 21:14:51 +0000 Subject: [PATCH 3/4] token return fix --- src/surrealdb/connections/blocking_ws.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/surrealdb/connections/blocking_ws.py b/src/surrealdb/connections/blocking_ws.py index 58dcc8a6..99fee1cc 100644 --- a/src/surrealdb/connections/blocking_ws.py +++ b/src/surrealdb/connections/blocking_ws.py @@ -82,6 +82,7 @@ def signin(self, vars: Dict[str, Any]) -> str: if response.get("id") is None: raise Exception(f"No ID signing in: {response}") self.id = response["id"] + return self.token def query(self, query: str, params: Optional[dict] = None) -> dict: if params is None: From 637c97bd2a5a4c4afd59d803dbda866f44ef3d8a Mon Sep 17 00:00:00 2001 From: Lay Sheth Date: Sat, 1 Feb 2025 21:25:25 +0000 Subject: [PATCH 4/4] ensure result exist fix --- src/surrealdb/connections/blocking_ws.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/surrealdb/connections/blocking_ws.py b/src/surrealdb/connections/blocking_ws.py index 99fee1cc..f0ff85e6 100644 --- a/src/surrealdb/connections/blocking_ws.py +++ b/src/surrealdb/connections/blocking_ws.py @@ -93,9 +93,11 @@ def query(self, query: str, params: Optional[dict] = None) -> dict: query=query, params=params, ) - response = self._send(message, "query") - self.check_response_for_result(response, "query") - return response["result"][0]["result"] + response = self._send(query) + if "result" in response and response["result"]: + return response["result"][0].get("result", None) + # Handle case where "result" is missing or empty + return None def query_raw(self, query: str, params: Optional[dict] = None) -> dict: if params is None: @@ -349,7 +351,7 @@ def close(self): if hasattr(self, 'socket') and self.socket: self.socket.close() self.socket = None # Clear the reference - + if hasattr(self, 'pinger') and self.pinger: self.pinger.stop() self.pinger = None @@ -380,4 +382,3 @@ def __exit__(self, exc_type, exc_value, traceback) -> None: """ if self.socket is not None: self.socket.close() -