Hi, I have a application deployed under these configurations: -OS=Gentoo Linux Kernel 2.4.25 -JVM=Blackdown1.4.1 -JBoss-3.2.3 -RDBMS=Firebird-1.5.0 (Classic Server) -JDBC=FirebirdSQL-1.5.0-RC2 (deployed as a JCA adapter. Pooling is set to discard idle connections after 15 minutes)
Sometimes I would get this kind of exception while closing a Jdbc connection: anonymous wrote : | 2004-05-05 10:31:15,966 WARN [org.jboss.tm.TransactionImpl] XAException: tx=TransactionI | mpl:XidImpl [FormatId=257, GlobalId=appserver01//11103, BranchQual=] errorCode=XAER_NOTA | org.firebirdsql.jca.FBXAException: Unrecognized transaction at org.firebirdsql.jca.FBManagedConnection.internalEnd(FBManagedConnection.java:437) | at org.firebirdsql.jca.FBManagedConnection.end(FBManagedConnection.java:409) | at org.jboss.tm.TransactionImpl.endResource(TransactionImpl.java:1205) | at org.jboss.tm.TransactionImpl.delistResource(TransactionImpl.java:543) | at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventList | ener.delist(TxConnectionManager.java:505) | at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventList | ener.connectionClosed(TxConnectionManager.java:554) | at org.firebirdsql.jca.FBManagedConnection$2.notify(FBManagedConnection.java:1176 | ) | at org.firebirdsql.jca.FBManagedConnection.notify(FBManagedConnection.java:1157) | at org.firebirdsql.jca.FBManagedConnection.close(FBManagedConnection.java:846) | at org.firebirdsql.jdbc.AbstractConnection.close(AbstractConnection.java:437) | It's kind of difficult to reproduce this problem. But everytime this exception occurs, 1 additional physical connection doesn't get discarded, even after overnight (when no one is even using the application). I can see this by running pstree on the linux console. (One managedConnection is associated with one process). Then I decide to download the jboss-3.2.3 source code, open TxConnectionManager.java and observe line 554 where the connectionClosed method calls delist() | if (isManagedConnectionFree()) | { | //log.trace("called unregisterAssociation, delisting"); | //no more handles | delist(); | //log.trace("called unregisterAssociation, returning"); | returnManagedConnection(this, false); | } | //log.trace("called unregisterAssociation"); | } | catch (ResourceException re) | { | log.error("ResourceException while closing connection handle!", re); | } // end of try-catch | Now my question: If an exception occured (like the one i have) while delist() is called, then the returnManagedConnection(this,false) won't be called. Does this mean that the managedConnection will never be returned to the pool thus causing some sort of a leak ? If so would it be safe to do this: | if (isManagedConnectionFree()) | { | //log.trace("called unregisterAssociation, delisting"); | //no more handles | try{ | delist(); | }catch(ResourceException re){ | //log.trace("called unregisterAssociation, return and KILL"); | returnManagedConnection(this, true); | //rethrow | throw re; | } | //log.trace("called unregisterAssociation, return "); | returnManagedConnection(this,false); | } | //log.trace("called unregisterAssociation"); | } | catch (ResourceException re) | { | log.error("ResourceException while closing connection handle!", re); | } // end of try-catch | | Thanks for any comments and answers. View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3841309#3841309 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3841309 ------------------------------------------------------- This SF.Net email sponsored by Black Hat Briefings & Training. Attend Black Hat Briefings & Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-user