Pruebas transacción en eventos
Se realizaron las pruebas correspondientes en ambiente local apuntando a la BDC de PRE. intentando replicar un error que ejecute un rollback en un caso de uso, esperando que el flujo ideal de integración BDC-> CDE se cumpla.
BDC | CDE | |
---|---|---|
Se ejecuta el caso de uso en BDC y se dispersa en CDE correctamente. | ||
Se ejecuta correctamente en BDC, y falla CDE, pero al tener el registro en la tabla de eventos entra en flujo de reintento | ||
Falla en BDC y no se dispersa al CDE |
La prueba realizada consisten en:
1.- Ejecutar un servicio SIF v3 y enviar una excepción después de la inserción de en la tabla events.
2.- La transacción no se completa y se hace rollback.
Tras varias pruebas se concluye que el trigger se ejecuta y continua con el flujo publicando el evento al CDE aun cuando se hace rollback. Provocando una inconsistencia entre BDC → CDE.
BDC | CDE | |
---|---|---|
Falla en BDC y se dispersa al CDE |
Solución.
Para evitar el resultado RED-GREEN:
Se elimina el trigger en la tabla events.
Se desarrolló un middleware que se ejecuta al terminar el request y antes de terminar el proceso de envio:
- Recupera los eventos persistidos durante el request.
- Para cada uno de los eventos ejecuta el procedimiento almacenado correspondiente, y se continua con el flujo normal:
- SP →Lambda ->CDE