atlasbot: always include top metric keys

This commit is contained in:
Brad Stein 2026-02-03 21:38:51 -03:00
parent 78763d0c93
commit 51f3549f09

View File

@ -1304,6 +1304,8 @@ async def _select_metric_chunks(
tag="metric_keys", tag="metric_keys",
) )
selected = _parse_key_list(raw, available_keys, max_keys) selected = _parse_key_list(raw, available_keys, max_keys)
if candidate_keys:
selected = _merge_metric_keys(selected, candidate_keys, max_keys)
if not selected and candidate_keys: if not selected and candidate_keys:
selected = candidate_keys[:max_keys] selected = candidate_keys[:max_keys]
if not selected: if not selected:
@ -1408,6 +1410,22 @@ def _lines_for_metric_keys(lines: list[str], keys: list[str], max_lines: int = 0
return selected return selected
def _merge_metric_keys(current: list[str], candidates: list[str], max_keys: int) -> list[str]:
merged: list[str] = []
seen = set()
for key in current:
if key and key not in seen:
merged.append(key)
seen.add(key)
for key in candidates:
if key and key not in seen:
merged.append(key)
seen.add(key)
if len(merged) >= max_keys:
break
return merged[:max_keys]
def _merge_fact_lines(primary: list[str], fallback: list[str]) -> list[str]: def _merge_fact_lines(primary: list[str], fallback: list[str]) -> list[str]:
seen = set() seen = set()
merged: list[str] = [] merged: list[str] = []