[esb-issues] [JBoss JIRA] Updated: (JBESB-1909) JmsConnectionPool overflows sometimes with JBossMQ

Pavel Kadlec (JIRA) jira-events at lists.jboss.org
Wed Aug 6 06:47:16 EDT 2008


     [ https://jira.jboss.org/jira/browse/JBESB-1909?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Pavel Kadlec updated JBESB-1909:
--------------------------------

    Attachment: test_connection_pool.zip


Simply copy the folder to the quickstarts directory. Then ant deploy, ant sendesb. The message should be sent 30 times. But the message is send only 20 times because 20 is the size of the pool. The pool is not correctly cleaned up.

> JmsConnectionPool overflows sometimes with JBossMQ
> --------------------------------------------------
>
>                 Key: JBESB-1909
>                 URL: https://jira.jboss.org/jira/browse/JBESB-1909
>             Project: JBoss ESB
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>          Components: Rosetta
>    Affects Versions: 4.3
>         Environment: JBossAS-4.2.2.GA with JBossMQ
>            Reporter: Pavel Kadlec
>         Attachments: test_connection_pool.zip
>
>
> The core reason is that JBossMQ's XAConnectionFactory.createSession always creates XASession (is always transacted and with SESSION_TRANSACTED acknowledgement mode), but JBossMessaging's XAConnectionFactory.createSession creates non-xa Session (transacted or non-transacted and with customized acknowledgement mode). The JmsConnectionPool is intended to be used with JBossMessaging behaviour only. 
> The overflow occurs when caller thread associated with *NO* transaction sends esb message (by jms courier) using *XAConnectionFactory* to the esb service. 
> In this case the connection pool uses XAConnectionFactory.createSession for creating the session. The pool has hashmaps which key is acknowledgement mode. JBossMQ's XAConnectionFactory.createSession always creates Session with SESSION_TRANSACTED acknowledgement mode. But the pool registers the session under customized acknowledgement mode into the maps (eg. AUTO_ACKNOWLEDGE). When session clean is called, the JmsConnectionPool tries to remove the session from the pool, but uses Session.getAcknowledgement to find out what type of session it is. This returns SESSION_TRANSACTED mode, but session was registered under eg. AUTO_ACKNOWLEDGE mode. The pool is not cleaned up correctly and overflows. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the esb-issues mailing list