Wednesday, June 20, 2018

WildFly 12: Transaction was rolled back in a different thread!

Durante uma tentativa de configurar o banco de dados com a base de CEP dos Correios, obtive o seguinte erro:

 org.hibernate.HibernateException: Transaction was rolled back in a different thread!

Insistindo novamente, percebi que o erro ocorria sempre durante a inserção dos registros da tabela de logradouros, a qual possui mais de 1 milhão de registros.

Quando as transações são gerenciadas pelo container de aplicações (Container Managed Transactions), no meu caso o WildFly 12, elas têm um timeout defualt de 5 minutos. Ou seja, se você estiver realizando uma operação muito demorada, esse tempo pode se esgotar e o container vai lançar a excessão acima e dar um rollback na transação.

Para aumentar o timeout da transação, abra o console de administração do WildFly. A partir da aba Configurations, clique em Subsystems e depois Transactions. O Transaction Manager exibe uma série de opções de configuração para as transações, uma delas é o default timeout (em segundos). Clique em editar e coloque o valor que se adequa a sua demanda. Por exemplo, 900 segundos dividos por 60 equivalerão a transações com timeout de 15 minutos, ao invés de 5 (300 segundos).

Configuração de Transações no console de administração do WildFly 12

       

No comments:

Post a Comment