[asterisk-bugs] [JIRA] (ASTERISK-29043) app_queue: Leave empty sometimes not recorded as abandoned

Joshua C. Colp (JIRA) noreply at issues.asterisk.org
Tue Aug 25 04:33:43 CDT 2020


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

Joshua C. Colp updated ASTERISK-29043:
--------------------------------------

    Severity: Minor  (was: Critical)

> app_queue: Leave empty sometimes not recorded as abandoned
> ----------------------------------------------------------
>
>                 Key: ASTERISK-29043
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-29043
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Applications/app_queue
>    Affects Versions: 16.12.0
>         Environment: CentOS 7
>            Reporter: Kfir Itzhak
>            Severity: Minor
>
> Hi,
> After upgrading PBXes from Asterisk 13 to Asterisk 16 we began to see a bug. The bug was evident because our callcenter display system relies on the AMI events, such as AgentComplete and QueueCallerAbandon. The QueueCallerLeave event is not used, because its a general event and not an outcome.
> The bug was introduced in Asterisk ~15 by this commit:
> https://github.com/asterisk/asterisk/commit/045dbcc2d6e6b28645fad2c16843305c50150d5b
> That commit tried to fix double EXITEMPTY entries in the queue log, and it did. But, because wait_our_turn() doesn't let queue_exec() double process it anymore, when its handled by wait_our_turn, the call is not recorded as abandoned, and QueueCallerAbandon is not generated.
> This seems like an innocent developer error. The leave empty is handled in two different places, and they both write EXITEMPTY to queue log, but only one place recorded it the call as abandoned.
> This caused this behavior:
> 1) If the call is waiting for an available agent (wait_our_turn), and there is no available agent anymore (e.g. last agent went into pause), the call is removed from the queue but its not recorded as abandoned, and thus, QueueCallerAbandon event is not generated.
> 2) If the call is in the middle of dialing to an agent (queue_exec->try_calling), and while dialing, the agent went on pause, and then rejected the call, the call is removed from the queue and recorded as abandoned, and QueueCallerAbandon event is generated.
> Its re-producible but reproducing #2 may take a few attempts.
> I have created a patch and tested it successfully.



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



More information about the asterisk-bugs mailing list