style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 28s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 16s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m25s
AI Code Review / AI Code Review (pull_request) Successful in 1m25s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 1m32s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m52s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m48s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 2m15s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m5s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 6m35s
CI/CD Pipeline / CI Gate (pull_request) Successful in 3s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m52s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 12s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 19s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 241h43m41s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 241h43m44s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 241h43m44s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 241h43m45s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 241h49m4s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 241h49m6s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 241h49m26s
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Failing after 241h49m33s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Failing after 241h49m35s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 241h49m42s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 241h49m45s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 241h49m59s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 241h50m15s
CI/CD Pipeline / Check push changed paths (pull_request) Failing after 241h50m26s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 242h18m18s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 242h23m41s
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Failing after 242h24m10s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 242h24m19s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 242h24m51s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 28s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 16s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m25s
AI Code Review / AI Code Review (pull_request) Successful in 1m25s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 1m32s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m52s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m48s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 2m15s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m5s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 6m35s
CI/CD Pipeline / CI Gate (pull_request) Successful in 3s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 3m52s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 12s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 19s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 241h43m41s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 241h43m44s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 241h43m44s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 241h43m45s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 241h49m4s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 241h49m6s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 241h49m26s
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Failing after 241h49m33s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Failing after 241h49m35s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 241h49m42s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 241h49m45s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 241h49m59s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 241h50m15s
CI/CD Pipeline / Check push changed paths (pull_request) Failing after 241h50m26s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 242h18m18s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 242h23m41s
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Failing after 242h24m10s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 242h24m19s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 242h24m51s
This commit is contained in:
@@ -25,16 +25,21 @@ def test_beat_cleanup_calls_core_and_revokes():
|
||||
"""beat 任务串联三个核心步骤,返回汇总计数。"""
|
||||
fake_session = MagicMock()
|
||||
|
||||
with patch("worker_app.db.SessionLocal", return_value=fake_session) as m_db, patch(
|
||||
"packages.application.ingest_orphan_cleanup.cleanup_stale_ingest_jobs",
|
||||
return_value=([("job-1", "cel-1"), ("job-2", "")], ["a-1"]),
|
||||
) as m_jobs, patch(
|
||||
"packages.application.ingest_orphan_cleanup.cleanup_orphan_processing_assets",
|
||||
return_value=["a-2"],
|
||||
) as m_assets, patch(
|
||||
"packages.shared.celery_orphan_guard.revoke_and_purge",
|
||||
return_value=1,
|
||||
) as m_revoke:
|
||||
with (
|
||||
patch("worker_app.db.SessionLocal", return_value=fake_session) as m_db,
|
||||
patch(
|
||||
"packages.application.ingest_orphan_cleanup.cleanup_stale_ingest_jobs",
|
||||
return_value=([("job-1", "cel-1"), ("job-2", "")], ["a-1"]),
|
||||
) as m_jobs,
|
||||
patch(
|
||||
"packages.application.ingest_orphan_cleanup.cleanup_orphan_processing_assets",
|
||||
return_value=["a-2"],
|
||||
) as m_assets,
|
||||
patch(
|
||||
"packages.shared.celery_orphan_guard.revoke_and_purge",
|
||||
return_value=1,
|
||||
) as m_revoke,
|
||||
):
|
||||
result = cleanup.scheduled_cleanup_stale_ingest_jobs()
|
||||
|
||||
m_db.assert_called_once()
|
||||
@@ -52,15 +57,18 @@ def test_beat_cleanup_no_op_when_nothing_stale():
|
||||
"""无孤儿时不调 revoke,返回全 0。"""
|
||||
fake_session = MagicMock()
|
||||
|
||||
with patch("worker_app.db.SessionLocal", return_value=fake_session), patch(
|
||||
"packages.application.ingest_orphan_cleanup.cleanup_stale_ingest_jobs",
|
||||
return_value=([], []),
|
||||
), patch(
|
||||
"packages.application.ingest_orphan_cleanup.cleanup_orphan_processing_assets",
|
||||
return_value=[],
|
||||
), patch(
|
||||
"packages.shared.celery_orphan_guard.revoke_and_purge"
|
||||
) as m_revoke:
|
||||
with (
|
||||
patch("worker_app.db.SessionLocal", return_value=fake_session),
|
||||
patch(
|
||||
"packages.application.ingest_orphan_cleanup.cleanup_stale_ingest_jobs",
|
||||
return_value=([], []),
|
||||
),
|
||||
patch(
|
||||
"packages.application.ingest_orphan_cleanup.cleanup_orphan_processing_assets",
|
||||
return_value=[],
|
||||
),
|
||||
patch("packages.shared.celery_orphan_guard.revoke_and_purge") as m_revoke,
|
||||
):
|
||||
result = cleanup.scheduled_cleanup_stale_ingest_jobs()
|
||||
|
||||
m_revoke.assert_not_called()
|
||||
|
||||
@@ -184,10 +184,10 @@ class TestCleanupOrphanProcessingAssets:
|
||||
class TestRecoverStuckIngestJobsOnStartup:
|
||||
def test_stuck_processing_job_requeued(self, session):
|
||||
"""processing 超 10 分钟 → 重置 pending 并重新 send_task,回写新 celery id。"""
|
||||
from packages.application.ingest_orphan_cleanup import recover_stuck_ingest_jobs_on_startup
|
||||
|
||||
from types import SimpleNamespace
|
||||
|
||||
from packages.application.ingest_orphan_cleanup import recover_stuck_ingest_jobs_on_startup
|
||||
|
||||
job = _mk_job(session, status="processing", celery_task_id="old-cel-1", asset_id="a-1", minutes_ago=30)
|
||||
|
||||
sent = []
|
||||
|
||||
Reference in New Issue
Block a user