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

This commit is contained in:
Your Name
2026-07-01 21:07:27 +08:00
parent e48d55ae50
commit 62071dd1f7
4 changed files with 339 additions and 14 deletions

View File

@@ -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(

View File

@@ -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())