Skip to content

Commit fdd9521

Browse files
author
Pessoa
committed
Merge branch 'pr726' into reconciliacao/726
# Conflicts: # hostgator-setup-kit/_common.sh
2 parents e142504 + b8e28c2 commit fdd9521

3 files changed

Lines changed: 56 additions & 2 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
impacto: nada_mudou
3+
secao: corrigido
4+
titulo: O instalador não para mais em "Ativando as automações" numa VPS nova
5+
---
6+
7+
Numa VPS recém-criada, o root ainda não tem agendamento nenhum, e o instalador
8+
parava logo depois de "chave de cifra ativa no banco", sem mensagem de erro,
9+
mostrando "A instalação parou" com o CRM já no ar. Rodar o instalador de novo
10+
contornava. Agora ele agenda as automações e o agente de atualização direto,
11+
na primeira rodada. Quem já instalou não precisa fazer nada. Crédito: @rafaelbatistazz.

hostgator-setup-kit/_common.sh

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -805,9 +805,25 @@ setup_event_log_drain_cron() {
805805
# O dono vê o script morrer sem mensagem, numa instalação que na verdade
806806
# funcionou.
807807
#
808+
# ACHADO DUAS VEZES, POR DUAS PESSOAS QUE NÃO SE FALARAM, NO MESMO DIA:
809+
# @luiscgc91 (PR #683) e @rafaelbatistazz (issue #715 + PR #726), os dois
810+
# instalando numa VPS limpa. Os dois escreveram EXATAMENTE a mesma linha. Isso
811+
# não é redundância — é a medida de quanto o defeito doía, e a razão de este
812+
# comentário ser longo: ele existe para a terceira pessoa não precisar
813+
# descobrir de novo.
814+
#
815+
# A issue #715 descreve o sintoma como quem o viveu: o instalador para logo
816+
# depois de "✓ chave de cifra ativa no banco", cai na tela "A instalação
817+
# parou", e os contêineres estão SAUDÁVEIS. Rodar de novo passa — porque aí o
818+
# crontab já não está vazio, o que faz o defeito parecer fantasma.
819+
#
808820
# Reproduzido com um dublê de `crontab` que sai 1 no `-l`: sem o `|| true`, a
809-
# linha seguinte a este bloco nunca é alcançada. Vigiado por
810-
# `tests/shell/cron-sem-crontab-previo.test.sh`.
821+
# linha seguinte a este bloco nunca é alcançada. Vigiado por DOIS testes, de
822+
# propósito: `tests/shell/cron-sem-crontab-previo.test.sh` mede cada função
823+
# isolada, e o bloco `cron numa VPS sem crontab nenhum` de
824+
# `hostgator-setup-kit/test-validators.sh` (de @rafaelbatistazz) roda AS DUAS
825+
# no mesmo processo — como o `install.sh` faz — e confere que as duas linhas
826+
# foram gravadas.
811827
#
812828
# Stdin vazio para o `cron_merge` é exatamente o que "sem crontab prévio" deve
813829
# produzir — o comportamento não muda, só o status.

hostgator-setup-kit/test-validators.sh

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2566,6 +2566,33 @@ reexec_neg() {
25662566
reexec_neg
25672567
reexec_ok "o bloco de variáveis conhecidas acha o kit depois do cd"
25682568

2569+
echo "cron numa VPS sem crontab nenhum (#715)"
2570+
# VPS nova não tem crontab para o root: `crontab -l` sai 1. As rodadas acima
2571+
# nunca mediram isso, porque o sandbox já tinha linhas quando elas agendavam — e
2572+
# o install.sh morria em "Ativando as automações" em toda VPS recém-criada. As
2573+
# duas funções rodam aqui sob o MESMO `set -euo pipefail` do install.sh, com o
2574+
# dublê de crontab apontado para um arquivo que não existe.
2575+
cron_vazio() (
2576+
# Subshell: `montar_vps` define VPS_* globais, e os blocos seguintes da suíte
2577+
# não podem herdar esta fixture.
2578+
montar_vps "$SUITE_TMP/cron-vazio" projeto < <(printf '#!/bin/sh\nexit 0\n')
2579+
local sandbox="$SUITE_TMP/crontab-vazio.txt"; rm -f "$sandbox"
2580+
local out rc
2581+
out="$(cd "$VPS_PROJ" && env PATH="$VPS_RAIZ/bin:$PATH" CRONTAB_SANDBOX="$sandbox" \
2582+
INTERNAL_SECRET=segredo-de-teste NEXT_PUBLIC_APP_URL=https://crm.exemplo.com.br PROJECT_DIR="$VPS_PROJ" \
2583+
bash -c 'set -euo pipefail; . "$1/_common.sh"; psql_run() { :; }
2584+
setup_event_log_drain_cron; setup_update_agent_cron; echo CHEGOU-AO-FIM' _ "$VPS_RAIZ" 2>&1)" \
2585+
&& rc=0 || rc=$?
2586+
if [ $rc -ne 0 ] || ! printf '%s' "$out" | grep -q CHEGOU-AO-FIM; then
2587+
printf ' ✗ agendar o cron numa VPS sem crontab derrubou o script (saída %s)\n' "$rc"; return 1
2588+
fi
2589+
if [ "$(grep -c '# deskcomm:' "$sandbox" 2>/dev/null)" != 2 ]; then
2590+
printf ' ✗ esperava 2 linhas (drain + agente) no crontab, veio %s\n' "$(grep -c '# deskcomm:' "$sandbox" 2>/dev/null || echo 0)"; return 1
2591+
fi
2592+
printf ' ✓ sem crontab prévio, drain e agente agendados e o script segue\n'
2593+
)
2594+
cron_vazio || fail=1
2595+
25692596
echo "isolamento: a suíte não escreve no crontab da máquina"
25702597
# Isto não é hipótese defensiva: os testes JÁ escreveram 10 linhas órfãs no
25712598
# crontab do mantenedor, uma delas um `curl` com Bearer disparando a cada minuto

0 commit comments

Comments
 (0)