From 6a292769a3b208eee6d4b3cd84227e6fb753b499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Sat, 15 Aug 2026 09:31:11 +0400 Subject: [PATCH] =?UTF-8?q?tests:=20fifo=5Fdlq=5Fprobe=20=E2=80=94=20?= =?UTF-8?q?=D0=BE=D0=BF=D1=80=D0=BE=D1=81=20DLQ=20=D0=B4=D0=BE=2010=D1=81?= =?UTF-8?q?=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=BC=D0=B3=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20(=D0=B3=D0=BE=D0=BD=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=81=20=D1=82=D0=B8=D0=BA=D0=BE=D0=BC);=20=D1=84?= =?UTF-8?q?=D0=B8=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B3=D1=80=D0=B5=D1=81=D1=81=D0=B8=D1=8F=20=D0=B7=D0=B5=D0=BB?= =?UTF-8?q?=D1=91=D0=BD=D0=B0=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HISTORY/2026-08-14-session-log.md | 17 +++++++++++++++++ tests/fifo_dlq_probe.py | 10 +++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/HISTORY/2026-08-14-session-log.md b/HISTORY/2026-08-14-session-log.md index aee0b81..58f5da6 100644 --- a/HISTORY/2026-08-14-session-log.md +++ b/HISTORY/2026-08-14-session-log.md @@ -885,3 +885,20 @@ SIGKILL/рестарте пода запись не успевает → оче **RSS-мониторинг P3.7**: продолжает писаться в `rss_monitor.log` (старт 08:16 +0300, VmRSS=16588 kB, Threads=13). + +## 2026-08-15 — фикс fifo_dlq_probe применён, финальная регрессия зелёная + +**Правка** (`tests/fifo_dlq_probe.py`, по команде «делай»): после цикла попыток +DLQ опрашивается до 10с (drain каждые 1с) вместо мгновенной проверки — +устранена гонка с тиком PeriodicTasks (период 1с). + +**Проверка**: 5/5 PASS подряд, включая «тяжёлые» фазы (attempt 2 empty / +attempt 3 received), которые раньше флапали. + +**Финальная полная регрессия на ВМ** (`full_regression2.log`, 26с): +- api_test.sh: **PASS=22 FAIL=0** +- sdk_test.py: **PASS=15 FAIL=0** +- fifo_dlq_probe.py: fifo_order PASS, fifo_dedup PASS, dlq PASS, exit=0 + +ВСЕ тесты зелёные. План Соннета выполнен: P0.1, P0.2, P1.4, P2.5, P2.6, +P3.8 — PASS; P3.7 (RSS 2ч) — мониторинг в процессе. diff --git a/tests/fifo_dlq_probe.py b/tests/fifo_dlq_probe.py index fdd7359..04769d7 100644 --- a/tests/fifo_dlq_probe.py +++ b/tests/fifo_dlq_probe.py @@ -89,7 +89,15 @@ def check_dlq(): b = sqs.receive_message(QueueUrl=main_url, MaxNumberOfMessages=1).get("Messages", []) print("attempt %d: %s" % (attempt + 1, "received" if b else "empty"), flush=True) time.sleep(1.5) - dlq_msgs = drain(dlq_url) + # Перенос в DLQ выполняет фоновый тик PeriodicTasks (период 1с) при + # истечении VisibilityTimeout. Мгновенная проверка гоняет с фазой тика — + # опрашиваем DLQ до 10с. + dlq_msgs = [] + for _ in range(10): + dlq_msgs = drain(dlq_url) + if dlq_msgs: + break + time.sleep(1) ok = len(dlq_msgs) == 1 and dlq_msgs[0]["Body"] == "to-dlq" results["dlq"] = ok print("dlq: count=%d body=%s %s" % (len(dlq_msgs), dlq_msgs[0]["Body"] if dlq_msgs else None,