activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Aaron Riekenberg (JIRA)" <j...@apache.org>
Subject [jira] Updated: (AMQ-2677) org.apache.activemq.pool.ConnectionPool should not set "started" flag if start() throws an exception
Date Sat, 27 Mar 2010 16:01:08 GMT

     [ https://issues.apache.org/activemq/browse/AMQ-2677?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Aaron Riekenberg updated AMQ-2677:
----------------------------------

    Attachment: connection_pool_start.patch

Attaching patch.

> org.apache.activemq.pool.ConnectionPool should not set "started" flag if start() throws
an exception
> ----------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-2677
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2677
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.3.1
>         Environment: Ubuntu Linux 9.10, Sun JDK 1.6.0_15
>            Reporter: Aaron Riekenberg
>         Attachments: connection_pool_start.patch, jmstest.zip
>
>
> If org.apache.activemq.pool.ConnectionPool.start throws a JMSException, the "started"
flag in ConnectionPool should not be set to true.  If start() throws an exception, the underlying
ActiveMQConnection object will not be started.  Since started=true, any subsequent calls to
ConnectionPool.start will do nothing, and a non-started connection may be used by the pool.
> I ran into this problem when using Camel to consume messages - see the attached test
program for an example.  This test program does the following:
> 1. Starts a bean consuming from queue test.queue using Camel.  The URL used by Camel
to connect to ActiveMQ is:
> failover:(tcp://127.0.0.1:61616)?timeout=1000&initialReconnectDelay=1000&maxReconnectDelay=1000&useExponentialBackOff=false
> The test program uses the default behavior of Camel's ActiveMQComponent which creates
a PooledConnectionFactory.
> 2. Waits 10 seconds, then starts an ActiveMQ broker on port 61616.  During this wait
time, Camel's connection to the broker fails every second and it is continually retrying.
> 3. Sends 10 messages to the queue "test.queue".
> The call to ConnectionPool.start by camel throws an exception after blocking for 1 second
since timeout=1000 is set in the URL.  However the "started" flag is set to true, so subsequent
calls to ConnectionPool.start by Camel on connection retries do not restart the ActiveMQConnection.
> So, after step 3 in the test the Camel consumer appears to be connected to the broker,
but it does not receive any messages and I get the following warning:
> 2010-03-27 09:47:02,994 [ActiveMQ Transport: tcp:///127.0.0.1:61616] WARN  org.apache.activemq.ActiveMQSessionExecutor
- Received a message on a connection which is not yet started. Have you forgotten to call
Connection.start()?
> I am attaching a patch to org.apache.activemq.pool.ConnectionPool that does not set started=true
if start throws an exception.  This fixes my test program - now each connection retry by camel
actually attempts to start the ActiveMQConnection.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message