#!/usr/bin/env sh
#
# ESPERA O PHP-FPM ENXERGAR O ARQUIVO PHP QUE ACABOU DE SER ESCRITO -- o
# `config/autoload/local.php` trocado de banco, antes do primeiro pedido HTTP.
#
#     sh scripts/esperar-o-opcache.sh
#
# POR QUE ISTO EXISTE (05/11/2026, a fatia 81, a segunda vez do mesmo vermelho).
# O `ApiV4Test::testRegistrarERetirarAparelhoAutenticado` caiu duas vezes no
# contrato do PostgreSQL (nas fatias 76d e 81), e passava sozinho: o aparelho
# registrado com 200, e a retirada logo depois com `retirado: false`. O contrato
# do PostgreSQL roda cerca de 2 s depois do do MySQL, e o `ApiV4Test` e o
# primeiro arquivo da suite. O opcache do conteiner revalida o arquivo a cada
# `revalidate_freq` = 2 s, contados em segundos inteiros, e o worker que acabou
# de servir o contrato do MySQL segue com o `local.php` VELHO em cache: um dos
# dois pedidos ia ao banco de contrato do MySQL, onde o aparelho nao estava.
#
# MEDIDO com uma sonda descartavel (um arquivo PHP escrito no Mac e lido pelo
# php-fpm logo depois da troca): sem espera, o valor velho voltou em 8 de 8
# trocas, em ate 69 de 100 pedidos em 4 s, o ultimo aos 2,72 s; com 3 s e com
# 4 s de espera, nenhum pedido velho em 8 trocas de 60 pedidos cada. Ficam 4 s.
#
# SEM REINICIAR NADA: recarregar o php-fpm ou o conteiner resolveria tambem, e
# nao se faz daqui. Esperar custa 4 s por troca.

set -eu

sleep "${ESPERA_DO_OPCACHE:-4}"
