<div dir="ltr"><div>Hello list,</div><div>Hope you are all doing well!</div><div><br></div><div>Sorry for the long email but I tried to explain all I've seen regarding this issue.... I am going to open a ticket for this issue but I found it useful to already explain it here.</div><div><br></div><div>I've also recently faced this "Exceptionally long queue length queuing" error in some servers running 16.8.0 and after A LOT of investigation, I've discovered what is causing it in my case (not sure if is the same case as initially reported by Dovid)</div><div>So, what I discovered is that in case the diaplan has a Wait() and during this wait period many "deferrable frames" are received, the final piece of the Wait function (ast_safe_sleep_conditional) can throw the "Exceptionally long queue length queuing" error message.</div><div></div><div>It is not really common to get a lot of "deferrable frames" (see ast_is_deferrable_frame) but we can have that by simply putting on hold and off hold while the channel is on "wait".</div><div>My production case is a little more complex and happens while on Wait and with the AST_CONTROL_SRCCHANGE event. This happens when an old Asterisk 13.13.0 receives a hold REINVITE and starts a new RTP stream (with different SSRC) towards some other victim Asterisk with the Music on Hold while still sending the original caller RTP (so at this point 2 RTP streams with different SSRCs are sent to the destination that happens to be a channel currently on Wait). I could not find any ticket for such bug, but version 16.8.0 does not have this problem and instead seems to inject the Music on Hold in the existing RTP stream so there aren't 2 streams at the same time to the same destination. The problem with 2 streams is that each RTP package of the new stream generates a source change frame (AST_CONTROL_SRCCHANGE), and at 50pps this builds up a lot of events fast and so if the Wait is high the issue pops up (I agree having a channel on Wait for too long is not a good practice but noone is perfect...). Also if multiple channels are facing this situation then the problem just escalates very bad.</div><div>When the "Exceptionally long queue length queuing" is happening all AMI commands seem to fail, BYE messages seem to be missed/delayed, internal timeouts expire and all sort of weird things happen to all channels in the server, apparently the whole Asterisk process gets locked in this loop affecting everything else... and this is what makes this issue really bad because Asterisk can become completely unresponsive while the error message is happening... if it only could throw the error and keep working fine I guess it would be reasonable leaving it up to the dialplan logic to avoid a long Wait()....<br></div><div></div><div>Anyway, to replicate the issue is enough a simple dialplan like this:</div><div><span style="font-family:monospace">exten => 8888,1,Answer()<br>same => n,Wait(30)<br>same => n,NoOp(After wait)<br>same => n,Playback(goodbye)</span></div><div><span style="font-family:monospace">same => n,Hangup()<br></span></div><div>After calling in and while in the Wait(30), repeatedly press Hold/Unhold in the telephone (with Linphone just press the hold once and then press and hold the spacebar which will repeatedly do the hold and unhold several times). After Wait is finished the "Exceptionally long queue length queuing" will show up but gets resolved very fast just because I think there weren't enough frames queued to really freeze Asterisk for too long.</div><div><br></div><div>Thank you,<br></div><div>Kind regards,</div><div>Patrick Wakano<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 3 Jul 2020 at 19:29, Joshua C. Colp <<a href="mailto:jcolp@sangoma.com">jcolp@sangoma.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">On Fri, Jul 3, 2020 at 3:32 AM Dovid Bender <<a href="mailto:dovid@telecurve.com" target="_blank">dovid@telecurve.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 29, 2020 at 6:46 AM Joshua C. Colp <<a href="mailto:jcolp@sangoma.com" target="_blank">jcolp@sangoma.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">On Sun, Jun 28, 2020 at 2:26 PM Dovid Bender <<a href="mailto:dovid@telecurve.com" target="_blank">dovid@telecurve.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi,<br><div><br></div><div>We have a box up and we are starting to see a lot of "Exceptionally long queue length queuing" in the logs. From all the research so far it seems like this leads to their systems crashing and being unreachable. In our case the box remains up and takes calls. We are running Asterisk 16.6.1. We are using MusicOnHold to play online music streams via ffmpeg. Any idea on how to troubleshoot this further to see why this is happening?<br></div></div></blockquote><div><br></div><div>The message occurs when either a channel is deadlocked or the processing time to handle what a channel is doing is substantial, and things build up. Getting a backtrace[1] at the time it occurs will show what the system is actually doing and can provide insight into what is causing it. </div></div><div><br></div>[1] <a href="https://wiki.asterisk.org/wiki/display/AST/Getting+a+Backtrace#GettingaBacktrace-Runningast_coredumperfordeadlocks,taskprocessorbackups,etc" target="_blank">https://wiki.asterisk.org/wiki/display/AST/Getting+a+Backtrace#GettingaBacktrace-Runningast_coredumperfordeadlocks,taskprocessorbackups,etc</a>.<br clear="all"><div><br></div>-- <br></div></blockquote><div>I ended up re-writing my code to use less Local channels and most of the errors went away. I also noticed that my load average and CPU usage is way down. I will open a ticket since it seems  that it may be a bug that others are experiencing.<br></div></div></div></blockquote><div><br></div><div>A backtrace would still be needed for the issue, otherwise there is no way to know what exactly is going on our where things are getting held up. </div></div><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div style="font-family:tahoma,sans-serif"><font color="#073763">Joshua C. Colp</font></div><div style="font-family:tahoma,sans-serif"><font color="#073763">Asterisk Technical Lead</font></div><div style="font-family:tahoma,sans-serif"><font color="#073763">Sangoma Technologies</font></div><div style="font-family:tahoma,sans-serif"><font color="#073763">Check us out at <a href="http://www.sangoma.com" target="_blank">www.sangoma.com</a> and <a href="http://www.asterisk.org" target="_blank">www.asterisk.org</a></font><br></div></div></div></div></div></div></div></div></div></div></div>
-- <br>
_____________________________________________________________________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" rel="noreferrer" target="_blank">http://www.api-digital.com</a> --<br>
<br>
Check out the new Asterisk community forum at: <a href="https://community.asterisk.org/" rel="noreferrer" target="_blank">https://community.asterisk.org/</a><br>
<br>
New to Asterisk? Start here:<br>
      <a href="https://wiki.asterisk.org/wiki/display/AST/Getting+Started" rel="noreferrer" target="_blank">https://wiki.asterisk.org/wiki/display/AST/Getting+Started</a><br>
<br>
asterisk-users mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-users" rel="noreferrer" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-users</a></blockquote></div>