Details
Description
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())
}
Thread.Sleep(5000);
}
}
}
}