<div dir="ltr"><div class="gmail_default" style="font-size:small;color:#000000">I don't think that's a problem.  I'd want to limit that lock around order-send usages only.  If your app can also send other messages (e.g. Market Data Requests, Sec Def Requests, etc), you don't want those sends to be waiting on some order lock.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 10, 2014 at 11:50 AM, Amar Parmar <span dir="ltr"><<a href="mailto:amar.parmar@octave-im.com" target="_blank">amar.parmar@octave-im.com</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-GB" link="blue" vlink="purple">
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">Hi,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">I had a bug today where a timer call back and a sequential processer both sent the same order (same tag 11).<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">This happened because the callback identified the order as to be sent before the sequential handler had updated the status of the order as sent.  This would rarely
 happen, but did occur.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">My thought was to place a lock around the portion of code that; checks if an order is to be sent, sends it and marks it as sent:<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">               
</span><span style="font-size:9.5pt;font-family:Consolas;color:blue;background:white">lock</span><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">
 (sendLock)<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">                {<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">                   
</span><span style="font-size:9.5pt;font-family:Consolas;color:blue;background:white">if</span><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">
 (!</span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af;background:white">dictionaryMaps</span><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">.isWorking[order])<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">                    {<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">                        fixOrder.TransactTime =
</span><span style="font-size:9.5pt;font-family:Consolas;color:blue;background:white">new</span><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">
</span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af;background:white">TransactTime</span><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">(</span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af;background:white">DateTime</span><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">.UtcNow,
</span><span style="font-size:9.5pt;font-family:Consolas;color:blue;background:white">true</span><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">);<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">                       
</span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af;background:white">Session</span><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">.SendToTarget(fixOrder,
</span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af;background:white">Globals</span><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">.sessionID);<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">                       
</span><span style="font-size:9.5pt;font-family:Consolas;color:#2b91af;background:white">dictionaryMaps</span><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">.isWorking[order]
 = </span><span style="font-size:9.5pt;font-family:Consolas;color:blue;background:white">true</span><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">;<u></u><u></u></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">                    }<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas;color:black;background:white">                }</span><span style="font-size:9.5pt;font-family:Consolas;color:black"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">I believe this would solve by issue, but I am worried that there maybe unintended consequence to placing a lock around the SendToTarget method.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">Does anyone see any issues?<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">Thanks,<u></u><u></u></span></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><br clear="all"><div><br></div>-- <br><div><font><span style="background-color:#000000"><span style="background-color:#ffffff">Grant Birchmeier</span></span></font><font><font color="#3333ff"><br></font></font></div><div><font><b><font color="#3333ff"><span style="background-color:#ffcc33"><span style="background-color:#ffcc66"><span style="background-color:#ffcc99"><span style="background-color:#ffffff"><span style="background-color:#ffcc00">Connamara Systems, LLC</span></span></span></span></span></font></b></font><br></div><div><font><b>Made-To-Measure Trading Solutions.</b></font></div><div><font>Exactly what you need. No more. No less.</font><font><b><font color="#3333ff"><br></font></b></font></div><div><font><a href="http://connamara.com" target="_blank">http://connamara.com</a><br></font></div>
</div>