Entradas

Mostrando las entradas de mayo, 2019

Crónica de una migración con instalación complicada 5 - Mas errores en ejecución

Imagen
Continuación de Crónica de una migración con instalación complicada 4 

En esta última semana hemos estado bastante ocupados en la puesta en producción.

Hemos logrado poner en producción algunos módulos mas, pero también aparecieron algunos problemas nuevos.

GXClasses
GeneXus nos mandó una nueva GxClasses.dll que corrige algunos de los problemas que había planteado en el post anterior, el OLD(&Date) en KB en español y el problema de concurrencia por usar Dictionary en vez de ConcurrentDictionary en dichas GXClasses.
Hace 24 horas que estamos con esa dll en producción y no se ha vuelto a repetir el problema de encolamiento que nos tenía a mal traer.

Bloqueos en web transactions. 
Nos ha pasado en el ambiente de test, que las transacciones se "trancan".
El síntoma que tienen los usuarios es que las pantallas quedan grises y el mouse bloqueado, pero no hay errores de javascript, ni parece estar bloqueado el teclado.
Estamos trabajando para aislar este problema para poder repor…

Crónica de una migración con instalación complicada 4 - Errores en ejecución

Imagen
Continúa de post anterior.

Durante la puesta en producción de la aplicación generada con GeneXus 16 aparecieron algunos errores.

OLD(Fecha) en KB Spanish.  Se está calculando mal el valor OLD en campos fecha en la KB si tiene el lenguaje Spanish.  Por ejemplo, si un atributo fecha tenía el valor 2019-01-02, el OLD de ese atributo queda como 2002-01-19.  Toma el año como dia y el dia como año.  Esta reportado y rumbo a corregirse.  Para lograr zafar de este error, tuvimos que dejar instalado en paralelo la versión anterior en Evo3, para darle una forma de escape a los usuarios que tenían que usar los programas que usaban OLD(). Como dije antes, no es bueno que convivan la version vieja y la nueva en un ambiente de balanceo de carga, pero en este caso no le encontramos otra salida.
Lo habíamos detectado en testeo, pero no pudimos reproducirlo correctamente.


Regla Serial  Si una transaccion, tiene 2 niveles y en el segundo nivel tiene un atributo fórmula SUM() a un tercer nivel, la regla …

Crónica de una migración con instalación complicada III - Error 403 - Unauthorized

Imagen
Continuación de la Primera Parte y Segunda Parte.

Después de la primer instalación fallida, revisamos todas las propiedades de la KB para analizar cuáles eran las que podían estar afectando el comportamiento.



NivelPropiedadValorComentarioVersionWeb User ExperiencePrevious Version CompatibleVersionOn session timeoutIgnoreSe ve influida por la propiedad Javascript debug modeEnvironment /SecurityEncrypt URL ParametersNO(Aunque algunos objetos encriptan sus parámetros)GeneratorJavascript debug modeNOComprime css y js
Además influye en la propiedad On session timeout
Leyendo el wiki y por motivos históricos que no logro comprender totalmente, vemos que la propiedad Javascript debug mode, además de manejar la compresión de css y js y el encriptado de parámetros en las llamadas Ajax (las que hacen los objetos web para los eventos isValid, para las rules, etc) influye también cuando el modelo no es smooth en la propiedad de On session timeout, aunque de una forma que no está bien documentada …

Crónica de una migración con instalación complicada II - Error 440 - Sesion ha caducado.

Imagen
.. Continuación de Crónica de una migración con instalación complicada.

Una vez terminada la conversión de la KB, hicimos un deploy en el ambiente de pruebas y lo probamos durante mas de un mes, y corregimos algunos detalles menores.  Es una instalación bastante compleja, pues necesita instalarse en varios servidores con balanceo de carga, servidores para procesos batch, etc.

Teníamos las version Evolution 3 instalada y una versión GeneXus 16 Upgrade 3 funcionalmente compatible, a menos de algunas dll de UC que tuvimos que actualizar para evitar algunos errores de ejecución.

Este esquema, nos permitió hacer comparaciones de funcionamiento de ambas versiones. Además del testeo manual hicimos test automatizados con GXTest.
Ejecutar los test automáticos de GXTest 3.0 con la KB en GeneXus 16, dio mas trabajo del deseado.  Tuvimos algunas idas y vueltas con la gente de Abstracta, que logró solucionar los inconvenientes técnicos y corrieron todas las pruebas automatizadas sobre la nueva ver…

Crónica de una migración con instalación complicada.

Imagen
Desde hace unos meses, estamos en el proceso de una migración de una KB grande (más de 10.000 objetos y más de 1000 tablas) de GeneXus Evolution 3 a Genexus 16 Upgrade 3.

La migración en sí, salio todo muy bien. Hago un respaso de algunos puntos destacados de la misma.

Conversión de Evo3 a GX16. 
La conversión, generación, compilación de la KB salió todo sin problemas. Aparecieron varios Warnings nuevos por causa de nuevas validaciones que se agregaron en GX16. Pudimos eliminar todos los warnings.
Es la primera vez que pudimos terminar un Build all de esta KB sin Warnings, pues antes siempre habia algunos que no se podian evitar, por no estar codificados.
Algunos warnings que Genexus hace, los ignoramos, pues nos nos interesan y los manejamos de otra forma (por ejemplo, el manejo de indices de las tablas).

Comparación de Navegaciones. 
La comparación de navegaciones que hice con KBDoctor, de la versión vieja y la nueva, no dio diferencias importantes.  Las diferencias eran fundamentalm…

GeneXus Wish List - v2019

Imagen
Voy a escribir una lista explicada de las opciones que me gustaría contar en GeneXus 16.  Hay una versión en el Wiki de la comunidad GeneXus, donde pueden agregar deseos.

Special Build Los objetos hoy tienen muchas opciones relacionadas con el build. Para no sobrecargar el menú básico, sería mejor tener  una opción  Special Build con un submenú  con las siguientes opciones (agrupa las opciones relacionadas con el build, no usadas muy frecuentemente)  Rebuild (como la opción Rebuild de hoy) Build this & Compile Mains (solo los que incluye a este objeto) Hoy pasa muy a menudo que se hace un build with this only, y "no me compila el objeto".  El problema es que al hacer el build de dicho objeto, se genera el archivo fuente, y luego se compila el startup object, y si no contiene al archivo no se toma en cuenta dicho objeto. 
Seria bueno tener una opción que fuera "Regenerate this objects and Compile all main that contains this object" (tal vez es un poco largo para…