Entradas

Mostrando las entradas de marzo, 2012

Tip para evitar caidas de Genexus X Ev1.

Imagen
En los últimos días he estado trabajando bastante en una migración de una KB grande a la version GeneXus X, Evolution 1, Upgrade 7 (en otro post, contaré la experiencia y lo aprendido).

En general la migración funciona va muy bien, con algunos problemas que hemos ido solucionado, pero hay un error que todos los que han participado en la migración (unas 10 personas) se han quejado es que GeneXus da errores de falta de memoria. Esto se da por leaks y el error da en diferentes lugares y luego de varios minutos que se esta trabajando. 
Después que da el error, la unica solución que conozco es cerrar GeneXus y volver a ejecutarlo. El problema es que esto demora bastante.
Una solución bastante berreta, para evitar tener que salir y volver a entrar es ir al Extension Manager, habilitar o deshabilitar alguna extensión que no use y aplicar los cambios.  Con eso, se hace un restart mas rápido y se puede evitar problemas, sobre todo que las caidas no corten procesos que demoran y nos haga perde…

Deshabilitar todos los triggers de una base de datos - SQL Server.

El comando para deshabilitar todos los triggers de una base de datos es..


Print 'Disabling all Trigger'
exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'

o tambien


CREATE Procedure [dbo].[DisableAllTriggers]


AS
Declare @string varchar(8000)
Declare @tableName nvarchar(500)
Declare cur cursor
for select name as tbname from sysobjects where id in(select parent_obj from sysobjects where xtype='tr')
open cur
fetch next from cur into @tableName
while @@fetch_status = 0
begin
set @string ='Alter table '+ @tableName + ' Disable trigger all'
exec (@string)
Fetch next from cur into @tableName
end
close cur
deallocate cur


Exec [dbo].[DisableAllTriggers]


Este es un POST para no perder tiempo buscando la próxima vez que tenga que hacerlo.

Para GeneXus X Evolution 3

Imagen
Algunas cosillas que me gustarían tener en la Evo 3 de GeneXus.

Módulos
Poder modularizar la KB, de forma de poder achicar las dependencias que existen entre objetos, para achicar los tiempos de generacion y especificacion. Tambien va a servir para ayudar al deploy KB Grandes.Tambien facilitara la integracion entre diferentes modulos, lo cual va a redundar en mayor productividad.
Pruebas de regresion integradas en la KB. Tener dentro de la KB pruebas que permitan asegurar que los objetos no cambiaron su comportamiento.
Esto puede incluir navegacion, sentencias SQL, performance, etc.
Generador de datos de prueba. Dada una transaccion, generar automaticamente datos de pruebas de la misma. Se puede elegir la cantidad de datos a generar y respeta la integridad referencial.
Registro de Ejecución.  Las aplicaciones generadas, pueden ejecutarse en modo "Grabacion", lo cual permite almacenar un script, para luego volver a correrlo y ver las diferencias entre las corridas.
Comparado…

Haciendo limpieza en la KB.

Imagen
A medida que pasa el tiempo, sobre todo si varias personas desarrollan con GeneXus sobre una misma base de conocimiento (KB), se generan algunos objetos que se dejan de usar.

Para esto, es bueno tener pronto una metodología de limpieza de la KB y hacerlo en forma periódica.






Los pasos que yo realizo para hacer una limpieza rápida.

1) Hacer un buen backup de la KB y tambien un Export de todos los objetos de la KB, para tener a mano, en caso que se nos vaya la mano en el borrado.

2) Correr el VariablesCleaner de Dvelop. Esto borra todas las variables no usadas en los objetos.

3) En la ventana View / Work With Attributes, elegirlos todos y intentar borrarlos. Solo va a borrar los no referenciados.

4) En la ventana Work With Objects, elegir todos los Dominios e intentar borrarlos todos.

5) Luego se puede ir a View / Knowledge Base Information / Not Referenced Objects y borrar los objetos que sobran. A las transacciones, no se las puede borrar tan facilmente, aunque no esten referenciadas,…