<div dir="ltr"><div style>I was experiencing an interesting issue. I need my mochiweb view, to post to another service and proxy the response. That happens within a receive block which looks like:-</div><div style><br></div>
<div style>                        ?INFO("Posting to TransactionID ~s Payload ~s ~n", [TraceTransactionId, Temp]),<br></div><div style><div style>                        case http:request(post, {Url, [], "application/x-www-form-urlencoded", Temp}, [], []) of</div>
<div style>                            {_, {_,_,JsonData}} -></div><div style>                                ?INFO("Response Data TransactionID ~s Response ~s ~n", [TraceTransactionId, JsonData]),<br></div><div style>
                                success(Req, "text/plain", JsonData);</div><div style>                            _ -></div><div style>                                ?INFO("Error Posting to Adam ~n", []),</div>
<div style>                                error(Req, 500, "Problem Getting Data")</div><div style>                        end</div></div><div style><br></div><div style>Then in concurrent scenarios, sometimes the response of one will be logged against the request of another while the TransactionID would remain the same.</div>
<div style><br></div><div style>If However I swap this block with a simple curl command line executor, everything seems to work and the problem cant be repro'ed</div><div style><br></div><div style><div>                        CurlCommand = io_lib:format("curl -s -d \"~s\" ~s", [Temp, Url]),</div>
<div>                        ?INFO("Executing Curl Command ~s Curl ~s", [TraceTransactionId, CurlCommand]),</div><div>                        CurlResponse = os:cmd(CurlCommand),</div><div>                        ?INFO("Curl Response ~s Curl ~s", [TraceTransactionId, CurlResponse]),</div>
<div>                        JsonData = string:strip(CurlResponse),</div><div>                        success(Req, "text/plain", JsonData);</div></div><div style><br></div><div style><br></div><div style>This seems to work fine and I dont experience the concurrency issue. It should default to synchronous but in 10% of the cases it seems to mix the responses.</div>
<div style><br></div><div style>My Questions</div><div style>1) Am I using the inets http client the correct way?<br></div><div style>2) If so then why does the curl wrapper work?</div><div style>3) How can I investigate this further?</div>
<div style><br></div><div style>Best Regards,</div><br>Iqbal Talaat Bhatti<div><br><span><span>"If we did all the things we are capable of doing, we would 
literally astound ourselves." - Thomas Edison</span></span><br>
</div></div>