[
https://issues.apache.org/jira/browse/SYNAPSE-871?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Hiranya Jayathilaka reassigned SYNAPSE-871:
-------------------------------------------
Assignee: Hiranya Jayathilaka
> 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
> Assignee: Hiranya Jayathilaka
> Attachments: SYNAPSE-871-Patch.txt
>
>
> 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
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]