<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif;" dir="ltr">
<p></p>
<div id="divtagdefaultwrapper" style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px;">
<font face="Calibri,Arial,Helvetica,sans-serif">
<div><font face="verdana,sans-serif" size="2" color="#3333FF">Thanks Lukas, please see a couple of questions/comments below.</font></div>
<div><font face="Arial,sans-serif" size="1" color="#222222"><span style="font-size: 12.79px;"><br>
<div>- Dmitry</div>
</span></font></div>
<div style="margin-top: 0px; margin-bottom: 0px;"> </div>
<div>
<hr width="98%" style="width: 1020.17px;">
</div>
</font></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; border-style: none;">
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div id="divRplyFwdMsg"><font face="Calibri,sans-serif" size="2"><span style="font-size: 11pt;"><b>From:</b></span></font><font face="Calibri,sans-serif" size="2"><span style="font-size: 11pt;"> Lukas Larsson <lukas@erlang.org></span></font></div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div id="divRplyFwdMsg"><font face="Calibri,sans-serif" size="2"><span style="font-size: 11pt;"><b>Sent:</b></span></font><font face="Calibri,sans-serif" size="2"><span style="font-size: 11pt;"> Wednesday, January 25, 2017 12:37 AM</span></font></div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div id="divRplyFwdMsg"> </div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">Hello,</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif"><br>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">On Wed, Jan 25, 2017 at 12:38 AM, Dmitry Kakurin <<a href="mailto:dima_kakurin@hotmail.com" target="_blank">dima_kakurin@hotmail.com</a>> wrote:</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left: 1px solid rgb(204, 204, 204);">
<div id="gmail-m_-88027960317730910m_-6976247717624396004divtagdefaultwrapper"><font face="Calibri,Arial,Helvetica,sans-serif">When I execute "pid ! msg" and it returns, what are the guarantees if pid and self are on the same node?</font></div>
</div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left: 1px solid rgb(204, 204, 204);">
<div id="gmail-m_-88027960317730910m_-6976247717624396004divtagdefaultwrapper"><font face="Calibri,Arial,Helvetica,sans-serif">Can I assume that by the time it returns, msg is in the pid's queue? And as a result all messages sent to pid afterwards will be queued
 after msg?</font></div>
</div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif"><br>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">No you cannot assume that. The message is considered "in transit" until the receiving process inspects it somehow.</font></div>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px;">
<font face="Calibri,Arial,Helvetica,sans-serif"><br>
</font></div>
<font face="verdana,sans-serif" size="2" color="#3333FF">What aspect of implementation can cause such reordering? Could you give an example how this could happen? Maybe I'll be able to artificially create conditions where it would not happen. Or work around
 it in some other way. Please see below why.</font><font face="Calibri,Arial,Helvetica,sans-serif" style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px;"><br>
</font><span style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px;"></span>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; border-style: none;">
<div><font face="Calibri,Arial,Helvetica,sans-serif"><br>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left: 1px solid rgb(204, 204, 204);">
<div id="gmail-m_-88027960317730910m_-6976247717624396004divtagdefaultwrapper"><font face="Calibri,Arial,Helvetica,sans-serif"><br>
</font></div>
</div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left: 1px solid rgb(204, 204, 204);">
<div id="gmail-m_-88027960317730910m_-6976247717624396004divtagdefaultwrapper"><font face="Calibri,Arial,Helvetica,sans-serif">The reason I'm asking is because I need a guarantee of proper message ordering in the following scenario when all processes involved
 are local to a node:</font></div>
</div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left: 1px solid rgb(204, 204, 204);">
<div id="gmail-m_-88027960317730910m_-6976247717624396004divtagdefaultwrapper"><font face="Calibri,Arial,Helvetica,sans-serif">1. A --msg1--> C (process A sends msg1 to process C)</font></div>
</div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left: 1px solid rgb(204, 204, 204);">
<div id="gmail-m_-88027960317730910m_-6976247717624396004divtagdefaultwrapper"><font face="Calibri,Arial,Helvetica,sans-serif">2. A --msg2--> B</font></div>
</div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left: 1px solid rgb(204, 204, 204);">
<div id="gmail-m_-88027960317730910m_-6976247717624396004divtagdefaultwrapper"><font face="Calibri,Arial,Helvetica,sans-serif">3. B --msg2--> C (process B simply proxies msg2 from A to C)</font></div>
</div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left: 1px solid rgb(204, 204, 204);">
<div id="gmail-m_-88027960317730910m_-6976247717624396004divtagdefaultwrapper"><font face="Calibri,Arial,Helvetica,sans-serif"><br>
</font></div>
</div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left: 1px solid rgb(204, 204, 204);">
<div id="gmail-m_-88027960317730910m_-6976247717624396004divtagdefaultwrapper"><font face="Calibri,Arial,Helvetica,sans-serif">I need a guarantee that msg2 will always appear in C's queue after msg1.</font></div>
</div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif"><br>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div>You have to do this using messages or some other sync mechanism.</div>
<div><br>
</div>
</font></div>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px;">
<font face="verdana,sans-serif" size="2" color="#3333FF">You are right, <i>in general</i> it's easy to devise a simple scheme for that. </font></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px;">
<font face="verdana,sans-serif" size="2" color="#3333FF">Unfortunately I have a limitation. In my case A talks to C thru proxy B and would like to short-circuit the communication by getting rid of B and start talking to C directly. Process A needs to do that
 while messages thru B could be in flight. The limitation is that C is not aware of this proxy business, and cannot be changed (it's a regular GenServer that is not written by me).</font></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px;">
<font face="verdana,sans-serif" size="2" color="#3333FF">With lack of cooperation from C I cannot think of a communication protocol to accomplish what I want.</font></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px;">
<font face="verdana,sans-serif" size="2" color="#3333FF"><br>
</font></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px;">
<font face="verdana,sans-serif" size="2" color="#3333FF">Is there a way for processes A and B to observe C's queue in any way and derive some information about it to help me with my problem?</font></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 16px; margin: 0px 0px 0px 40px; padding: 0px; border-style: none;">
<div><font face="Calibri,Arial,Helvetica,sans-serif"> </font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left: 1px solid rgb(204, 204, 204);">
<div id="gmail-m_-88027960317730910m_-6976247717624396004divtagdefaultwrapper"><font face="Calibri,Arial,Helvetica,sans-serif"><br>
</font></div>
</div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">
<div style="margin: 0px 0px 0px 0.8ex; padding-left: 1ex; border-left: 1px solid rgb(204, 204, 204);">
<div id="gmail-m_-88027960317730910m_-6976247717624396004divtagdefaultwrapper"><font face="Calibri,Arial,Helvetica,sans-serif">P.S. I've read the FAQ 10.8 and 10.9 :-)</font></div>
</div>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif"><br>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">Please add to the FAQ if you think that you can make it clearer on this point. <a href="https://github.com/matthiasl/Erlang-FAQ" target="_blank">https://github.com/matthiasl/Erlang-FAQ</a></font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif"><br>
</font></div>
<div><font face="Calibri,Arial,Helvetica,sans-serif">Lukas</font></div>
</div>
<br>
<p></p>
<div style="color: rgb(0, 0, 0);">
<div>
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div></div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>