Session.CreateSession creates a thread that never gets disposed.
----------------------------------------------------------------

                 Key: AMQNET-301
                 URL: https://issues.apache.org/jira/browse/AMQNET-301
             Project: ActiveMQ .Net
          Issue Type: Bug
          Components: NMS
    Affects Versions: 1.4.1, 1.4.0, 1.3.0, 1.2.0
         Environment: Tested on Windows 7 and Windows Server 2008
            Reporter: Kelly Elias
            Assignee: Jim Gomes
            Priority: Critical


The Factory.CreateSession function creates a thread that never gets disposed.


If you run the code in visual studio and step through each line you will notice 
that on the first iteration of the loop two threads are created on the 
factory.CreateConnection line. Only one is cleaned up. Then each iteration 
after one thread is created on factory.CreateSession and is cleaned up 
correctly, but a second on is created on connection.CreateSession and is not 
cleaned up. Every iteration will then make a thread on connection.CreateSession 
that does not get cleaned up.

Interesting, this occurs with every version I've tested except the old 1.1 
version. That version cleans up correctly.


CODE TO REPRODUCE THE 
ISSUE-----------------------------------------------------------------


using System;
using System.Threading;
using Apache.NMS;
using Apache.NMS.ActiveMQ;
using Apache.NMS.ActiveMQ.Commands;

namespace ThreadTest
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine("sending");

                //"tcp://localhost:61616/"
                IConnectionFactory factory = new 
ConnectionFactory("tcp://localhost:61616/");
                using (IConnection connection = factory.CreateConnection())
                {
                    //Create the Session
                    using (ISession session = connection.CreateSession())
                    {
                        //Create the Producer for the topic/queue
                        IMessageProducer prod = session.CreateProducer(new 
ActiveMQTopic("KELLYTEST"));

                        ITextMessage msg = prod.CreateTextMessage();
                        msg.Text = "test";

                        prod.Send(msg, MsgDeliveryMode.NonPersistent, 
MsgPriority.Normal, TimeSpan.MinValue);
                    }
                }

                Thread.Sleep(5000);
            }
        }
    }
}

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

Reply via email to