CMDBuild Forum

actualización a versión 1.0

Hola!

Estamos actualizando la versión 1.0 a la 1.2, pero al ejecutar los patches se genera una excepción de tipo ORMException ORM_SQL_PATCH, y en el cmdbuild.log aparece:
 
INFO  2010-03-15 17:49:06 [jsonrpc ] Calling url /configure/applypatches
ERROR 2010-03-15 17:49:07 [sql     ] Failed to apply patch 1.0.3-05
org.postgresql.util.PSQLException: ERROR: could not create unique index
  Detail: Table contains duplicated values.
 
¿Tienen reportes de problemas de este tipo, o alguna idea de cómo encaminarlo?

Hola Edmundo

El problema que estás teniendo parece provenir de que, en alguna tabla 1:N de la base de datos de uds. tienen algún registro/s que no guardan esa relación (sino que es N:M).

La versión 1.2 cuenta con un control sobre este tipo de incongruencias y, si encuentra datos incorrectos, el parche no puede activar el control.

 

Para resolver el problema tendrías que:

-          ejecutar manualmente el script SQL de PgAdmin que el parche no logra ejecutar (Abajo te copio el script SQL a ejecutar a mano).

-          Como salida del PGAdmin obtendrás el error preciso, con la indicación de cuál es la tabla de relación que contiene datos incorrectos y cuáles son los registros a corregir/eliminar.

-          Corregir manualmente los datos señalados y volver a ejecutar el script SQL hasta que la ejecución termina correctamente.

-          “señalar” a CMDBuild que ese parche “ha sido ya ejecutado”, sino el procedimiento de migración intentaría re-ejecutarla y se produciría un error  (Abajo te copio el script SQL para hacer ésto)

-          Actualizar siguiendo el procedimiento normal para hacer que se apliquen los otros parches de la release.

 

Query SQL a ejecutar para visualizar los errores a corregir luego manualmente:
SELECT system_patch_domainindexes();

Script para "señalar" a CMDBuild el parche como "ya ejecutado":
INSERT INTO "Patch" ("Status","IdClass","Code","Description","User") VALUES ('A','"Patch"'::regclass,'1.0.3-05','Domain cardinality constraints','system')

 

Por otro lado, te comento que el Martes próximo (23/3/10) liberaremos la versión 1.2.1, por lo que seguramente te conviene esperar hasta esa fecha y pasar directamente de la 1.0 a 1.2.1.

 

Saludos,

 

Muchas gracias por tu respuesta!

El error ahora tiene sentido, pero al ejecutar el SELECT system_patch_domainindexes(); me retorna que la función no existe.

¿Me estoy salteando algún paso? Tampoco la encontré en los scripts sql incluidos en el paquete de la 1.2.

 

Gracias

Previously Ines Rubbini wrote:

Hola Edmundo

El problema que estás teniendo parece provenir de que, en alguna tabla 1:N de la base de datos de uds. tienen algún registro/s que no guardan esa relación (sino que es N:M).

La versión 1.2 cuenta con un control sobre este tipo de incongruencias y, si encuentra datos incorrectos, el parche no puede activar el control.

 

Para resolver el problema tendrías que:

-          ejecutar manualmente el script SQL de PgAdmin que el parche no logra ejecutar (Abajo te copio el script SQL a ejecutar a mano).

-          Como salida del PGAdmin obtendrás el error preciso, con la indicación de cuál es la tabla de relación que contiene datos incorrectos y cuáles son los registros a corregir/eliminar.

-          Corregir manualmente los datos señalados y volver a ejecutar el script SQL hasta que la ejecución termina correctamente.

-          “señalar” a CMDBuild que ese parche “ha sido ya ejecutado”, sino el procedimiento de migración intentaría re-ejecutarla y se produciría un error  (Abajo te copio el script SQL para hacer ésto)

-          Actualizar siguiendo el procedimiento normal para hacer que se apliquen los otros parches de la release.

 

Query SQL a ejecutar para visualizar los errores a corregir luego manualmente:
SELECT system_patch_domainindexes();

Script para "señalar" a CMDBuild el parche como "ya ejecutado":
INSERT INTO "Patch" ("Status","IdClass","Code","Description","User") VALUES ('A','"Patch"'::regclass,'1.0.3-05','Domain cardinality constraints','system')

 

Por otro lado, te comento que el Martes próximo (23/3/10) liberaremos la versión 1.2.1, por lo que seguramente te conviene esperar hasta esa fecha y pasar directamente de la 1.0 a 1.2.1.

 

Saludos,

 

 

Tenés razón Edmundo. Disculpas.

El parche del error está guardado en el archivo webapps\regtosc\WEB-INF\patches\1.0.3-05.sql
Como la ejecución dió error, la función "system_patch_domainindexes();" no se creó.

