Gestionando evoluciones en entorno de producción.

Estamos en el proceso de implementar una nueva aplicación que utiliza play 2.1.1 para producción y estamos teniendo algunos problemas reales con ella y la documentación muy limitada no ayudó mucho ...

Así que era hora de actualizar a una nueva versión, ejecutamos nuestros scripts habituales de detención / actualización / inicio, pero fallaron. Por alguna razón, el juego se negaba a aplicar las evoluciones. Al arrancarlo seguía diciendo.

Vaya, no se puede iniciar el servidor. @ 6elnj89fh: ¡La base de datos 'por defecto' necesita evolución!

Esto fue a pesar de que intentamos establecerapplyEvolutions.default=true tanto a través de la línea de comandos como en el archivo application_prod.conf. También se quejó de que

¡ADVERTENCIA! Este script contiene evoluciones DOWNS que probablemente sean destructivas

lo cual no tiene mucho sentido para mí, ya que estamos subiendo en versión, por lo que los bajos no deberían aplicarse de todos modos. Pero parece que esta podría haber sido la razón por la que se negó a aplicar las evoluciones.

En este punto, no estaba tan preocupado como suponía que hay alguna forma manual de aplicar evoluciones. Después de una extensa búsqueda, parece que ... Hubo soporte para esto en el juego 1 pero no en el juego 2. En el modo dev, solo tienes que presionar un botón en el navegador para aplicar las evoluciones, pero en el modo prod. MANUALMENTE APLICANDO EVOLUCIONES. ¿Es esto cierto o me lo perdí? Realmente creo que esta es una característica importante! (En retrospectiva, podría haber aplicado los scripts manualmente y deshabilitado el plugin de evoluciones, pero luego habría perdido el seguimiento de evoluciones, lo que es útil ...)

También me pregunto cómo haría para "respaldar" su base de datos, ya que estoy seguro de que llegaremos a un punto en el que debemos hacerlo en algún momento. Si hubiera una forma manual de hacerlo, probablemente tendría un argumento de versión opcional para degradar la base de datos. P.ej. Si estás en la versión 5 y necesitas volver a 4, corresplay apply-evolutions 4 que luego aplicaría las desventajas de la versión 5 y actualizaría la evolución db en consecuencia. Podría aplicar las bajadas manualmente, pero de nuevo el problema es que la evolución db volverá a estar en un estado no válido ...

Volviéndome más desesperado, probé todas las configuraciones que pude encontrar para volver a encender el servidor y agregué-DapplyDownEvolutions.default=true opción. Asumí que esta configuración aplicaría bajadas solo al elegir degradar la base de datos (aunque parece que no hay tal opción), pero en realidad lo que hizo fue aplicar las subidas y luego aplicar las bajadas (lo descubrí más adelante en la resolución de problemas como el servidor ahora finalmente comenzó, sin ningún tipo de mensaje, pero dio un mensaje de error críptico al visitar el sitio). ¿Es eso lo que se supone que hace esta configuración? Si es así, no puedo entender por qué existe la configuración. No puedo pensar en ningún escenario en el que desee aplicar subidas y bajadas instantáneas al migrar a una nueva versión de la base de datos. ¿Alguien puede arrojar algo de luz sobre esta configuración?

En este punto, finalmente pude hacer que la aplicación se ejecute nuevamente, volviendo a ejecutar manualmente las "UP" apropiadas.

En este punto, estamos trabajando básicamente en la reescritura de scripts para el manejo de evoluciones por nuestra cuenta para tener un mejor control de lo que se ejecuta y para permitir el retroceso. Sería mucho mejor poder usar la función de reproducción para esto, así que Espero que alguien pueda arrojar algo de luz sobre esto. Si no, tal vez esta perorata pueda ayudar a alguien en una situación similar ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta