[asterisk-bugs] [JIRA] (ASTERISK-29045) app_queue: Does not assign the first call in queue when one or more members are not in the range of MIN and MAX penalty

Mario Lenis (JIRA) noreply at issues.asterisk.org
Fri Aug 28 09:27:43 CDT 2020


     [ https://issues.asterisk.org/jira/browse/ASTERISK-29045?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mario Lenis updated ASTERISK-29045:
-----------------------------------

    Attachment: debug_log_00001

You're right, I attached the full now. The channel that were supoused to be connected : Local/ivr999 at funciones-generales-00000021;2

Channel attended: Local/ivr999 at funciones-generales-0000001f;2
Queue, position 1. Local/ivr999 at funciones-generales-00000021;2
Queue, position 2. Local/ivr999 at funciones-generales-00000022;2

 -------

I was trying to debug this situation last night and I found something :
Calls were added to the queue correctly:

{quote}
app_queue.c: Queue 'QueueA' Join, Channel 'Local/ivr999 at funciones-generales-00000021;2', Position '1
app_queue.c: There is 1 available member.
app_queue.c: Queue 'QueueA' Join, Channel 'Local/ivr999 at funciones-generales-00000022;2', Position '2'
app_queue.c: There is 1 available member.
{quote}

But in both cases the agent it was referring as available was the one with penalty out of the range, and I found that the app_queue tried to connect the call with the "available" agent many times

{quote}
app_queue.c: There is 1 available member.
app_queue.c: It's not our turn (Local/ivr999 at funciones-generales-00000022;2).
app_queue.c: Queue QueueA has no realtime members defined. No need for update
app_queue.c: There is 1 available member.
app_queue.c: It's our turn (Local/ivr999 at funciones-generales-00000021;2).
app_queue.c: Local/ivr999 at funciones-generales-00000021;2 is trying to call a queue member.
app_queue.c: Trying 'Local/1002 at agent' with metric 1
app_queue.c: Local/1002 at agent not available, can't receive call
{quote} 

>>>>>> Then, the agent gets available <<<<<<<<
{quote}
app_queue.c: Detected hangup of queue caller channel Local/ivr999 at funciones-generales-0000001f;2
app_queue.c: Device 'Local/ivr999 at funciones-generales' changed to state '2' (In use) but we don't care because they're not a member of any queue.
app_queue.c: Removed Local/1002 at agent from pending_members
{quote}

Then I see what might be the reason the 1st call in row is not being connected:

{{app_queue.c: There are 2 available members.}}

And since in the queues.conf file I have autofill = yes, the calls are connected in parallel. 

> app_queue: Does not assign the first call in queue when one or more members are not in the range of MIN and MAX penalty
> -----------------------------------------------------------------------------------------------------------------------
>
>                 Key: ASTERISK-29045
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-29045
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Applications/app_queue
>    Affects Versions: 16.8.0
>         Environment: Centos7 x86_64
> Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz
> RAM: 1Gb
>            Reporter: Mario Lenis
>            Assignee: Mario Lenis
>            Severity: Minor
>         Attachments: debug_log_00001, logger_0001
>
>
> The first call in queue is not being assigned if one of the members has a penalty value out of the range. This is the setup
> {{extensions.conf}}
> {quote}
> exten => 999,1,Noop()
>  same => n,Set(QUEUE_MIN_PENALTY=0)
>  same => n,Set(QUEUE_MAX_PENALTY=99999)
>  same => n,Queue(QueueA,tT)
> {quote}
> {{queues.conf}}
> {quote}
> [general]
> persistentmembers = yes
> negative_penalty_invalid = yes
> shared_lastcall = yes
> autofill = yes
> [QueueA]
> timeout = 16
> strategy =rrmemory
> servicelevel = 60
> weight = 0
> ringinuse = no
> maxlen = 0
> setinterfacevar = yes
> setqueueentryvar = yes
> setqueuevar = yes
> member => Local/1001 at agent,-1,,Agent:1001,no
> member => Local/1002 at agent,,,Agent:1002,no
> {quote}
> Status of the queue
> {quote}
> *CLI> queue show 
> QueueA has 0 calls (max unlimited) in 'rrmemory' strategy (12s holdtime, 11s talktime), W:0, C:6, A:0, SL:100.0%, SL2:100.0% within 60s
>    Members: 
>       Local/1001 at agent with penalty -1 (ringinuse disabled) (Not in use) has taken no calls yet
>       Local/1002 at agent (ringinuse disabled) (Not in use) has taken 6 calls (last was 325 secs ago)
>    No Callers
> {quote}
> Then 3 calls enter to the queue, the first call is correctly assigned to the available agent.
> {quote}
> *CLI> queue show
> QueueA has 2 calls (max unlimited) in 'rrmemory' strategy (9s holdtime, 11s talktime), W:0, C:6, A:0, SL:100.0%, SL2:100.0% within 60s
>    Members: 
>       Local/1001 at agent with penalty -1 (ringinuse disabled) (Not in use) has taken no calls yet
>       Local/1002 at agent (ringinuse disabled) (in call) (In use) has taken 6 calls (last was 705 secs ago)
>    Callers: 
>       1. Local/ivr999 at funciones-generales-000000e8;2 (wait: 0:09, prio: 0)
>       2. Local/ivr999 at funciones-generales-000000e9;2 (wait: 0:05, prio: 0)
> *CLI> agent show all
> Agent-ID Name                 State       Channel                        Talking with
> 1001                          NOT_INUSE   SIP/101-00000009               
> 1002                          INUSE       SIP/102-00000006               Local/1002 at agent-000000e7;2
> {quote}
> Then the call attended by agent 1002 ends up, the next call should be {{Local/ivr999 at funciones-generales-000000e8;2}}, instead, the call assigned to the agent is {{Local/ivr999 at funciones-generales-000000e9;2}}
> {quote}
> *CLI> queue show
> QueueA has 1 calls (max unlimited) in 'rrmemory' strategy (38s holdtime, 41s talktime), W:0, C:7, A:0, SL:100.0%, SL2:100.0% within 60s
>    Members: 
>       Local/1001 at agent with penalty -1 (ringinuse disabled) (Not in use) has taken no calls yet
>       Local/1002 at agent (ringinuse disabled) (in call) (In use) has taken 7 calls (last was 73 secs ago)
>    Callers: 
>       1. Local/ivr999 at funciones-generales-000000e8;2 (wait: 3:23, prio: 0)
> {quote}
> I have reproduced the situation many times and always happens, the problem is that if more calls enter to the queue, the 1st call in the queue order would not be assigned at least until it's the only one awaiting or in worst case scenario would no be assigned at all since more an more calls may enter to the queue.



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list