[asterisk-bugs] [Asterisk 0017354]: [patch] Queue member considered available when paused, causing high weight queue to block low weight queue
Asterisk Bug Tracker
noreply at bugs.digium.com
Wed Jul 7 12:41:39 CDT 2010
A NOTE has been added to this issue.
======================================================================
https://issues.asterisk.org/view.php?id=17354
======================================================================
Reported By: davidw
Assigned To:
======================================================================
Project: Asterisk
Issue ID: 17354
Category: Applications/app_queue
Reproducibility: always
Severity: minor
Priority: normal
Status: acknowledged
Asterisk Version: SVN
JIRA: SWP-1506
Regression: No
Reviewboard Link:
SVN Branch (only for SVN checkouts, not tarball releases): trunk
SVN Revision (number only!): 263766
Request Review:
======================================================================
Date Submitted: 2010-05-18 10:31 CDT
Last Modified: 2010-07-07 12:41 CDT
======================================================================
Summary: [patch] Queue member considered available when
paused, causing high weight queue to block low weight queue
Description:
Issue https://issues.asterisk.org/view.php?id=13220 addresses a problem in which
a call ringing on a member on a
high weight queue and who is also in a low weight queue blocks the low
weight queue. I believe the fix for this is incomplete in that it fails to
treat a paused member as being unavailable. This can happen even if only
the one member is on both queues.
Scenario. Given a high weight queue and a low weight queue both with the
same single member, and the member is paused on the high weight queue,
present a call first to the high weight queue and then to the low weight
queue.
Expect. The first call is stalled on the queue. The second call is
answered.
Get. Both calls are stalled until the first call is abandoned.
If the roles of low and high weight queue are reversed, this works as
expected.
======================================================================
Relationships ID Summary
----------------------------------------------------------------------
related to 0013220 [patch] Calls in high-weighted queue bl...
======================================================================
----------------------------------------------------------------------
(0124314) davidw (reporter) - 2010-07-07 12:41
https://issues.asterisk.org/view.php?id=17354#c124314
----------------------------------------------------------------------
I've uploaded a patch against trunk to handle this problem. When it is
checking for a member being able to take work in a higher priority queue,
it now first tests whether it is paused in that queue, a relatively cheap
test, then, after determining how many available agents there are in the
queue, it discounts a conflict if there are none.
This is a belt and braces approach, as the only reason (except maybe a
race) I can see for having the number of available members be zero, after
we have established that the member is nominally available for the first
queue and is also in the second queue, is that they are paused in the
second queue.
If one really does go to the second test and the member really isn't
available, but others are, and there is more work than members, the
presumption is that those other members will take up work that is on offer
until there are no available members left, and a retry on the first queue
will then succeed.
This patch also applies to 1.6.2, but Local channels, which I used to
simplify the test configuration, are not well behaved, as they have an
invalid status. Or real world case is with agents.
Also, although it doesn't invalidate that the test shows a problem with
the unpatched code, the test behaves more realistically if one sets
ringinuse=no for both queues.
Issue History
Date Modified Username Field Change
======================================================================
2010-07-07 12:41 davidw Note Added: 0124314
======================================================================
More information about the asterisk-bugs
mailing list