Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions scripts/cloud_run_runtime_guard.py
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,26 @@ def _entry_text(entry: dict[str, Any]) -> str:
return " ".join(chunks)


def _request_path(entry: dict[str, Any]) -> str:
request_url = str((entry.get("httpRequest") or {}).get("requestUrl") or "").strip()
if not request_url:
return ""
return urllib.parse.urlparse(request_url).path


def _is_ignorable_monitor_dispatch_capacity_warning(entry: dict[str, Any]) -> bool:
if not _env_bool("RUNTIME_GUARD_IGNORE_MONITOR_DISPATCH_CAPACITY_WARNINGS", True):
return False
return (
_status(entry) == 429
and _request_path(entry) == "/monitor-dispatch"
and "NO AVAILABLE INSTANCE" in _entry_text(entry).upper()
)


def _is_failure(entry: dict[str, Any]) -> bool:
if _is_ignorable_monitor_dispatch_capacity_warning(entry):
return False
severity = str(entry.get("severity") or "").upper()
status = _status(entry)
text = _entry_text(entry).upper()
Expand Down
42 changes: 42 additions & 0 deletions tests/test_cloud_run_runtime_guard.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,3 +186,45 @@ def test_scheduler_entry_since_uses_matching_service_revision_window():
guard._scheduler_entry_since(entry, {"other-service": service_since}, fallback)
== fallback
)


def test_monitor_dispatch_capacity_warning_is_not_failure_by_default(monkeypatch):
monkeypatch.delenv("RUNTIME_GUARD_IGNORE_MONITOR_DISPATCH_CAPACITY_WARNINGS", raising=False)
entry = {
"severity": "WARNING",
"httpRequest": {
"status": 429,
"requestUrl": "https://example.run.app/monitor-dispatch",
},
"textPayload": "The request was aborted because there was no available instance.",
}

assert guard._is_failure(entry) is False


def test_monitor_dispatch_capacity_warning_can_be_counted(monkeypatch):
monkeypatch.setenv("RUNTIME_GUARD_IGNORE_MONITOR_DISPATCH_CAPACITY_WARNINGS", "false")
entry = {
"severity": "WARNING",
"httpRequest": {
"status": 429,
"requestUrl": "https://example.run.app/monitor-dispatch",
},
"textPayload": "The request was aborted because there was no available instance.",
}

assert guard._is_failure(entry) is True


def test_strategy_request_capacity_warning_still_fails(monkeypatch):
monkeypatch.delenv("RUNTIME_GUARD_IGNORE_MONITOR_DISPATCH_CAPACITY_WARNINGS", raising=False)
entry = {
"severity": "WARNING",
"httpRequest": {
"status": 429,
"requestUrl": "https://example.run.app/dry-run",
},
"textPayload": "The request was aborted because there was no available instance.",
}

assert guard._is_failure(entry) is True
Loading