es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo manejar la operación de degradación con Mongock?

Tengo una pregunta sobre cómo realizar un downgrade junto con Mongock. Tengo una aplicación de Java Spring integrada con Mongock y supongamos que actualicé mi aplicación de la versión 1 a la versión 2. Durante la migración de actualización se ejecutó el script de migración “001” y se migraron los datos, por lo que puedo ver una nueva entrada en la colección “mongockChangeLog”.

Después de un día, el cliente informó que hay un error crítico y desea hacer un downgrade de la aplicación a la versión 1. El problema es que el cliente agregó algunos “dispositivos” con un nuevo “tipo” (compatible en la versión 2), que obviamente no es compatible con la versión 1. Ahora, durante el downgrade, quiero eliminar las entradas con el nuevo “tipo” y no sé cómo hacerlo. Veo que mongock admite un método con la anotación “RollbackExecution”, pero según entiendo en la documentación, se disparará en diferentes escenarios.

¿Tienes alguna idea de dónde debería colocar la lógica de rollback que eliminará todos los dispositivos con el nuevo tipo?

Yendo más allá, durante el downgrade, ¿debo eliminar en este caso la entrada de “mongockChangeLog” o hay una mejor solución?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para eliminar todos los dispositivos con el nuevo tipo durante la reducción de versión, puedes crear un nuevo script de registro de cambios llamado “002_rollback” (o cualquier otro nombre que prefieras) con la lógica de reversión que elimina todos los dispositivos con el nuevo tipo. Este script debe colocarse en el mismo paquete que tus otros scripts de registro de cambios.

    Para asegurarte de que este script solo se ejecute durante una reducción de versión, puedes utilizar la anotación @ChangeSet con el atributo order establecido en un valor negativo (por ejemplo, -1). De esta manera, el script de reversión se ejecutará antes del script de migración de v1 a v2 llamado “001”.

    En cuanto a la eliminación de la entrada de la colección “mongockChangeLog”, no debes eliminarla manualmente. El mecanismo de reversión de Mongock eliminará automáticamente todas las entradas que fueron creadas por los scripts de registro de cambios que se están deshaciendo.

Comments are closed.