fix(agent): degrade log consumer db pressure
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / tests (push) Has been cancelled
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / tests (push) Has been cancelled
This commit is contained in:
@@ -28,6 +28,8 @@ class _FakeDb:
|
||||
self.params: list[dict] = []
|
||||
|
||||
async def execute(self, statement, params: dict):
|
||||
if not params:
|
||||
return _FakeResult(None)
|
||||
self.params.append(params)
|
||||
if "fallback_operation_type" in params:
|
||||
return _FakeResult("km_linked")
|
||||
@@ -50,6 +52,14 @@ class _FakeContext:
|
||||
return False
|
||||
|
||||
|
||||
class _FailingContext:
|
||||
async def __aenter__(self):
|
||||
raise TimeoutError("pool checkout unavailable")
|
||||
|
||||
async def __aexit__(self, _exc_type, _exc, _tb) -> bool:
|
||||
return False
|
||||
|
||||
|
||||
def _consumer_readback() -> dict:
|
||||
targets = ("km", "rag", "playbook", "mcp", "verifier", "ai_agent")
|
||||
bindings = [
|
||||
@@ -185,6 +195,71 @@ async def test_log_controlled_writeback_consumer_apply_writes_idempotent_rows(mo
|
||||
assert '"km_write_performed": false' in params["output"]
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_log_controlled_writeback_consumer_apply_blocks_when_readback_degraded(
|
||||
monkeypatch,
|
||||
):
|
||||
degraded_readback = _consumer_readback()
|
||||
degraded_readback["status"] = (
|
||||
"blocked_waiting_controlled_writeback_consumer_db_readback"
|
||||
)
|
||||
degraded_readback["controlled_consume"]["controlled_consume_allowed"] = False
|
||||
degraded_readback["active_blockers"] = [
|
||||
"log_controlled_writeback_consumer_readback_db_unavailable"
|
||||
]
|
||||
|
||||
async def fake_readback(*, project_id: str):
|
||||
assert project_id == "awoooi"
|
||||
return degraded_readback
|
||||
|
||||
monkeypatch.setattr(
|
||||
apply_module,
|
||||
"load_latest_ai_agent_log_controlled_writeback_consumer_readback",
|
||||
fake_readback,
|
||||
)
|
||||
|
||||
payload = await consume_latest_ai_agent_log_controlled_writeback(project_id="awoooi")
|
||||
|
||||
assert payload["status"] == (
|
||||
"blocked_waiting_controlled_writeback_consumer_apply_inputs"
|
||||
)
|
||||
assert "controlled_writeback_consumer_readback_not_ready" in payload[
|
||||
"active_blockers"
|
||||
]
|
||||
assert payload["apply_result"]["db_write_status"] == "not_attempted"
|
||||
assert payload["operation_boundaries"]["runtime_target_write_performed"] is False
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_log_controlled_writeback_consumer_apply_degrades_on_db_write_pressure(
|
||||
monkeypatch,
|
||||
):
|
||||
monkeypatch.setattr(
|
||||
apply_module,
|
||||
"get_db_context",
|
||||
lambda project_id: _FailingContext(),
|
||||
)
|
||||
|
||||
async def fake_readback(*, project_id: str):
|
||||
assert project_id == "awoooi"
|
||||
return _consumer_readback()
|
||||
|
||||
monkeypatch.setattr(
|
||||
apply_module,
|
||||
"load_latest_ai_agent_log_controlled_writeback_consumer_readback",
|
||||
fake_readback,
|
||||
)
|
||||
|
||||
payload = await consume_latest_ai_agent_log_controlled_writeback(project_id="awoooi")
|
||||
|
||||
assert payload["status"] == "blocked_waiting_controlled_writeback_consumer_apply_db"
|
||||
assert "consumer_apply_db_write_unavailable" in payload["active_blockers"]
|
||||
assert payload["apply_result"]["db_write_status"] == "unavailable"
|
||||
assert payload["apply_result"]["error_type"] == "TimeoutError"
|
||||
assert payload["operation_boundaries"]["consumer_context_receipt_write_performed"] is False
|
||||
assert payload["operation_boundaries"]["runtime_target_write_performed"] is False
|
||||
|
||||
|
||||
def test_log_controlled_writeback_consumer_apply_endpoint_returns_receipt(monkeypatch):
|
||||
async def fake_apply():
|
||||
payload = build_ai_agent_log_controlled_writeback_consumer_apply_receipt(
|
||||
|
||||
@@ -32,6 +32,8 @@ class _FakeDb:
|
||||
self.params: list[dict] = []
|
||||
|
||||
async def execute(self, _statement, params: dict):
|
||||
if not params:
|
||||
return _FakeMappingResult([])
|
||||
self.params.append(params)
|
||||
if params.get("operation_type") == "log_controlled_writeback_consumed":
|
||||
return _FakeMappingResult(self.consumer_rows)
|
||||
@@ -49,6 +51,14 @@ class _FakeContext:
|
||||
return False
|
||||
|
||||
|
||||
class _FailingContext:
|
||||
async def __aenter__(self):
|
||||
raise TimeoutError("pool checkout unavailable")
|
||||
|
||||
async def __aexit__(self, _exc_type, _exc, _tb) -> bool:
|
||||
return False
|
||||
|
||||
|
||||
def _ledger_rows() -> list[dict]:
|
||||
return [
|
||||
{
|
||||
@@ -147,6 +157,30 @@ async def test_log_controlled_writeback_consumer_loader_reads_apply_receipts(mon
|
||||
assert binding["target_write_receipt"]["runtime_target_write_performed"] is True
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_log_controlled_writeback_consumer_loader_degrades_on_db_pressure(monkeypatch):
|
||||
monkeypatch.setattr(
|
||||
consumer_module,
|
||||
"get_db_context",
|
||||
lambda project_id: _FailingContext(),
|
||||
)
|
||||
|
||||
payload = await load_latest_ai_agent_log_controlled_writeback_consumer_readback()
|
||||
|
||||
assert payload["status"] == (
|
||||
"blocked_waiting_controlled_writeback_consumer_db_readback"
|
||||
)
|
||||
assert payload["readback"]["db_read_status"] == "unavailable"
|
||||
assert payload["readback"]["error_type"] == "TimeoutError"
|
||||
assert payload["controlled_consume"]["controlled_consume_allowed"] is False
|
||||
assert payload["rollups"]["controlled_consumer_readback_ready"] is False
|
||||
assert payload["active_blockers"] == [
|
||||
"log_controlled_writeback_consumer_readback_db_unavailable"
|
||||
]
|
||||
assert payload["operation_boundaries"]["metadata_ledger_read_performed"] is False
|
||||
assert payload["operation_boundaries"]["runtime_target_write_performed"] is False
|
||||
|
||||
|
||||
def test_log_controlled_writeback_consumer_endpoint_returns_readback(monkeypatch):
|
||||
async def fake_loader():
|
||||
fake_db = _FakeDb(_ledger_rows())
|
||||
|
||||
Reference in New Issue
Block a user