fix(recovery): classify stale cd jobs payload
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 07:45:39 +08:00
parent 00d01ee709
commit 75b67a3a77
4 changed files with 208 additions and 0 deletions

View File

@@ -200,6 +200,18 @@ def validate_harbor_registry_controlled_recovery_receipt(
"gitea_queue_current_cd_harbor_retrying_unavailable": gitea_queue[
"current_cd_harbor_retrying_unavailable"
],
"gitea_queue_cd_jobs_stale_or_mismatched": gitea_queue[
"cd_run_jobs_stale_or_mismatched"
],
"gitea_queue_cd_jobs_payload_classifier": gitea_queue[
"cd_run_jobs_payload_classifier"
],
"gitea_queue_cd_jobs_head_sha_mismatch": gitea_queue[
"cd_run_jobs_head_sha_mismatch"
],
"gitea_queue_cd_jobs_run_id_mismatch": gitea_queue[
"cd_run_jobs_run_id_mismatch"
],
"deploy_marker_readback_seen": deploy_marker["receipt_seen"],
"deploy_marker_verified": deploy_marker["deploy_marker_verified"],
"deploy_marker_blocker_count": deploy_marker["blocker_count"],
@@ -545,6 +557,14 @@ def _gitea_queue_readback(value: Any) -> dict[str, Any]:
"current_cd_inflight_classifier": "",
"current_cd_harbor_latest_registry_v2_status": "",
"current_cd_harbor_retrying_unavailable": False,
"cd_run_jobs_stale_or_mismatched": False,
"cd_run_jobs_payload_classifier": "",
"cd_run_jobs_head_sha_mismatch": False,
"cd_run_jobs_run_id_mismatch": False,
"cd_run_jobs_expected_run_id": "",
"cd_run_jobs_expected_head_sha": "",
"cd_run_jobs_head_shas": [],
"cd_run_jobs_run_ids": [],
"latest_visible_harbor_110_repair_run_id": "",
"latest_visible_harbor_110_repair_run_status": "",
"harbor_110_repair_no_matching_runner_label": "",
@@ -608,6 +628,18 @@ def _gitea_queue_readback(value: Any) -> dict[str, Any]:
or current_cd_inflight_classifier
== "harbor_registry_public_route_unavailable_pending_retry"
)
cd_jobs_stale = bool(
rollups.get("cd_run_jobs_stale_or_mismatched") is True
or readback.get("cd_run_jobs_stale_or_mismatched") is True
)
cd_jobs_head_sha_mismatch = bool(
rollups.get("cd_run_jobs_head_sha_mismatch") is True
or readback.get("cd_run_jobs_head_sha_mismatch") is True
)
cd_jobs_run_id_mismatch = bool(
rollups.get("cd_run_jobs_run_id_mismatch") is True
or readback.get("cd_run_jobs_run_id_mismatch") is True
)
boundary_violation = any(
operation_boundaries.get(flag) is True
for flag in (
@@ -624,6 +656,9 @@ def _gitea_queue_readback(value: Any) -> dict[str, Any]:
jobs_stale=jobs_stale,
jobs_cross_workflow=jobs_cross_workflow,
current_cd_harbor_retrying=current_cd_harbor_retrying,
cd_jobs_stale=cd_jobs_stale,
cd_jobs_head_sha_mismatch=cd_jobs_head_sha_mismatch,
cd_jobs_run_id_mismatch=cd_jobs_run_id_mismatch,
blocked=blocked,
boundary_violation=boundary_violation,
)
@@ -643,6 +678,22 @@ def _gitea_queue_readback(value: Any) -> dict[str, Any]:
current_cd_latest_registry_status
),
"current_cd_harbor_retrying_unavailable": current_cd_harbor_retrying,
"cd_run_jobs_stale_or_mismatched": cd_jobs_stale,
"cd_run_jobs_payload_classifier": str(
rollups.get("cd_run_jobs_payload_classifier")
or readback.get("cd_run_jobs_payload_classifier")
or ""
),
"cd_run_jobs_head_sha_mismatch": cd_jobs_head_sha_mismatch,
"cd_run_jobs_run_id_mismatch": cd_jobs_run_id_mismatch,
"cd_run_jobs_expected_run_id": str(
readback.get("cd_run_jobs_expected_run_id") or ""
),
"cd_run_jobs_expected_head_sha": str(
readback.get("cd_run_jobs_expected_head_sha") or ""
),
"cd_run_jobs_head_shas": _strings(readback.get("cd_run_jobs_head_shas")),
"cd_run_jobs_run_ids": _strings(readback.get("cd_run_jobs_run_ids")),
"latest_visible_harbor_110_repair_run_id": str(
readback.get("latest_visible_harbor_110_repair_run_id") or ""
),
@@ -687,12 +738,21 @@ def _gitea_queue_blockers(
jobs_stale: bool,
jobs_cross_workflow: bool,
current_cd_harbor_retrying: bool,
cd_jobs_stale: bool,
cd_jobs_head_sha_mismatch: bool,
cd_jobs_run_id_mismatch: bool,
blocked: bool,
boundary_violation: bool,
) -> list[str]:
blockers: list[str] = []
if current_cd_harbor_retrying:
blockers.append("gitea_queue_current_cd_harbor_retrying_unavailable")
if cd_jobs_head_sha_mismatch:
blockers.append("gitea_queue_cd_jobs_head_sha_mismatch")
if cd_jobs_run_id_mismatch:
blockers.append("gitea_queue_cd_jobs_run_id_mismatch")
if cd_jobs_stale:
blockers.append("gitea_queue_cd_jobs_stale_or_mismatched")
if no_matching_runner:
blockers.append("gitea_queue_harbor_110_repair_no_matching_runner")
elif blocked: