Errores con las personalizaciones

Buenos días.
Les comento que instalé el Guaraní 3 y estoy realizando personalizaciones.
Realicé un esquema_pers exportar. Y luego en el servidor de producción un esquema_pers_importar. Y saltan errores en el conflictos.log.
Esto me llama mucho la atención ya que no hice nada extraño, solo crear un componente con un filtro. Es decir, son errores de SQL.
Realmente no entiendo porqué sucede esto. Les paso el conflictos.log, a ver si me pueden iluminar. Un saludo!


conflictos.log.txt (8.81 KB)

Hola Pablo.

El log dice que ya existian esos metadatos exportados en el servidor al cual queres importarlos.
Me pasas la secuencia de pasos realizadas en ambas maquinas para determinar si es correcto?
Uds trabajan con svn?
Has hecho cosas en el otro servidor previo al pasaje de estos metadatos personalizados?

Saludos,

Gonzalo

Qué tal Gonza?
En principio los errores saltan en mi propia máquina. En este momento no está versionado y soy el único que está trabajando en esto.
Entonces yo hago:
./guarani esquema_pers exportar
En este punto reviso los xml de diferencias y parece estar todo OK. Ahora quiero probar si yo podría hacer un regenerar de estos datos en el caso hipotético de que otro desarrollador compañero subiese algo (haría un svn up, pero bueno, no hago nada por ahora). Entonces, ejecuto:
./guarani esquema_pers conflictos
Y acá saltan varios conflictos … como decís vos dicen que ya están creados los metadatos, es lógico porque yo los cree, pero que pasa si estuviese trabajando en equipo?

Por otro lado, en el servidor de producción probamos dos cosas:
Primero, copiando la carpeta personalizaciones y haciendo un:
./guarani esquema_pers importar
Resultando en muchos errores …

Segundo, copiando la carpeta personalizaciones y haciendo un:
./guarani esquema_pers exportar
./guarani esquema_pers importar
Resultando en muchos errores …

PD: tuve un temita porque empecé a laburar con id_desarrollador 3, y luego cambié a la que me dio el SIU. DUDO que sea esto, porque instalé otro guaraní con el id_desarrollador bien de una, y sigue tirandome estos errores en el conflictos.log

Hola Pablo!

Vamos por partes.

El comando “guarani esquema_pers conflictos”, lo que hace es comparar la BD original (por defecto esquema toba_guarani) con los metadatos personalizados modificados exportados y traducirlo un poco añadiendo además, la calidad del error (fatal, reparable, etc…). Ahora bien, los conflictos entre metadatos modificados por diferentes desarrolladores, se resuelven a nivel de sistema de archivos y luego se importan todos juntos nuevamente a la BD.
Lo que seguramente te esta pasando es que debes desactivar las personalizaciones, volver a iniciarlas y luego importar todos los metadatos personalizados (los tuyos y de otros desarrolladores mezclados nuevamente). Es un poco complicado y difiere del modo de trabajo normal de toba (con los metadatos originales) pero es la manera en que Toba soporta personalizaciones.
Para clarificarlo un poco mas va un ejemplo:
Supongamos que vos tenes instalado el sistema y queres desarrollar una personalizacion. Entonces lo que debes hacer es iniciar el esquema de personalizaciones modificar lo que desees y luego hacer un “guarani esquema_pers exportar” que lleva tus cambios al sistema de archivos (guarani/personalizaciones/metadatos). Supongamos que otro desarrollador, al igual que vos tamvien desarrollo otra personalizacion procediendo de igual forma y subiendo esto al SVN. Ahora bien, si vos queres incorporar esas personalizaciones, lo que debes hacer es:

1 - guarani esquema_pers desactivar
Se debe desactivar el esquema de personalizaciones para luego importar todas las personalizaciones juntas, las tuyas y las nuevas traidas del repositorio.
2 - svn up
Para traer las personalizaciones subidas por el otro desarrollador.
3 - guarani esquema_pers iniciar
Vuelve a clonar la BD original sin metadatos modificados.
4 - guarani esquema_pers conflictos
Comando requerido previo al “importar” para verificar conflictos entre los metadatos actuales y los personalizados.
5 - guarani esquema_pers importar
Para incorporar todos los metadatos modificados de personalziaciones entre desarrolladores mezcladas y resueltas en sistemas de archivos al esquema de personalizaciones del sistema. Este comando preguntara por los errores leves detectados dando la opcion de continuar y fallara si existen comandos fatales.

