Anjana Fernando created SYNAPSE-871:
---------------------------------------

             Summary: Connection Leaks When Using DBReport Mediator with 
XADataSources
                 Key: SYNAPSE-871
                 URL: https://issues.apache.org/jira/browse/SYNAPSE-871
             Project: Synapse
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.1
         Environment: Tomcat 7, Atomikos 3.7.0, Synapse 2.1.0, MySQL 5.1.0.
            Reporter: Anjana Fernando


When using Synapse inside Tomcat with the Atomikos transaction manager, when 
DBReport is participating in a distributed transaction, the connections it is 
created are not getting returned back to the connection pool, and the 
connections eventually runs out. By looking at the code, it seems to be that, 
the mediator gets a new connection from the data source, and it also looks up 
the connection for a second time using a Statement object it created, it seems, 
this getting the connection again from the Statement is faulty in some cases, 
where when used with MySQL, it ends up with connection leaks. So I'm proposing 
to just create the connection at one time and pass the connection to others 
methods that are needed, i.e. AbstractDBMediator#getPreparedStatement.

* The entry in Tomcat's context.xml for defining the data source is as follows:
=======================================================
    <Resource
name="jdbc/db1"
auth="Container"
type="com.atomikos.jdbc.AtomikosDataSourceBean"
factory="com.atomikos.tomcat.BeanFactory"
uniqueResourceName="java:comp/env/jdbc/db1"
xaDataSourceClassName="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"
xaProperties.databaseName="SEQUENCE_DB"
xaProperties.serverName="localhost"
xaProperties.port="3306"
xaProperties.user="root"
xaProperties.password="123"
xaProperties.url="jdbc:mysql://localhost:3306/SEQUENCE_DB?pinGlobalTxToPhysicalConnection=true"
/>
=======================================================

* The database used above contains a single table called "SEQUENCE" which only 
has a auto increment integer as the primary key. 

* Atomikos has been integrated with Tomcat as it is mentioned here: 
http://www.atomikos.com/Documentation/Tomcat7Integration35

* The DBReport mediator definition:-
=======================================================
<dbreport useTransaction="true">
                     <connection>
                        <pool>
                           <password>123</password>
                           <user>root</user>
                           <dsName>java:comp/env/jdbc/db1</dsName>
                           <url>jdbc:mysql://localhost:3306/SEQUENCE_DB</url>
                           
<icClass>org.apache.naming.java.javaURLContextFactory</icClass>
                        </pool>
                     </connection>
                     <statement>
                        <sql>INSERT INTO SEQUENCE VALUES ()</sql>
                     </statement>
                  </dbreport>
=======================================================

* Execute the above DBReport mediator to reproduce the connection leak 
scenario. 




--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to