GBR: ADR-0008 Persistência de Borda e Resiliência de Conexão (DETS & Backoff Exponencial) | Wiki
Documentação de engenharia e especificações técnicas da Gleam-BR.
GBR: ADR-0008 Persistência de Borda e Resiliência de Conexão (DETS & Backoff Exponencial)
- *Status:* Proposto / Em Exploração
- *Data:* 2026-05-01
*Contexto:*
A versão atual do falcon_agent mantém o estado das conexões atreladas unicamente ao ciclo de vida da Thread leve do Erlang e gerencia retenções de pacotes (como o outbound_buffer do Yamux) apenas na memória RAM (Volatility Risk). O teste real (corte da conexão do Gateway) demonstrou que:
1. o Agente não efetua uma tentativa de reconexão automática contínua; e
2. as métricas geradas durante um período de desconexão longa seriam acumuladas até exaurir a RAM do hospedeiro, ou seriam totalmente descartadas.
*Decisão:*
-
*Backoff Exponencial para o Dialer P2P:* A rotina principal de inicialização da malha (
gbr_p2p.dial) no Agente deverá ser abstraída por uma Máquina de Estados (Ator de Supervisão) que entra num laço deReconnect. Se o link físico cair (tcp_closed), o Ator aguarda 5s, depois 10s, 30s, etc., para tentar reiniciar o túnel TCP, sem causar inanição de CPU (spin loop). -
*"Caixa Preta" via DETS (Disk Erlang Term Storage):* Em contraste com o
gbr_ets(em RAM), as métricas coletadas pelodb_workerou pelo novo coletor de OS, enquanto a conexão P2P estiver ociosa ou morta, devem ser persistidas instantaneamente no disco local utilizando a bibliotecadetsdo Erlang. -
*Mecânica de Flush (Burst):* Assim que a conexão Yamux reestabelece a assinatura com sucesso, o Ator responsável pela Caixa Preta lê os blocos históricos do
detse empurra-os (utilizando a janela de fluxo existente do Yamux para garantir o Backpressure) em direção ao servidor QuestDB.
*Consequências:*
- *Positivas:* Tolera quedas de backbone duradouras (como fins de semana inteiros) no cliente corporativo sem perda de nenhum data point; o agente é matematicamente protegido contra estouros de memória OOM (Out Of Memory).
-
*Negativas/Riscos:* As escritas no
detssão substancialmente mais lentas que as doets. Arquivosdetspossuem limitação severa de 2GB pelo motor Erlang. A biblioteca requer a programação rigorosa da rotação de logs (Log Rotation) circular, devendo eliminar métricas antiquadas assim que os ~1.5GB de disco de retenção sejam atingidos para prevenir corrupção estrutural da Caixa Preta.