IOSOR База знаний

Частичный failover без двойного списания

Mid-flight switch rail на одном client intent должен settle один раз и никогда не выдумывать Delivered на backup — white-label prepaid-честность для partial failover.

Mid-flight failover — это всё ещё один client intent. Primary мог принять, затаймаутиться или отклонить после hold; backup затем несёт тот же unit. Switch не должен открывать второй settle, выдумывать Delivered или смешиваться с user retry.

IOSOR — white-label prepaid. USD 20 — публичный минимум пополнения (пол пилота). Soft review около USD 1 000/мес — когда баги partial-send умножают burn. Упорядоченный путь: Сбой primary rail: упорядоченный backup без двойного списания. Гейты Live: Гейты failover до любого бейджа Live. Hold: prepaid-резерв до первого списания.

Mid-flight switch — всё ещё один intent

Partial failover значит: unit один раз вышел из API покупателя, затем ops сменили rail, потому что primary не завершил. Клиент видит одну строку, один idempotency key, одну money story. Не считайте hop на backup новой отправкой и не создавайте второй hold. Переиспользуйте идентичность из идемпотентность, retry и деньги.

Что значит «partial send» в деньгах

Этап Деньги Правда для клиента
Hold на intent Резерв один раз Средства защищены на один unit
Primary принял, затем сбой mid-path Один settle-кандидат Pending / needs attention — не Delivered
Backup принял тот же ключ Без второго settle Тот же debit; rail сменился у ops
Backup не завершил Failed или release Без выдуманного успеха

Никогда не выдумывайте Delivered на backup

Смена rail не доказывает inbox. Backup может принять и вернуть failed DLR, timeout или тишину. Клиентский статус следует evidence: accepted, pending, delivered, failed, needs attention — только white-label. Ops могут логировать выполнивший rail; покупатель — нет.

Это не политика retry и не упорядоченный путь

Здесь — mid-flight деньги на уже начатый switch, не когда retryить failed DLR (политика retry при failed DLR на prepaid) и не заранее записанный primary → backup (сосед). Чистая retry-политика не чинит двойной settle; упорядоченный путь без правил partial-send всё равно выдумывает Delivered.

Чеклист покупателя для partial failover

  1. Один idempotency key покрывает деньги primary и backup на один intent?
  2. Backup может принять без второго settle?
  3. Клиентские статусы white-label без выдуманного Delivered только от switch?
  4. Hold-fail пути делают auto-release без settled-призраков на любом rail?
  5. Mid-flight switch задокументирован отдельно от политики DLR retry?

Начните с IOSOR

Вызовите отказ основного в середине отправки на непродуктивном коридоре. Упорядоченный резерв должен взять тот же ключ намерения. Выгрузите одно списание, остаток и честный конечный статус. Если основной уже отправил часть склеенного тела, не выдумывайте Delivered на резерве и не открывайте второе закрытие за эти части.

Итог IOSOR

Частичное переключение — всё ещё одно намерение клиента.

Делайте: держите один ключ и одно списание через hop в середине отправки.

Не делайте: выдумывать Delivered на резерве, который части не владел, или брать остаток дважды.

Был ли материал полезен?

Связанные гайды