From 77213e18d0925e559447defbc41a514c7816c5d6 Mon Sep 17 00:00:00 2001 From: Dominik Jain Date: Tue, 7 Oct 2025 13:39:44 +0200 Subject: [PATCH] Fix outdated heartbeat call and a potential access issue in exception handler --- src/serena/tools/jetbrains_plugin_client.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/serena/tools/jetbrains_plugin_client.py b/src/serena/tools/jetbrains_plugin_client.py index 594b51dc..5a845a6e 100644 --- a/src/serena/tools/jetbrains_plugin_client.py +++ b/src/serena/tools/jetbrains_plugin_client.py @@ -8,6 +8,7 @@ from pathlib import Path from typing import Any, Optional, Self, TypeVar import requests +from requests import Response from sensai.util.string import ToStringMixin from serena.project import Project @@ -78,6 +79,7 @@ class JetBrainsPluginClient(ToStringMixin): def _make_request(self, method: str, endpoint: str, data: Optional[dict] = None) -> dict[str, Any]: url = f"{self.base_url}{endpoint}" + response: Response | None = None try: if method.upper() == "GET": response = self.session.get(url, timeout=self.timeout) @@ -100,8 +102,10 @@ class JetBrainsPluginClient(ToStringMixin): raise ConnectionError(f"Failed to connect to Serena service at {url}: {e}") except requests.exceptions.Timeout as e: raise ConnectionError(f"Request to {url} timed out: {e}") - except requests.exceptions.HTTPError: - raise APIError(f"API request failed with status {response.status_code}: {response.text}") + except requests.exceptions.HTTPError as e: + if response is not None: + raise APIError(f"API request failed with status {response.status_code}: {response.text}") + raise APIError(f"API request failed with HTTP error: {e}") except requests.exceptions.RequestException as e: raise SerenaClientError(f"Request failed: {e}") @@ -170,8 +174,8 @@ class JetBrainsPluginClient(ToStringMixin): def is_service_available(self) -> bool: try: - response = self.heartbeat() - return response.get("status") == "OK" + self.project_root() + return True except (ConnectionError, APIError): return False