Três índices faltando derrubaram três telas em produção
Avisos, palpites do jogo e ranking quebravam no projeto real com a suíte inteira
verde. O motivo é estrutural e vale mais que o defeito: o emulador do Firestore
não exige índice composto — ele responde qualquer consulta. Em produção a mesma
consulta falha com "The query requires an index".
Os 334 casos diziam a verdade sobre a regra e nada sobre a infraestrutura da
consulta, porque todos rodam no emulador de propósito. Rodar teste contra produção
seria pior.
O mais instrutivo dos três: o índice de palpites existia só no escopo de grupo,
declarado para a Function do sigilo. A consulta do app é quase idêntica e precisa
de outro, de coleção. Duas consultas parecidas, dois índices diferentes, e a
diferença não aparece em lugar nenhum do código.
A verificação virou script sem credencial: scripts/conferir-indices.py compara
cada consulta do app e das Functions com o firestore.indexes.json. Escrito depois
do defeito e testado contra ele — removendo os três índices, acusa os três.
Índices publicados no projeto real.
Co-Authored-By:
Claude Opus 5 (1M context) <noreply@anthropic.com>
parent
36d07787
Please register or sign in to comment