[resolvido]Transaction was rolled back in a different thread!

3 respostas
java
R

Galera, estou obtendo esse erro:

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

tentando executar 140 mil inserts (um por loop) dentro de um loop while. Esse erro dispara por volta do insert numero 85 mil. Parece que tem haver com o timeout da transação. Esse método deve levar uns 8 minutos pra concluir toda operação e retornar. Não consegui resolver esse problema…

Segue o código

//CDI Managed Bean
@Transactional    
public void configBase() {
	
	ConfigBase.inserirRegistros();    	    	
	System.out.println("OK");
}

classe ConfigBase

@TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW)
@TransactionTimeout(value = 20, unit = TimeUnit.MINUTES)
public static void inserirRegistros() throws Exception {
	
	Scanner reader = new Scanner(arquivo);
	 		
	while(reader.hasNextLine()) {
		//inserindo registros na base
		//por do loop No 85 mil dispara 
		      //javax.persistence.PersistenceException: org.hibernate.HibernateException: Transaction was rolled back in a different thread!
	}
}

Ambiente
WildFly 12
JTA Datasource
CDI 2.0
JPA 2.1
JSF 2.2

obrigado

3 Respostas

M

Você esta salvando um de cada vez?
Esta abrindo 140 mil conexoes?
:scream:

R

É que só vou usar esse método uma vez, para configurar a base, por isso não liguei muito pra consumo de recursos

resolvi, ví que no painel do WF dá pra aumentar o timeout default da transação

só não sei porque a anotação
@TransactionTimeout(value = 20, unit = TimeUnit.MINUTES)

não teve efeito :thinking:

publiquei a resolução aqui
http://finalexception.blogspot.com/2018/06/wildfly-12-transaction-was-rolled-back.html

M

Ah blz :+1:

Seguindo o post da caelum seria rapidinho para persistir.

Eu utilizo GlassFish, mas to curioso sobre outros servidores, vou dar uma olhada depois

Criado 20 de junho de 2018
Ultima resposta 20 de jun. de 2018
Respostas 3
Participantes 2