fix(events): bound provider prefix recent query
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Failing after 3m48s
CD Pipeline / build-and-deploy (push) Has been skipped
CD Pipeline / post-deploy-checks (push) Has been skipped
Some checks failed
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Failing after 3m48s
CD Pipeline / build-and-deploy (push) Has been skipped
CD Pipeline / post-deploy-checks (push) Has been skipped
This commit is contained in:
@@ -7310,6 +7310,23 @@ async def get_run_detail(
|
||||
# Channel Events
|
||||
# =============================================================================
|
||||
|
||||
|
||||
def _exclusive_text_prefix_upper_bound(prefix: str) -> str:
|
||||
if not prefix:
|
||||
return ""
|
||||
last = ord(prefix[-1])
|
||||
if last >= 0x10FFFF:
|
||||
return ""
|
||||
return f"{prefix[:-1]}{chr(last + 1)}"
|
||||
|
||||
|
||||
def _provider_event_id_prefix_bounds(provider_prefix: str) -> tuple[str, str]:
|
||||
prefix = provider_prefix.strip().lower()
|
||||
if prefix and ":" not in prefix:
|
||||
prefix = f"{prefix}:"
|
||||
return prefix, _exclusive_text_prefix_upper_bound(prefix)
|
||||
|
||||
|
||||
async def list_recent_channel_events(
|
||||
*,
|
||||
project_id: str | None,
|
||||
@@ -7332,23 +7349,17 @@ async def list_recent_channel_events(
|
||||
if channel_type is not None:
|
||||
stmt = stmt.where(AwoooPConversationEvent.channel_type == channel_type)
|
||||
if recent_provider_prefix is not None:
|
||||
if ":" in recent_provider_prefix:
|
||||
prefix_lower, prefix_upper = _provider_event_id_prefix_bounds(
|
||||
recent_provider_prefix
|
||||
)
|
||||
if prefix_lower:
|
||||
stmt = stmt.where(
|
||||
AwoooPConversationEvent.provider_event_id.like(
|
||||
f"{provider_prefix.strip()}%"
|
||||
)
|
||||
AwoooPConversationEvent.provider_event_id >= prefix_lower
|
||||
)
|
||||
else:
|
||||
stmt = stmt.where(
|
||||
text(
|
||||
"LOWER(COALESCE("
|
||||
"NULLIF(source_envelope->>'provider', ''), "
|
||||
"NULLIF(split_part(provider_event_id, ':', 1), ''), "
|
||||
"channel_type"
|
||||
")) = :recent_provider_prefix"
|
||||
if prefix_upper:
|
||||
stmt = stmt.where(
|
||||
AwoooPConversationEvent.provider_event_id < prefix_upper
|
||||
)
|
||||
)
|
||||
stmt = stmt.params(recent_provider_prefix=recent_provider_prefix)
|
||||
stmt = stmt.order_by(
|
||||
AwoooPConversationEvent.received_at.desc(),
|
||||
AwoooPConversationEvent.event_id.desc(),
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
from pathlib import Path
|
||||
|
||||
from src.services.platform_operator_service import _provider_event_id_prefix_bounds
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
MIGRATION = "awooop_conversation_event_hot_path_indexes_2026-07-01.sql"
|
||||
ROLLBACK = "awooop_conversation_event_hot_path_indexes_2026-07-01_down.sql"
|
||||
@@ -57,9 +59,9 @@ def test_provider_recent_indexes_match_live_hot_queries() -> None:
|
||||
|
||||
assert "COALESCE(NULLIF(source_envelope->>'provider', '')" in coverage_source
|
||||
assert "ORDER BY received_at DESC" in coverage_source
|
||||
assert "LOWER(COALESCE(NULLIF(source_envelope->>'provider', '')" in operator_source
|
||||
assert "recent_provider_prefix" in operator_source
|
||||
assert "NULLIF(split_part(provider_event_id, ':', 1), '')" in operator_source
|
||||
assert "_provider_event_id_prefix_bounds" in operator_source
|
||||
assert "provider_event_id >= prefix_lower" in operator_source
|
||||
assert "provider_event_id < prefix_upper" in operator_source
|
||||
|
||||
assert "idx_awooop_conv_event_project_provider_recent" in sql
|
||||
assert "idx_awooop_conv_event_project_provider_lower_recent" in sql
|
||||
@@ -69,6 +71,18 @@ def test_provider_recent_indexes_match_live_hot_queries() -> None:
|
||||
assert "event_id DESC" in sql
|
||||
|
||||
|
||||
def test_recent_provider_prefix_uses_btree_range_bounds() -> None:
|
||||
assert _provider_event_id_prefix_bounds("alertmanager") == (
|
||||
"alertmanager:",
|
||||
"alertmanager;",
|
||||
)
|
||||
assert _provider_event_id_prefix_bounds("alertmanager:received") == (
|
||||
"alertmanager:received",
|
||||
"alertmanager:receivee",
|
||||
)
|
||||
assert _provider_event_id_prefix_bounds(" SignOz ") == ("signoz:", "signoz;")
|
||||
|
||||
|
||||
def test_truth_chain_source_lookup_indexes_match_or_terms() -> None:
|
||||
sql = _migration_sql()
|
||||
truth_chain_source = _read("src/services/awooop_truth_chain_service.py")
|
||||
|
||||
Reference in New Issue
Block a user