From d63da687b1996f0950a8827885757714d92e29ee Mon Sep 17 00:00:00 2001 From: Amrit Ghimire Date: Fri, 7 Feb 2025 19:03:21 +0545 Subject: [PATCH 1/4] Fix the telemetry exception handling for daemon mode In daemon mode, the request is made in subprocess effectively causing a huge set of stacktrace in terminal as provided in https://github.com/iterative/studio/issues/11282. This handles the exception properly along with timeout for the telemetry call. Closes https://github.com/iterative/studio/issues/11282 --- src/iterative_telemetry/__init__.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/iterative_telemetry/__init__.py b/src/iterative_telemetry/__init__.py index 6cac9d4..d9e30c0 100644 --- a/src/iterative_telemetry/__init__.py +++ b/src/iterative_telemetry/__init__.py @@ -190,10 +190,18 @@ def send( impl(payload) def _send_daemon(self, payload): - cmd = ( - f"import requests;requests.post('{self.url}'," - f"params={{'token':'{self.token}'}},json={payload})" - ) + cmd = f""" +import requests, logging +try: + requests.post( + '{self.url}', + params={{'token':'{self.token}'}}, + json={payload}, + timeout=2 + ) +except (requests.exceptions.RequestException, Exception) as e: + logging.debug(f'Telemetry request failed: {{str(e)}}') +""" if os.name == "nt": From daeb301b7984d78a0a279381e6e8cd8820a17880 Mon Sep 17 00:00:00 2001 From: Amrit Ghimire Date: Mon, 10 Feb 2025 13:52:15 +0545 Subject: [PATCH 2/4] PR comments --- src/iterative_telemetry/__init__.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/iterative_telemetry/__init__.py b/src/iterative_telemetry/__init__.py index d9e30c0..dca497c 100644 --- a/src/iterative_telemetry/__init__.py +++ b/src/iterative_telemetry/__init__.py @@ -192,6 +192,8 @@ def send( def _send_daemon(self, payload): cmd = f""" import requests, logging + +logger = logging.getLogger("iterative-telemetry") try: requests.post( '{self.url}', @@ -199,8 +201,8 @@ def _send_daemon(self, payload): json={payload}, timeout=2 ) -except (requests.exceptions.RequestException, Exception) as e: - logging.debug(f'Telemetry request failed: {{str(e)}}') +except Exception as e: + logger.debug(f'Telemetry request failed: {{str(e)}}') """ if os.name == "nt": From 330d9dada8b015e39a7eaa8e6ef735da8ba01b39 Mon Sep 17 00:00:00 2001 From: Amrit Ghimire Date: Tue, 11 Feb 2025 07:50:32 +0545 Subject: [PATCH 3/4] Timeout to 10 --- src/iterative_telemetry/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/iterative_telemetry/__init__.py b/src/iterative_telemetry/__init__.py index dca497c..2c847c9 100644 --- a/src/iterative_telemetry/__init__.py +++ b/src/iterative_telemetry/__init__.py @@ -199,7 +199,7 @@ def _send_daemon(self, payload): '{self.url}', params={{'token':'{self.token}'}}, json={payload}, - timeout=2 + timeout=10 ) except Exception as e: logger.debug(f'Telemetry request failed: {{str(e)}}') From 8da42391c42efcf99a5872ddd8068f4b44dfaf99 Mon Sep 17 00:00:00 2001 From: Amrit Ghimire Date: Tue, 11 Feb 2025 08:22:30 +0545 Subject: [PATCH 4/4] Suppress exception instead --- src/iterative_telemetry/__init__.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/iterative_telemetry/__init__.py b/src/iterative_telemetry/__init__.py index 2c847c9..770bf8d 100644 --- a/src/iterative_telemetry/__init__.py +++ b/src/iterative_telemetry/__init__.py @@ -191,9 +191,8 @@ def send( def _send_daemon(self, payload): cmd = f""" -import requests, logging +import requests -logger = logging.getLogger("iterative-telemetry") try: requests.post( '{self.url}', @@ -201,8 +200,8 @@ def _send_daemon(self, payload): json={payload}, timeout=10 ) -except Exception as e: - logger.debug(f'Telemetry request failed: {{str(e)}}') +except Exception: + pass """ if os.name == "nt":