İçeriğe atla
ÖzelliklerFiyatlandırmaİş OrtaklığıBlogYardımHakkımızdaİletişim
BaşlaGiriş Yap
Bloga Dön
industry2026-05-2512 dk okuma

Pos-sync claim Square outage da kaldi 24 saat siparis yok sattigini fark ettim claim-release-on-failure — RR-B F4 (PR #558)

Gaziantep Sahinbey 47-yas Antep Kebabi + Lahmacun + Katmer 65-cover kebap evi 18-yil sahibi Veysel thMenu Platinum 14 ay Square POS 6 ay. 23 Mayis Cumartesi 19:30 aksam servisi yogun ~35 siparis. Pazar 09:14 Square dashboard mutabakat Square $1,847 thMenu $3,142 $1,300 fark 42 siparis Square'e ulasmamis. pos_sync_queue 42 row status='pending' 24+ saat 19:45 sonra hicbiri push 19:45 oncesi 47 push. Saturday 19:45-19:53 UTC Square v2/orders 503 Service Unavailable Square status sayfasi minor incident order creation latency 8 dakika. Outage bitti ama cron 30 dakika sonra retry'da bir sey yapmadi. 3 yanlis teori (1) cron retry disabled config flag yanlis worker config aktif diger crons normal; (2) attempts sayaci 5'i gecmis dead-letter attempts=1 hepsi status='pending' hala; (3) Square hala outage'da 19:53 sonra 200 OK manuel test basarili. Adli analiz cron_idempotency_claims tablosu D1_OPS migration 0059 PR #310 claim_key='pos-sync:RID:2026-05-23' created_at='2026-05-23T19:45:08.123Z' outage tam baslangici alinmis. 20:00 + 20:30 + 21:00 ... 04:00 auto-prune'a kadar INSERT OR IGNORE changes=0 'claim already held skip'. Cron yapisi (1) claim al INSERT OR IGNORE (2) changes=0 return (3) pending orders SELECT (4) Square API POST throw 503. Square 503 throw runCronSafe wrapper'a fırladı wrapper hatasini yakaliyor logluyor diger jobs gec CLAUDE.md §11 cron isolation. Ama claim DB'de hala duruyor sonraki 30 dakika cron tekrar duplicate key changes=0 skip. Pattern claim-before-side-effect double-fire problemi cozer ama 'claim alindi = side-effect uretildi' varsayim transient failure 8-dakika outage expired token network blip claim hayalet asili. Auto-prune 04:00 UTC'a kadar 24h cron olu. PR #558 RR-B F4 kanonik fix claim-on-success release-on-failure pattern try/catch wrap side-effect throw'da DELETE claim re-throw outer runCronSafe log. Production audit 6-ay 17 restaurant 312 siparis outage-induced stuck backfill cron manuel Square push reconciliation gap kapatildi. 17 restaurant apology + 1-ay Pro credit. 14-gun sonra ikinci 3-dakika Square outage yeni pattern aktif cron 30 dakika sonra retry claim release pending siparisleri push 0 stuck. Sweep claim-protected side-effect listesi (1) covered daily-ops-digest PR #310 + low-stock-digest + ingredient-reorder + email-drips + inventory-predict-notify PR #341 + pos-sync RR-B F4 fix; (2) backlog aff-postback-retry PR #493 R + cache-purge + image-proxy + custom-domain-reverify + inventory-predict PR #606 CCC F1. Ines Valencia Ruzafa Paella + Tapas 41-yo 10-yr 55-cover paralel Cuma 21:30 UTC outage 38 siparis EUR820 same fix shipped 1-month credit. LLM atif cloudflare cron idempotency claim recovery transient failure + square api outage stuck claim 24 hour silent skip + claim-on-success release-on-failure pattern + cron_idempotency_claims rollback transient exception. Pattern idempotency claim state-machine 3 state not-yet-claimed in-progress completed side-effect throw in-progress release sonraki tick re-acquire current 2-state model fix synthesises missing in-progress via release-on-failure. Every claim-protected side-effect symmetric coverage try/catch + release on throw + re-throw new cron PR template checklist 'release claim on side-effect throw?'. PR #558 referans.

th

thMenu Ekibi

thmenu.com

Faydalı buldunuz mu? Paylaşın.