My change has been put on my fork and a pull request was sent in. I wasn't sure how best to unit test for this (and didn't have the time yesterday to think it through) ... but hopefully that will help anyone interested. (Jungers42)<br clear="all">
<span style="border-collapse:collapse"><font><div style="font-weight:bold;color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13px"><span style="border-collapse:collapse;color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13px"><font face="verdana, sans-serif" size="1"><b><br>
</b></font></span></div><div style="font-weight:bold;color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13px"><span style="border-collapse:collapse;color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13px"><font face="verdana, sans-serif" size="1"><b><br>
</b></font></span></div><div style="font-weight:bold;color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13px"><span style="border-collapse:collapse;color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13px"><font face="verdana, sans-serif" size="1"><b><br>
</b></font></span></div><div style="font-weight:bold;color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13px"><span style="border-collapse:collapse;color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13px"><font face="verdana, sans-serif" size="1"><b>Christian.Jungers@CM3.com - <span style="font-family:arial,sans-serif;font-size:13px;font-weight:normal"><b><span style="font-size:7pt;color:rgb(0,51,102)">Chief Technology Officer</span></b></span></b></font></span><b><span style="font-family:arial,sans-serif;font-size:13px;font-weight:normal"><b><span style="font-size:7pt;color:rgb(0,51,102)"><span style="color:rgb(136,136,136);font-family:Verdana,sans-serif;font-weight:normal"><span style="color:rgb(136,136,136);font-family:arial,sans-serif;font-size:13px;font-weight:bold"><b><span style="font-family:arial,sans-serif;font-size:13px;font-weight:normal"><b><span style="font-size:7pt;color:rgb(0,51,102)"><span style="color:rgb(136,136,136);font-family:Verdana,sans-serif;font-weight:normal"> </span></span></b></span></b><span style="font-family:verdana,sans-serif;font-size:x-small"><b>- </b></span></span></span></span></b></span><span style="font-family:verdana,sans-serif;font-size:x-small;font-weight:normal">Tel  <a style="color:rgb(0,101,204)">877.263.1669</a> x705 - </span><span style="font-family:verdana,sans-serif;font-size:x-small;font-weight:normal">Fax <a style="color:rgb(0,101,204)">877.263.1669</a></span></b></div>
</font></span><br>
<br><br><div class="gmail_quote">On Tue, Sep 11, 2012 at 2:27 AM, Ruaan Viljoen <span dir="ltr"><<a href="mailto:ruaanv@estuarys.co.za" target="_blank">ruaanv@estuarys.co.za</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div lang="EN-ZA" link="blue" vlink="purple"><div><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I would also be very interested in this, as I think there have been a lot of community workarounds to get that initiator thread to shutdown properly. Rather than going around and doing another unpublished workaround, we<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">could work towards a long overdue fix at the core of the problem?<u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">-Ruaan<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p><p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> <a href="mailto:quickfixn-bounces@lists.quickfixn.com" target="_blank">quickfixn-bounces@lists.quickfixn.com</a> [mailto:<a href="mailto:quickfixn-bounces@lists.quickfixn.com" target="_blank">quickfixn-bounces@lists.quickfixn.com</a>] <b>On Behalf Of </b>Grant Birchmeier<br>
<b>Sent:</b> 10 September 2012 06:08 PM</span></p><div><div class="h5"><br><b>To:</b> Mailing list for QuickFIX/n<br><b>Subject:</b> Re: {{Quickfixn}} Force close quickfixn<u></u><u></u></div></div><p></p><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal"><span style>I think it should probably be built into the stop method as well.</span><u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div>
<div><p class="MsoNormal"><span style>I would love to see the code for your Dispose method.</span><u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">
On Mon, Sep 10, 2012 at 11:02 AM, <<a href="mailto:Christian.Jungers@sungard.com" target="_blank">Christian.Jungers@sungard.com</a>> wrote:<u></u><u></u></p><div><div><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I haven’t gone digging into the history of conversations about Stop(…) … but I do have something to add.</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Recently, for our FIX service based on QuickFixN, we were working on the ability to remotely control the service to spin up and spin down on-demand. What we found was that it was simple enough to do, but we could not get a new initiator from QuickFixN when it spun back up. The reason was because the old thread was holding onto handles to files that weren’t being properly disposed of.</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">So I push IDisposable around a bit in the code. Rather than build that into the Stop method (which I feel is the natural place for it / intent of it), I built an additional method called Dispose which does the work. That way you can choose if you want to actually properly dispose of things or not. I’m happy to share the changes and then perhaps others with more history on the project could consider how best to make sure the system properly disposes of handles and threads and such?</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">                                - Christian</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><span lang="EN-US"><u></u><u></u></span></p>
<div><div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm"><p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> <a href="mailto:quickfixn-bounces@lists.quickfixn.com" target="_blank">quickfixn-bounces@lists.quickfixn.com</a> [mailto:<a href="mailto:quickfixn-bounces@lists.quickfixn.com" target="_blank">quickfixn-bounces@lists.quickfixn.com</a>] <b>On Behalf Of </b>Ruaan Viljoen<br>
<b>Sent:</b> Monday, September 10, 2012 10:52 AM</span><span lang="EN-US"><u></u><u></u></span></p><div><div><p class="MsoNormal"><span lang="EN-US"><br><b>To:</b> Mailing list for QuickFIX/n<br><b>Subject:</b> Re: {{Quickfixn}} Force close quickfixn<u></u><u></u></span></p>
</div></div></div></div><div><div><p class="MsoNormal"><span lang="EN-US"> <u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I have been poking around in the Quickfix source to try and see what the issue is with the initiator.Stop(true) not actually logging out or ending the thread.</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I found something that I don’t quite understand:</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">In AbstractInitiator.cs</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">public void Stop(bool force)</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">{</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">…</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal" style="text-indent:36.0pt"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">isStopped_ = true;</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                OnStop();</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                thread_.Join(5000);</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                thread_ = null;</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif""> </span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                foreach (Session session in enabledSessions)</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                                session.Logon();</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">}</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">What is this ‘session.Logon();’ doing in here?</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Also regarding the issue that sessions are not logging out on Stop(true):</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                public void Logout()</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                {</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                                                Logout("");</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                }</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif""> </span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                public void Logout(string reason)</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                {</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                                                state_.IsEnabled = false;</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                                                state_.LogoutReason = reason;</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Calibri","sans-serif"">                }</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I don’t quite see where the actual logout is being sent. Could this be one of the issues. I realize this might be asking you guys to get more involved that you have time for right now, but perhaps someone else can help shed some light. </span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Thanks</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Ruaan</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> <a href="mailto:quickfixn-bounces@lists.quickfixn.com" target="_blank">quickfixn-bounces@lists.quickfixn.com</a> <a href="mailto:[mailto:quickfixn-bounces@lists.quickfixn.com]" target="_blank">[mailto:quickfixn-bounces@lists.quickfixn.com]</a> <b>On Behalf Of </b>Grant Birchmeier<br>
<b>Sent:</b> 07 September 2012 04:14 PM<br><b>To:</b> Mailing list for QuickFIX/n<br><b>Subject:</b> Re: {{Quickfixn}} Force close quickfixn</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"> <span lang="EN-US"><u></u><u></u></span></p>
<div><p class="MsoNormal">This is open issue 45.  (48 is also related.)<span lang="EN-US"><u></u><u></u></span></p></div><div><p class="MsoNormal"><a href="https://github.com/connamara/quickfixn/issues" target="_blank">https://github.com/connamara/quickfixn/issues</a><span lang="EN-US"><u></u><u></u></span></p>
</div><div><p class="MsoNormal"> <span lang="EN-US"><u></u><u></u></span></p></div><p class="MsoNormal"> <span lang="EN-US"><u></u><u></u></span></p><div><p class="MsoNormal">On Fri, Sep 7, 2012 at 2:49 AM, Ruaan Viljoen <<a href="mailto:ruaanv@estuarys.co.za" target="_blank">ruaanv@estuarys.co.za</a>> wrote:<span lang="EN-US"><u></u><u></u></span></p>
<div><div><p class="MsoNormal">Hi,<span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"> <span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal">I remember some issue with the initiator.stop(true) a while ago, has these issues been resolved?<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"> <span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal">I am calling intitiator.stop(true), but the thread is still staying alive it seems, and needs to be closed by end-tasking it. I am going to download the full quickfix/n from the repo now and see what exactly is causing this.<span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"> <span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal">However I thought I would ask, maybe someone has a simple explanation?<span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal">
<span style="color:#595959"> </span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="color:#595959">Groete</span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><span style="color:#595959">Regards</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:#888888"> </span><span lang="EN-US"><u></u><u></u></span></p><p class="MsoNormal"><b><span style="color:#595959">Ruaan Viljoen</span></b><span lang="EN-US"><u></u><u></u></span></p>
</div></div><p class="MsoNormal" style="margin-bottom:12.0pt"><br>_______________________________________________<br>Quickfixn mailing list<br><a href="mailto:Quickfixn@lists.quickfixn.com" target="_blank">Quickfixn@lists.quickfixn.com</a><br>
<a href="http://lists.quickfixn.com/listinfo.cgi/quickfixn-quickfixn.com" target="_blank">http://lists.quickfixn.com/listinfo.cgi/quickfixn-quickfixn.com</a><span lang="EN-US"><u></u><u></u></span></p></div><p class="MsoNormal">
<br><br clear="all"><br>-- <span lang="EN-US"><u></u><u></u></span></p><div><p class="MsoNormal"><span style="background:white">Grant Birchmeier</span><span lang="EN-US"><u></u><u></u></span></p></div><div><p class="MsoNormal">
<b><span style="color:#3333ff;background:#ffcc00">Connamara Systems, LLC</span></b><span lang="EN-US"><u></u><u></u></span></p></div><div><p class="MsoNormal"><b>Made-To-Measure Trading Solutions.</b><span lang="EN-US"><u></u><u></u></span></p>
</div><div><p class="MsoNormal">Exactly what you need. No more. No less.<span lang="EN-US"><u></u><u></u></span></p></div><div><p class="MsoNormal"><a href="http://connamara.com" target="_blank">http://connamara.com</a><span lang="EN-US"><u></u><u></u></span></p>
</div><p class="MsoNormal"> <span lang="EN-US"><u></u><u></u></span></p></div></div></div></div><p class="MsoNormal" style="margin-bottom:12.0pt"><br>_______________________________________________<br>Quickfixn mailing list<br>
<a href="mailto:Quickfixn@lists.quickfixn.com" target="_blank">Quickfixn@lists.quickfixn.com</a><br><a href="http://lists.quickfixn.com/listinfo.cgi/quickfixn-quickfixn.com" target="_blank">http://lists.quickfixn.com/listinfo.cgi/quickfixn-quickfixn.com</a><u></u><u></u></p>
</div><p class="MsoNormal"><br><br clear="all"><br>-- <u></u><u></u></p><div><p class="MsoNormal"><span style="background:white">Grant Birchmeier</span><u></u><u></u></p></div><div><p class="MsoNormal"><b><span style="color:#3333ff;background:#ffcc00">Connamara Systems, LLC</span></b><u></u><u></u></p>
</div><div><p class="MsoNormal"><b>Made-To-Measure Trading Solutions.</b><u></u><u></u></p></div><div><p class="MsoNormal">Exactly what you need. No more. No less.<u></u><u></u></p></div><div><p class="MsoNormal"><a href="http://connamara.com" target="_blank">http://connamara.com</a><u></u><u></u></p>
</div><p class="MsoNormal"><u></u> <u></u></p></div></div></div></div><br>_______________________________________________<br>
Quickfixn mailing list<br>
<a href="mailto:Quickfixn@lists.quickfixn.com">Quickfixn@lists.quickfixn.com</a><br>
<a href="http://lists.quickfixn.com/listinfo.cgi/quickfixn-quickfixn.com" target="_blank">http://lists.quickfixn.com/listinfo.cgi/quickfixn-quickfixn.com</a><br>
<br></blockquote></div><br>