<p><a href="https://github.com/gaaf" class="user-mention">@gaaf</a> there are actually 2 conditions that consider breaking out of reconnect loop on success:</p>

<p>1'st one, on success, will succeed opening channel, thus will never go further:</p>

<pre><code>// open channel - failed
if (log_ret != AMQP_RESPONSE_NORMAL) {
...
}
</code></pre>

<p>2'nd one:</p>

<pre><code>// reconnect
if (reconnect_attempts < max_reconnect_attempts) {
...
}
</code></pre>

<p>I tried again this scenario using kamailio with 1 spawned child and I can see only 1 "LM_ERR("SUCCESS: rabbitmq_reconnect()\n");" for multiple calls, after reconnect.</p>

<p>The reason you may see multiple logs of that kind is because the amqp connection is <strong>per child process</strong>. However, the reconnect is tried only for a specific child, when it tries to _publish()/publish_consume(). </p>

<p>Hope this was helpful.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/kamailio/kamailio/pull/786#issuecomment-252180828">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AF36ZbuDQqcCIfDb3cS90J6gueU6mowQks5qxgDlgaJpZM4KAbIv">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AF36ZZTCPWRUXw6XFNXXnIEzE6LXup9kks5qxgDlgaJpZM4KAbIv.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/kamailio/kamailio/pull/786#issuecomment-252180828"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/kamailio/kamailio","title":"kamailio/kamailio","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/kamailio/kamailio"}},"updates":{"snippets":[{"icon":"PERSON","message":"@smititelu in #786: @gaaf there are actually 2 conditions that consider breaking out of reconnect loop on success:\r\n\r\n1'st one, on success, will succeed opening channel, thus will never go further:\r\n```\r\n// open channel - failed\r\nif (log_ret != AMQP_RESPONSE_NORMAL) {\r\n...\r\n}\r\n```\r\n\r\n2'nd one:\r\n```\r\n// reconnect\r\nif (reconnect_attempts \u003c max_reconnect_attempts) {\r\n...\r\n}\r\n```\r\n\r\nI tried again this scenario using kamailio with 1 spawned child and I can see only 1 \"LM_ERR(\"SUCCESS: rabbitmq_reconnect()\\n\");\" for multiple calls, after reconnect.\r\n\r\nThe reason you may see multiple logs of that kind is because the amqp connection is **per child process**. However, the reconnect is tried only for a specific child, when it tries to _publish()/publish_consume(). \r\n\r\nHope this was helpful."}],"action":{"name":"View Pull Request","url":"https://github.com/kamailio/kamailio/pull/786#issuecomment-252180828"}}}</script>