Gerenciando evoluções no ambiente de produção

Estamos no processo de implantar um novo aplicativo usando o play 2.1.1 para produção e estamos tendo alguns problemas reais com ele e a documentação muito limitada não ajudou muito ...

Então chegou a hora de atualizar para uma nova versão, nós rodamos nossos scripts habituais de stop / upgrade / start mas eles falharam. Por alguma razão, o jogo recusava-se a aplicar as evoluções. Ao começar, ficava dizendo

Ops, não é possível iniciar o servidor. @ 6elnj89fh: Banco de dados 'padrão' precisa de evolução!

Isso foi embora nós tentamos definirapplyEvolutions.default=true tanto através da linha de comando quanto no arquivo application_prod.conf. Ele também reclamou que

AVISO! Este script contém evoluções do DOWNS que são provavelmente destrutivas

o que não faz muito sentido para mim, já que estamos subindo na versão, então os downs não devem ser aplicados de qualquer maneira. Mas parece que esta pode ter sido a razão pela qual se recusou a aplicar as evoluções.

Neste ponto, não fiquei tão preocupado, pois achei que havia alguma maneira manual de aplicar as evoluções. Após uma busca extensa parece que ... Houve suporte para isso no jogo 1, mas não no jogo 2. No modo de desenvolvimento você pode apenas pressionar um botão no navegador para aplicar as evoluções, mas no modo prod eu poderia encontrar NO WAY OF APLICANDO EVOLUÇÕES MANUALMENTE. Isso é verdade ou eu perdi isso? Eu realmente acho que isso é uma característica importante! (Na visão de trás eu poderia ter aplicado os scripts manualmente e desativado o plugin de evoluções, mas então eu teria perdido o rastreamento de evoluções que é útil ..)

Eu também me pergunto como você iria "apoiar" o seu banco de dados, pois estou certo de que chegaremos a um ponto em que precisaremos fazer isso em algum momento. Se houvesse uma maneira manual de fazer isso, provavelmente teria um argumento de versão opcional para fazer o downgrade do banco de dados. Por exemplo. se você está na versão 5 e precisa voltar para 4 você correplay apply-evolutions 4 que então aplicaria os downs da versão 5 e atualizaria as evoluções db de acordo. Eu poderia aplicar os downs manualmente, mas, novamente, o problema é que as evoluções do banco de dados estarão novamente em um estado inválido ...

Ficando mais desesperada, tentei todas as configurações que encontrei para colocar o servidor novamente e adicionei-DapplyDownEvolutions.default=true opção. Eu assumi que essa configuração iria aplicar downs apenas ao escolher para fazer o downgrade do banco de dados (embora pareça não haver tal opção), mas o que de fato aconteceu foi aplicar os ups e aplicar instantaneamente os downs (descobri isso mais tarde na solução de problemas O servidor agora finalmente começou - sem qualquer mensagem - mas deu uma mensagem de erro enigmática ao visitar o site). É isso que essa configuração deve fazer? Se for, não consigo entender por que a configuração existe mesmo. Não consigo pensar em nenhum cenário em que você queira aplicar ups e, em seguida, diminui instantaneamente ao migrar para uma versão de banco de dados mais nova. Alguém pode lançar alguma luz sobre esse cenário?

Neste ponto, eu finalmente consegui executar novamente o aplicativo manualmente executando novamente as "UPs" apropriadas.

Neste ponto, estamos trabalhando basicamente em reescrever scripts para evoluções por conta própria, para ter um melhor controle do que é executado e para permitir voltar atrás. Seria muito melhor poder usar a funcionalidade de reprodução para isso, então eu Estou esperando que alguém possa lançar alguma luz sobre isso. Se não, talvez este discurso possa ajudar alguém em uma situação semelhante ...

questionAnswers(1)

yourAnswerToTheQuestion