[Asterisk-bugs] [Asterisk 0010127]: Queue timeouts are considerably higher than expected
noreply at bugs.digium.com
noreply at bugs.digium.com
Tue Jul 17 18:26:32 CDT 2007
A NOTE has been added to this issue.
======================================================================
http://bugs.digium.com/view.php?id=10127
======================================================================
Reported By: bcnit
Assigned To:
======================================================================
Project: Asterisk
Issue ID: 10127
Category: Applications/app_queue
Reproducibility: always
Severity: major
Priority: normal
Status: feedback
Asterisk Version: 1.4.6
SVN Branch (only for SVN checkouts, not tarball releases): N/A
SVN Revision (number only!):
Disclaimer on File?: Yes
Request Review:
======================================================================
Date Submitted: 07-05-2007 20:31 CDT
Last Modified: 07-17-2007 18:26 CDT
======================================================================
Summary: Queue timeouts are considerably higher than expected
Description:
A queue is defined as follows:
----------------------------
[testq]
timeout=10
retry=5
strategy=ringall
wrapuptime=0
maxlen=0
joinempty=no
leavewhenempty=yes
eventmemberstatus=no
eventwhencalled=no
reportholdtime=no
memberdelay=0
weight=0
timeoutrestart=0
autopause=no
member => SIP/100
member => SIP/101
member => SIP/102
----------------------------
When called with 'Queue(testq,n)':
1 - The phones ring for 10 seconds.
2 - There is 5 seconds silence
3 - The phones ring for 10 seconds.
4 - There is 5 seconds silence
5 - The call exits the queue on the time-out cycle
So, despite the queue having a timeout of 10 seconds, the call is in the
queue for 30.
When called with 'Queue(testq,n,,,10):
1 - The phones ring for 10 seconds.
2 - There is 5 seconds silence
3 - The call exits the queue (no mention is made of the time-out cycle).
So, despite coding an explicit 10 seconds timeout, the call is in the
queue for 15.
======================================================================
----------------------------------------------------------------------
putnopvut - 07-17-07 18:26
----------------------------------------------------------------------
I've written a new patch to take blitzrage's considerations into account.
If the ring strategy is roundrobin or rrmemory, then instead of ringing
just one phone, we'll ring every phone once. If the strategy is any other,
then we'll only ring one phone (or all phones once if the strategy is
ringall).
The reason I decided to do it this way is that roundrobin and rrmemory are
the only strategies that guarantee that each retry will ring a different
member. Leastrecent and fewestcalls have the potential to keep ringing the
same member over and over.
The patch I have uploaded was made against an SVN version later than
74120, so in order to apply it, you'll need to first make sure you are at
an SVN revision later than 74120 so that my original fix is still intact.
Also, as another side effect of my changes, since I added a member_count
field to the call_queue struct, I also changed the dialplan function
QueueMemberCount to use this new field. This may be committed as a separate
patch later, but for now it's all in this one.
Let me know what you think.
Issue History
Date Modified Username Field Change
======================================================================
07-17-07 18:26 putnopvut Note Added: 0067489
======================================================================
More information about the asterisk-bugs
mailing list