Pular para o conteúdo principal

Idempotência, bloqueios e nova tentativa.

As proteções operacionais reduzem o processamento duplicado e gravações simultâneas acidentais. Eles complementam o orquestrador; eles não substituem o design correto do trabalho.

Políticas de idempotência

PolíticaComportamento
always_runExecute sempre. Este é o padrão.
skip_if_successPule quando a mesma chave já tiver sido bem-sucedida.
fail_if_successFalha quando a mesma chave já foi bem-sucedida.
rerun_if_failedExecute somente quando a execução anterior da chave falhou.

Exemplo

idempotency_key: "orders:${run_date}"
idempotency_policy: skip_if_success
lock_enabled: true
retry_attempts: 5
retry_backoff_seconds: 10

Fechaduras

Os bloqueios são cooperativos e de melhor esforço. Eles protegem os escritores do ContractForge de pisarem uns nos outros, mas não podem impedir que um trabalho do Spark não relacionado seja gravado no mesmo destino.

  • Use bloqueios para trabalhos agendados que gravam o mesmo destino.
  • Mantenha as mensagens de bloqueio acionáveis ​​para os operadores.
  • A liberação acontece em caminhos de falha por meio do bloco de orquestração finally.

Tentar novamente

A nova tentativa é útil para conflitos Delta transitórios e ruído de infraestrutura. Ele não deve ocultar falhas determinísticas de contrato, como esquema inválido, credenciais incorretas ou barreiras de qualidade quebradas.