fix timeout
This commit is contained in:
@@ -141,6 +141,10 @@ def _range_seconds(value: object) -> int:
|
|||||||
return 300
|
return 300
|
||||||
|
|
||||||
|
|
||||||
|
def monitor_cycle_timeout_seconds(mcp_poll_timeout: int, mcp_call_timeout: int) -> int:
|
||||||
|
return max(600, mcp_poll_timeout + max(180, mcp_call_timeout * 8))
|
||||||
|
|
||||||
|
|
||||||
def _graylog_fields_from_result(result: dict[str, object]) -> list[dict[str, object]]:
|
def _graylog_fields_from_result(result: dict[str, object]) -> list[dict[str, object]]:
|
||||||
content = result.get("result", {}).get("content", []) if isinstance(result.get("result"), dict) else []
|
content = result.get("result", {}).get("content", []) if isinstance(result.get("result"), dict) else []
|
||||||
text = next((item.get("text", "") for item in content if isinstance(item, dict)), "")
|
text = next((item.get("text", "") for item in content if isinstance(item, dict)), "")
|
||||||
@@ -743,7 +747,7 @@ def monitor_loop(
|
|||||||
if runtime.get("log_source") == "graylog_mcp":
|
if runtime.get("log_source") == "graylog_mcp":
|
||||||
write_refreshing_status(output, cache_path=status_cache_path, call_timeout_seconds=mcp_call_timeout, poll_timeout_seconds=mcp_poll_timeout, runtime_values=runtime)
|
write_refreshing_status(output, cache_path=status_cache_path, call_timeout_seconds=mcp_call_timeout, poll_timeout_seconds=mcp_poll_timeout, runtime_values=runtime)
|
||||||
try:
|
try:
|
||||||
status_timeout = mcp_poll_timeout + max(90, mcp_call_timeout * 4)
|
status_timeout = monitor_cycle_timeout_seconds(mcp_poll_timeout, mcp_call_timeout)
|
||||||
with _cycle_timeout(status_timeout if runtime.get("log_source") == "graylog_mcp" else 0):
|
with _cycle_timeout(status_timeout if runtime.get("log_source") == "graylog_mcp" else 0):
|
||||||
status = build_status(
|
status = build_status(
|
||||||
log_path, policy_path=policy_path, anomaly_limit=anomaly_limit,
|
log_path, policy_path=policy_path, anomaly_limit=anomaly_limit,
|
||||||
|
|||||||
@@ -6,10 +6,15 @@ from unittest.mock import patch
|
|||||||
|
|
||||||
from fgai.history import StatusSnapshotStore
|
from fgai.history import StatusSnapshotStore
|
||||||
from fgai.history import FieldDiscoveryStore
|
from fgai.history import FieldDiscoveryStore
|
||||||
from fgai.monitor import add_llm_assessment, build_status, cached_status_with_error, write_refreshing_status, write_status
|
from fgai.monitor import add_llm_assessment, build_status, cached_status_with_error, monitor_cycle_timeout_seconds, write_refreshing_status, write_status
|
||||||
|
|
||||||
|
|
||||||
class MonitorTests(unittest.TestCase):
|
class MonitorTests(unittest.TestCase):
|
||||||
|
def test_monitor_cycle_timeout_keeps_large_buffer(self):
|
||||||
|
self.assertEqual(monitor_cycle_timeout_seconds(120, 8), 600)
|
||||||
|
self.assertEqual(monitor_cycle_timeout_seconds(240, 8), 600)
|
||||||
|
self.assertEqual(monitor_cycle_timeout_seconds(900, 8), 1080)
|
||||||
|
|
||||||
def test_build_status_from_log_file(self):
|
def test_build_status_from_log_file(self):
|
||||||
with tempfile.TemporaryDirectory() as tmp:
|
with tempfile.TemporaryDirectory() as tmp:
|
||||||
log_path = Path(tmp) / "fg.log"
|
log_path = Path(tmp) / "fg.log"
|
||||||
|
|||||||
Reference in New Issue
Block a user