Un ultimo comentario acerca de los errores fatales registrados.
No deberian existir salvo secuencia de comandos erroneas. Por ejemplo, regenerando la BD original con metadatos personalizados o algo por el estilo. En estos casos, lo que te recomiendo es que desactives y vuelvas a iniciar el esquema de personalizaciones y trates de importar las personalizaciones nuevamente.

Espero se entienda.
Te paso un par de links a la doc. existente para que chequees.
http://repositorio.siu.edu.ar/trac/Portal-G3/wiki/ConsideracionesTecnicas#Personalizaciones
http://toba.siu.edu.ar/trac/toba/wiki/Referencia/Personalizaciones

Saludos,

Gonza

Gonza, en principio gracias por la rápida respuesta.
Ahora voy entendiendo por dónde va el tema de las personalizaciones.
Lo que no me cierra es que se tenga que desechar y volver a clonar un esquema de la BD por cada vez que quiera subir cambios.
Es decir, me parece un poco intrusivo para un entorno de producción. Revisando el código del comando iniciar encuentro:
$this->db->ejecutar(“DROP SCHEMA IF EXISTS $schema_t CASCADE;”);
Esto significa que si yo corro un iniciar, va a borrar el schema actual y crear uno nuevo.
Qué pasa si luego el importar falla? El Sistema quedaría roto, sin vuelta atrás por que el esquema fue borrado.
La solución que le vemos es, tal vez, en vez de este DROP cambiar el nombre del schema, y mantenerlo en caso de que algo falle.
Esto hace que en realidad el ciclo de desarrollo y deploy sea más tedioso.
Puede que esto nos pase porque estamos acostumbrados a subir cambios más frecuentemente.
Saludos!

Hoal Pablo.
Si. Lo que vos planteas es verdad.
Es la contra de este esquema planteado por Toba para trabajar con personalizaciones. De todas formas, yo lo que les recomiendo es no portar el esquema de personalizaciones a producción. Sino hacer un branch con los cambios implementados creando una versión propia, en donde se exportan los metadatos personalizados como originales y haces apuntar el servidor de produccion ahi, ademas de compilar los metadatos.
Algo de eso esta en la documentacion que te mande.

Espero te sirva.

Abrazo.

Gonza

Aporto algo mas…una transparencia que hizo Sergio que arroja un poco mas de luz sobre este tema:

Saludos!


svn.pptx.zip (15.2 KB)

Entonces lo que saco en limpio es que para sacar una versión a producción debería exportar mis metadatos con guarani_exportar, luego compilarlos y eso mismo commitearlo en un branch nuevo que luego levanto para deployar en producción. De modo que estos tags o versiones para producción quedarían con las personalizaciones metidas en la carpeta de metadatos del guaraní?
Por otro lado, cada cuanto es normal sacar versiones de Guaraní? Porque, ya lo dije creo, pero estamos acostumbrados a subir cambios bastante seguido y seguir el esquema de SVN que nos mostraron en el taller conllevaría crear varios branches. Esto último me preocupa un poco ya que el guaraní pesa algo así como 280mb.
Saludos!

Vamos cerrando de a poco el circuito de deploy con las personalizaciones.
Lo que tenemos por ahora es desarrollar las personalizaciones en un ambiente de desarrollo, una vez listas se crearía un branch para la nueva versión. Allí se haría un guarani exportar y esto se commitearía para luego ser regnerado en producción.

La duda que me surge ahora es la siguiente: al no llevar el esquema de personalizaciones a producción que pasa con el personalizacion.ini?
Es decir, es necesario tener las personalizaciones iniciadas con el esquema clonado y todo? Por lo que veo el parametro “iniciada” solo lo usa para levantar algunos assets. Por lo tanto, calculo que no es necesario tener el esquema guarani_pers. Solo bastaría tener el iniciada en sí, y que apunte al esquema original. O es recomendable iniciar la personalización de todas formas para que el esquema original quede intacto?

Saludos!

Hola

Retomo este punto.

No debería estar este listado de pasos en

https://repositorio.siu.edu.ar/trac/Portal-G3/wiki/NotasTecnicas/trabajodiariopersonal

Emilio

Estoy de acuerdo, estaría bueno subirlo a la wiki! También estaría bueno subir algún punteo de como encarar el proceso de deploy en producción. Saludos!