It seems like the CompositeTaskRunner always checks the task list from the
beginning to see if isPending is true.  The FailoverTransport is iterated
(and sleeps within the iterate), then is in the pending state again.  So the
FailoverTransport is always executed, and the CompositeTaskRunner never gets
to the second task in the list, which is the CloseTransportsTask, because it
always finds the first task in the list is pending.

I will open an issue for this problem.

    synchronized(&tasks) {
        auto_ptr<Iterator&lt;CompositeTask*> > iter(tasks.iterator());
        while (iter->hasNext()) {
            CompositeTask* task = iter->next();
            if (task->isPending()) {
                task->iterate();

                // Always return true, so that we check again for any of
                // the other tasks that might now be pending.
                return true;
            }
        }



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/CMS-3-6-Socket-Descriptor-Leak-With-Failover-tp4667966p4668055.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to