01
Dois chamados, uma coluna: a colisão que se curou sozinha e os números que sumiram
A migração do marketplace antigo precisava manter os números de pedido que os clientes já conheciam. O script de importação usou COPY com a coluna id preenchida, de 200.001 a 205.000. A tabela tinha id GENERATED BY DEFAULT AS IDENTITY, que aceita valor explícito sem reclamar, e a sequência estava em 198.400. Nada falhou na importação. A sequência simplesmente não ficou sabendo que aqueles 5.000 números agora estavam ocupados.
Seg 09:00 importação de 5.000 pedidos do marketplace antigo, com os IDs originais
IDs importados: 200.001 a 205.000 | sequência de pedidos em 198.400
COPY com coluna id explícita: a sequência não se move
Seg 09:00..13:10 checkout cria pedidos 198.401 ... 200.000 normalmente
Seg 13:11 nextval = 200.001 -> ERROR 23505 duplicate key value violates "pedidos_pkey"
cada tentativa falha, mas consome um valor da sequência
13:11..15:40 ~5.000 checkouts com erro 500 até a sequência passar de 205.000
15:41 "voltou sozinho": ninguém corrigiu nada, os erros queimaram os valores
Ter 02:10 failover da primária para a réplica
último pedido antes: 205.388 | primeiro depois: 205.421 (salto de 32)
Qua financeiro abre chamado: "faltam 33 números de pedido entre segunda e terça"O detalhe que confundiu o plantão foi a "cura espontânea". Cada INSERT que falhava com 23505 tinha chamado nextval antes de bater na chave primária, e o valor consumido não voltava. Depois de cerca de 5.000 checkouts com erro, a sequência passou de 205.000 e os inserts voltaram a funcionar. O incidente terminou sozinho, mas custou duas horas e meia de pedidos perdidos e deixou uma bomba armada para a próxima importação.
Os 33 números que o financeiro procurava não eram pedidos apagados. Um veio de um checkout cancelado por falta de estoque depois do INSERT, que fez rollback. Os outros 32 vieram do failover de terça de madrugada. Nenhum dos dois casos é anomalia: é o contrato da sequência funcionando como foi desenhado.