Para ejecutar el SQL que te indiqué antes tenés primero que ejecutar el script 1.0.3-05.sql sin las dos últimas filas (es decir, del inicio hasta la fila 178)

Saludos,

 

Superado el problema de las relaciones incorrectas, ahora salta otra excepción:

DEBUG 2010-04-09 13:30:32 [jsonrpc ] Uncaught exception calling method class org.cmdbuild.servlets.json.Configure.applyPatches
org.cmdbuild.exception.ORMException: ORM_SQL_PATCH
    at org.cmdbuild.exception.ORMException$ORMExceptionType.createException(ORMException.java:53)

No es muy explicativo. Probé ejecutar el system_patch_domainindexes y devuelve errores del tipo:

relation "idx_map_consume01_uniqueright" already exists

Probé borrar los índices de tipo _uniqueright y _uniqueleft de las tablas Map, y volver a ejecutar el patcheo, y la excepción permanece, y vuelve a crear estos índices.

No sé que puede estar pasando... alguna idea?

 

Gracias!!!

 

 

 

Previously Ines Rubbini wrote:

Tenés razón Edmundo. Disculpas.

El parche del error está guardado en el archivo webapps\regtosc\WEB-INF\patches\1.0.3-05.sql
Como la ejecución dió error, la función "system_patch_domainindexes();" no se creó.

Para ejecutar el SQL que te indiqué antes tenés primero que ejecutar el script 1.0.3-05.sql sin las dos últimas filas (es decir, del inicio hasta la fila 178)

Saludos,

 

 

Hola,

Es posible que te hayas salteado el paso que te indicamos en un post anterior? Aquel que pedía:

- “señalar” a CMDBuild que ese parche “ha sido ya ejecutado”, sino el procedimiento de migración intentaría re-ejecutarla y se produciría un error.  

 

Para señalarlo debías usar el siguiente script SQL:

INSERT INTO "Patch" ("Status","IdClass","Code","Description","User") VALUES ('A','"Patch"'::regclass,'1.0.3-05','Domain cardinality constraints','system')

 

Si éste es el caso (podés controlarlo con sólo mirar el contenido de la tabla “Patch”) alcanzaría para resolver el problema actual que ejecutes el SQL.

 

Saludos,

 

 

Hola Ines, no, no es ese el caso. Estoy ejecutando esta migración en testing, y por las dudas repetí la migración según esta secuencia:

- recuperé la base intocada de producción, versión 1.0

- solucioné el problema de los datos inconsistentes con las cardinalidades, de modo que el system_patch_domainindexes() retornó un void

- marqué ese parche como ejecutado según el sql que me enviaste

- ejecuté el proceso de actualización desde la web

El resultado es que se genera un error org.cmdbuild.exception.ORMException: ORM_SQL_PATCH

En la tabla Patch quedan los siguientes registros (Code-description-status):

"1.0.3-05";"Domain cardinality constraints";"A"
"1.0.3-01";"Change Role class type from reserved to sysread";"A"
"1.0.3-02";"System classes for manageEmail extended attribute";"A"
"1.0.3-03";"Fix class deletion (not if domains and delete reference trigger functions)";"A"
"1.0.3-04";"Allow empty attributes deletion";"A"


 

 

 

Previously Ines Rubbini wrote:

Hola,

Es posible que te hayas salteado el paso que te indicamos en un post anterior? Aquel que pedía:

- “señalar” a CMDBuild que ese parche “ha sido ya ejecutado”, sino el procedimiento de migración intentaría re-ejecutarla y se produciría un error.  

 

Para señalarlo debías usar el siguiente script SQL:

INSERT INTO "Patch" ("Status","IdClass","Code","Description","User") VALUES ('A','"Patch"'::regclass,'1.0.3-05','Domain cardinality constraints','system')

 

Si éste es el caso (podés controlarlo con sólo mirar el contenido de la tabla “Patch”) alcanzaría para resolver el problema actual que ejecutes el SQL.

 

Saludos,

 

 

 

No, no me saltee ningun paso. Logré finalmente realizar la actualización ejecutando los scripts sql directamente, con esto basta no?

Todo parece estar funcionando con normalidad.

Saludos!

Previously Ines Rubbini wrote:

Hola,

Es posible que te hayas salteado el paso que te indicamos en un post anterior? Aquel que pedía:

- “señalar” a CMDBuild que ese parche “ha sido ya ejecutado”, sino el procedimiento de migración intentaría re-ejecutarla y se produciría un error.  

 

Para señalarlo debías usar el siguiente script SQL:

INSERT INTO "Patch" ("Status","IdClass","Code","Description","User") VALUES ('A','"Patch"'::regclass,'1.0.3-05','Domain cardinality constraints','system')

 

Si éste es el caso (podés controlarlo con sólo mirar el contenido de la tabla “Patch”) alcanzaría para resolver el problema actual que ejecutes el SQL.

 

Saludos,