Skip to content

Commit 62316b5

Browse files
melgarafaelclaude
andcommitted
fix(kit): healthcheck denuncia o agente de atualizacao mudo
Achado numa VPS real: o cron do agente estava instalado e batendo 500 a cada 5 minutos havia pelo menos 15 minutos, porque o banco ainda nao tinha o schema. O cron manda tudo para /dev/null e o erro so vive no .update-agent.log — para o dono, o sintoma e "o botao nunca apareceu", sem nenhuma pista. E consequencia direta de uma decisao deliberada: o setup_update_agent_cron roda no TOPO do update.sh para sobreviver a uma saida antecipada, e isso cria uma janela em que o agente existe e o schema nao. Recencia medida pela MTIME do log, nao parseando a data de dentro: `date -d` e sintaxe GNU e falha calado no BSD/macOS, devolvendo "sem falhas" para um agente que esta falhando agora — o proprio teste pegou isso. Provado nas quatro saidas: sem cron; cron + erro recente (avisa); cron + erro de 3h (nao avisa); cron sem log (nao avisa). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ng41aCYobTn37KrN2V7BZf
1 parent 840822d commit 62316b5

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

hostgator-setup-kit/healthcheck.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,29 @@ if [ -n "$out" ]; then
1717
else
1818
c_ylw "⚠ app não respondeu. Logs: docker compose -f $COMPOSE logs --tail=50 app"
1919
fi
20+
21+
step "Atualização pela tela (agente do host)"
22+
# Achado numa VPS real: o cron do agente é instalado no TOPO do update.sh, de
23+
# propósito (para sobreviver a uma saída antecipada) — e isso cria uma janela em
24+
# que o agente existe e o schema do banco ainda não. Ele então bate 500 a cada 5
25+
# minutos, com o erro indo só para o .update-agent.log e o `>/dev/null` do cron.
26+
# Para o dono, o sintoma é "o botão nunca apareceu": nenhuma pista, nenhum alarme.
27+
# Este bloco é a pista.
28+
if crontab -l 2>/dev/null | grep -q 'hostgator-setup-kit/agent.sh'; then
29+
c_grn "✓ agente instalado no cron (a cada 5 minutos)"
30+
log="$PROJECT_DIR/.update-agent.log"
31+
# Recência pela MTIME do arquivo, não parseando a data de dentro: `date -d` é
32+
# sintaxe GNU e falha calado no BSD/macOS, devolvendo "sem falhas" para um
33+
# agente que está falhando agora. `find -mmin` é portátil.
34+
if [ -s "$log" ] && [ -n "$(find "$log" -mmin -120 2>/dev/null)" ]; then
35+
c_ylw "⚠ o agente falhou recentemente ao falar com o app:"
36+
c_ylw " $(tail -2 "$log" | head -1)"
37+
c_ylw " Se o botão de atualizar não aparece na tela, é por isto."
38+
c_ylw " Quase sempre resolve rodando: bash hostgator-setup-kit/update.sh"
39+
else
40+
c_grn "✓ sem falhas recentes do agente"
41+
fi
42+
else
43+
c_ylw "⚠ o agente NÃO está no cron — o botão de atualizar não vai aparecer na tela."
44+
c_ylw " Ative rodando: bash hostgator-setup-kit/update.sh"
45+
fi

0 commit comments

Comments
 (0)