Repetir um conflito de serialização em vez de interromper todo o inicializador

FixInitializerService
Navios
11 de agosto de 2026 às 18:36 UTC
Autor
Kamo
Enviar
b4fd867

Encontrei-o a correr. YugabyteDB realiza mudança de esquema on-line, então um CRIATE UNIQUE ÌNDICE emitido enquanto o passe ddl-auto de Hibernate ainda está se estabelecendo pode perder a corrida e voltar 40001 "não foi possível serializar o acesso devido à atualização concorrente". A declaração é válida — o mesmo um sucesso momentos depois. Tratar isso como fatal foi muito pior do que parece. Este corredor é @Order( 43), então o lançamento abortou todo o inicializador e pulou todos os 27 corredores ordenados após ele. Um conflito transitório portanto, silenciosamente reteve cada migração posterior na plataforma, e o único sintoma visível foi um stack track no meio de uma corrida normal. garantirRequerido e garantirCheckConstraint agora tentar até cinco vezes com backoff linear quando o falha é um conflito de concorrência, combinado no SQLSTATE 40001 e na mensagem (o driver superfície ambos os modos, dependendo de onde é levantada) e andando a cadeia de causa, porque Primavera Enrola-o. A correspondência é deliberadamente estreita: uma tabela faltando, uma coluna ruim ou uma chave duplicada conflito em dados reais é um defeito que ainda deve falhar em voz alta em vez de ser tentado mais quatro vezes e depois falhar de qualquer maneira. Verificado contra o banco de dados ao vivo após a correção: todas as 20 tabelas hr training * presentes, todas as cinco necessários índices únicos criados, os dois-colunas curso-item CHECK no local, todos os quatro e-mail de treinamento templates semeados (uma linha do SISTEMA mais 13 linhas de org cada), e cada corredor após @Order(43) alcançado.

Todas as alterações

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços