jboss timeout

Por qué la advertencia "TransactionReaper:: check timeout for TX" en JBoss server.log



(2)


Estoy usando Hibernate 3.6.0 con la versión JBoss 6.0-Final y mi base de datos es MS-SQL Server 2008 . Tengo que buscar datos de empleados del servidor LDAP e insertarlos en la base de datos: el recuento de entradas LDAP es de 180,000 o más. Estoy usando una transacción administrada de beans porque al usar CMT mi transacción nunca se compromete (debido a un alto volumen de inserción).

La lógica es: en un ciclo while sigo buscando y creando entradas en la base de datos usando JPA (Hibernate). Por lo tanto, tengo una larga serie de actividades de creación de búsqueda como parte de una api EJB apátrida. Estoy invocando a entityManager.flush () / clear () y confirmando la transacción después de procesar cada 20 registros.

Estoy siguiendo el mensaje WARN en JBoss Serevr.log luego de insertar 40,000 registros. ¿No estoy seguro si es realmente una advertencia o error?
Aunque recibo este error, el servidor aún se ejecuta y continúa con la inserción de nuevos registros en DB.

¿Alguien puede sugerirme si estoy haciendo algo mal? ¿O qué causa este error?

¿Hay alguna forma de aumentar el tiempo de espera de EJB ?

16:52:49,690 WARN [com.arjuna.ats.arjuna] ARJUNA-12117 TransactionReaper::check timeout for TX 0:ffff105966b8:126a:4db9fc0a:a4 in state RUN 16:52:49,691 WARN [com.arjuna.ats.arjuna] ARJUNA-12121 TransactionReaper::doCancellations worker Thread[Transaction Reaper Worker 0,5,jboss] successfully canceled TX 0:ffff105966b8:126a:4db9fc0a:a4

Cualquier ayuda será muy apreciada.


Según su propio comentario (pero para dar un ejemplo real), si necesita aumentar el tiempo de espera de una transacción, puede usar una anotación sobre el método de cualquier clase que defina su límite transaccional (generalmente una implmentación de "fachada").

Por ejemplo, usando org.springframework.transaction.annotation.Transactional

@Transactional(timeout = 600) // value is in seconds

Parece que necesita esto para una tarea de conversión de datos única en lugar de código de producción diaria, por lo que aumentar el tiempo de espera es probablemente justificable. De lo contrario, valdría la pena considerar agrupar el procesamiento en lotes más pequeños y hacer de cada uno una transacción única que se espera que se complete dentro del tiempo de espera predeterminado para su sistema.


Este sitio web resume un par de formas más para cambiar el tiempo de espera de transacción de jboss. Por ejemplo, puede especificarlo en su archivo de configuración standalone.xml como un subsistema como este:

<subsystem xmlns="urn:jboss:domain:transactions:3.0"> <core-environment> <process-id><uuid/></process-id> </core-environment> <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/> <coordinator-environment default-timeout="<your timeout value here>"/> </subsystem>

Alternativa, ajuste el tiempo de espera de la transacción a través de la plataforma de administración de jboss en subsistemas-> transacción-> Tiempo de espera

Tal vez eso ayude.