Tivemos um incidente recentemente que fez com que nosso serviço ficasse indisponível por alguns minutos.
Aqui está o script do liquibase que levou ao incidente:
<addColumn tableName="registration">
<column name="retry_at" value="null" type="DATETIME"/>
<column name="retry_counter" value="null" type="BIGINT"/>
</addColumn>
Como você pode ver, o changeset levou bastante tempo. Nossa equipe concluiu que o valor padrão definido como null
é o culpado aqui. No entanto, de alguma forma, isso não me parece certo.
Quando verifico as páginas 1 e 2 do Postgres , vejo que definir os valores como nulos não é diferente de remover o valor padrão completamente. Então, não vejo por que essa configuração de valor padrão causaria tais problemas. Em uma nota lateral, havia 12 milhões de linhas na tabela.
Como no título, minha pergunta é: definir um valor padrão causa esses tempos de inatividade?
Inicialização do aplicativo:
Started ApplicationKt in 289.989 seconds (process running for 290.727)
Alguns logs antes da operação do liquibase: