Forcibly releasing inactive connection “weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection@d72”

Cuando se de este error en Weblogic, puede deberse a dos causas:

  • Se ha dejado una conexión abierta o no se ha cerrado correctamente (connection leak). En este caso, es porque  al realizar la persitencia no se ha hecho un commit o un cierre de la conexión. Debemos mirar la excepción completa generada, donde más o menos por la mitad, veremos la clase que hemos usado y la línea causante del problema.
  • El tiempo de liberación de una conexión inactiva es demasiado bajo. Esto sucede si mantenemos una conexión abierta por más tiempo del configurado en la administración de Weblogic. Por ejemplo, una generación de un informe pesado mediante una conexión que dure más de 10 segundos y se tenga configurado liberar una conexión tras 10 segundos sin uso. Esta configuración está desactiva por defecto, por lo que la tendríamos que haber cambiado nosotros a otro valor, como 10 segundos en el caso del ejemplo.

La mejor explicación y resumen la he encontrado en http://impradeep.com/forcibly-releasing-inactive-connection-weblogic-jdbc-wrapper-poolconnection_oracle_jdbc_driver_t4cconnectiond72/ y la pego a continuación por si algunas vez la borra:

ERROR :

<Aug 15, 2014 10:26:04 AM GMT> <Warning> <JDBC> <BEA-001153> <Forcibly releasing inactive connection “weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection@d72” back into the connection pool “data_source_name”, currently reserved by: java.lang.Exception
at weblogic.jdbc.common.internal.ConnectionEnv.setup(ConnectionEnv.java:325)
at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:363)
at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:329)
at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:417)
at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.java:324)
at weblogic.jdbc.common.internal.MultiPool.searchLoadBalance(MultiPool.java:312)
at weblogic.jdbc.common.internal.MultiPool.findPool(MultiPool.java:180)
at weblogic.jdbc.common.internal.ConnectionPoolManager.reserve(ConnectionPoolManager.java:89)
at weblogic.jdbc.common.internal.RmiDataSource.getPoolConnection(RmiDataSource.java:350)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:369)
at oracle.jbo.server.DBTransactionImpl.establishNewConnection(DBTransactionImpl.java:990)
[shortened stack trace for brevity]
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
.>

ISSUE DUE TO :

The issue occurs when JDBC connections are not closed and returned to the connection pool as they should be. Eventually, the JDBC connections will time out and be closed forcibly. When that occurs it results above error.

SOLUTION TO RESOLVE THE WARNING :

If you are only seeing this Warning at startup, it is quite likely the associated application which uses the data-source was not fully deployed before the connection timeout occurred.

If the warnings continue to appear after all your SOA composites are deployed and active, you can consider increasing the Inactive Connection Timeout value. But you should review the source code related to the composite apps which use the connection pool, and make sure the connections are properly closed.

It is recommended that your application code explicitly closes all JDBC objects.

When the code does not close the connection, it will wait for the “Inactive connection timeout” to trigger closure of these objects. That will cause the warning message in your log and more importantly, it may cause performance problems because there are fewer connections available to do the work your application needs.

Disabling the Inactive Connection Timeout is therefore NOT A SUBSTITUTE for resolving the leaked connections. Best way would be that your application properly closes all JDBC objects.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s