fix restart issue

This commit is contained in:
larssand
2026-07-06 09:22:13 +02:00
parent 1ced15e08f
commit fde165d79b
3 changed files with 48 additions and 8 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,11 +1,34 @@
from __future__ import annotations
import base64
import contextlib
import json
import signal
import ssl
import threading
from urllib import error, request
@contextlib.contextmanager
def _hard_timeout(seconds: int):
if seconds <= 0 or threading.current_thread() is not threading.main_thread() or not hasattr(signal, "SIGALRM"):
yield
return
previous_handler = signal.getsignal(signal.SIGALRM)
previous_timer = signal.getitimer(signal.ITIMER_REAL)
def _raise_timeout(_signum, _frame):
raise TimeoutError(f"mcp_call_timeout_{seconds}s")
signal.signal(signal.SIGALRM, _raise_timeout)
signal.setitimer(signal.ITIMER_REAL, seconds)
try:
yield
finally:
signal.setitimer(signal.ITIMER_REAL, previous_timer[0], previous_timer[1])
signal.signal(signal.SIGALRM, previous_handler)
class GraylogMcpClient:
"""Small Streamable HTTP MCP client used for Graylog connection checks."""
@@ -42,6 +65,7 @@ class GraylogMcpClient:
req = request.Request(self.url, data=json.dumps(payload).encode("utf-8"), method="POST", headers=headers)
try:
context = None if self.verify_tls else ssl._create_unverified_context()
with _hard_timeout(self.timeout + 1):
with self._open(req, context) as response:
self.session_id = response.headers.get("Mcp-Session-Id", self.session_id)
body = response.read().decode("utf-8")

View File

@@ -53,6 +53,10 @@ class DashboardTests(unittest.TestCase):
self.assertIn("function mcpCapability", HTML)
self.assertIn("connected, ${suffix}", HTML)
def test_dashboard_has_visible_incident_action_status(self):
self.assertIn("incidentNotice", HTML)
self.assertIn("Incident marked", HTML)
if __name__ == "__main__":
unittest.main()