[Home]

Summary:ASTERISK-16147: When caller exits due to EXITEMPTY in app_queue EXITUNAVAIL is written to queue_log.
Reporter:David Brillert (aragon)Labels:
Date Opened:2010-05-25 10:28:01Date Closed:2011-06-07 14:00:40
Priority:MajorRegression?No
Status:Closed/CompleteComponents:Applications/app_queue
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) queue_log-EXITEMPTY-not_written..txt
Description:I have tested multiple versions of 1.4 and I have never seen EXITEMPTY written to queue_log.

****** ADDITIONAL INFORMATION ******

CLI, CDR, and queue_log info uploaded to this ticket.
Marked priority as major since this issue should affect all users of app_queue.
Comments:By: David Brillert (aragon) 2010-05-25 10:31:17

I found this issue while testing and working on ASTERISK-16094

By: Jonathan Rose (jrose) 2011-04-06 14:09:39

Is this still an issue?  I'm having trouble replicating it.

By: David Brillert (aragon) 2011-04-06 14:31:24

Yes I can still reproduce this in 1.4.41rc1

queues.conf
[default-sales]
music                          =  default
strategy                       =  rrmemory
servicelevel                   =  25
context                        =  default-aa-servicemainmenubutton1englishsubmenu
timeout                        =  15
retry                          =  5
maxlen                         =  
weight                         =  0
reportholdtime                 =  no
reportwaitcall                 =  no
memberdelay                    =  0
timeoutrestart                 =  no
autofill                       =  yes
autopause                      =  no
ringinuse                      =  no
setinterfacevar                =  yes
wrapuptime                     =  
joinempty                      =  strict
leavewhenempty                 =  yes
eventwhencalled                =  vars
eventmemberstatus              =  yes
monitor-format                 =  wav49
monitor-type                   =  MixMonitor
queue-youarenext               =  queue-youarenext
queue-thereare                 =  queue-thereare
queue-callswaiting             =  queue-callswaiting
queue-holdtime                 =  queue-holdtime
queue-minutes                  =  queue-minutes
queue-seconds                  =  queue-seconds
queue-thankyou                 =  queue-thankyou
queue-lessthan                 =  queue-less-than

Extension 6002 dials queue extension 6500
Overflow rule does a hangup if no agent is logged to queue (EXITEMPTY)

lab*CLI> show queues
default      has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime), W:0, C:0, A:0, SL:0.0% within 0s
  No Members
  No Callers

default-orde has 0 calls (max unlimited) in 'rrmemory' strategy (0s holdtime), W:0, C:0, A:0, SL:0.0% within 60s
  No Members
  No Callers

default-sale has 0 calls (max unlimited) in 'rrmemory' strategy (0s holdtime), W:0, C:0, A:0, SL:0.0% within 25s
  No Members
  No Callers

default-serv has 0 calls (max unlimited) in 'rrmemory' strategy (0s holdtime), W:0, C:0, A:0, SL:0.0% within 10s
  No Members
  No Callers

[2011-04-06 15:28:00]     -- Executing [6500@default-super:1] Set("SIP/6002-00000024", "LOCAL_EXTEN=6500") in new stack
[2011-04-06 15:28:00]     -- Executing [6500@default-super:2] Gosub("SIP/6002-00000024", "all-local-extension|s|1") in new stack
[2011-04-06 15:28:00]     -- Executing [s@all-local-extension:1] Set("SIP/6002-00000024", "__PICKUPMARK=6500") in new stack
[2011-04-06 15:28:00]  Extension Changed 6002[default-local] new state InUse for Notify User 6002
[2011-04-06 15:28:00]  Extension Changed 6002[default-local] new state InUse for Notify User 6010
[2011-04-06 15:28:00]  Extension Changed 6002[default-local] new state InUse for Notify User 6001
[2011-04-06 15:28:00]     -- Executing [s@all-local-extension:2] GotoIf("SIP/6002-00000024", "0?4") in new stack
[2011-04-06 15:28:00]     -- Executing [s@all-local-extension:3] Set("SIP/6002-00000024", "GROUP(OUTGOING)=6002") in new stack
[2011-04-06 15:28:00]     -- Executing [s@all-local-extension:4] Set("SIP/6002-00000024", "OUTBOUND_GROUP_ONCE=6500@INCOMING") in new stack
[2011-04-06 15:28:00]     -- Executing [s@all-local-extension:5] GotoIf("SIP/6002-00000024", "1?8") in new stack
[2011-04-06 15:28:00]     -- Goto (all-local-extension,s,8)
[2011-04-06 15:28:00]     -- Executing [s@all-local-extension:8] Return("SIP/6002-00000024", "") in new stack
[2011-04-06 15:28:00]     -- Executing [6500@default-super:3] Ringing("SIP/6002-00000024", "") in new stack
[2011-04-06 15:28:00]     -- Executing [6500@default-super:4] Goto("SIP/6002-00000024", "default-aa-followme-6500|s|1") in new stack
[2011-04-06 15:28:00]     -- Goto (default-aa-followme-6500,s,1)
[2011-04-06 15:28:00]     -- Executing [s@default-aa-followme-6500:1] Set("SIP/6002-00000024", "GLOBAL(__SCREEN_EXTENSION)=DEFAULT_ONCALL_6500") in new stack
[2011-04-06 15:28:00]   == Setting global variable '__SCREEN_EXTENSION' to 'DEFAULT_ONCALL_6500'
[2011-04-06 15:28:00]     -- Executing [s@default-aa-followme-6500:2] Set("SIP/6002-00000024", "__FOLLOWME=YES") in new stack
[2011-04-06 15:28:00]     -- Executing [s@default-aa-followme-6500:3] Set("SIP/6002-00000024", "QUEUE_PRIO=0") in new stack
[2011-04-06 15:28:00]     -- Executing [s@default-aa-followme-6500:4] Gosub("SIP/6002-00000024", "default-application-acd-sales|s|1") in new stack
[2011-04-06 15:28:00]     -- Executing [s@default-application-acd-sales:1] Set("SIP/6002-00000024", "AUDIOHOOK_INHERIT(MixMonitor)=yes") in new stack
[2011-04-06 15:28:00]     -- Executing [s@default-application-acd-sales:2] NoOp("SIP/6002-00000024", ""=== START QUEUE (default-sales) ==="") in new stack
[2011-04-06 15:28:00]     -- Executing [s@default-application-acd-sales:3] Set("SIP/6002-00000024", "__QUEUENAME=default-sales") in new stack
[2011-04-06 15:28:00]     -- Executing [s@default-application-acd-sales:4] GotoIf("SIP/6002-00000024", "0?7") in new stack
[2011-04-06 15:28:00]     -- Executing [s@default-application-acd-sales:5] Set("SIP/6002-00000024", "MONITOR_FILENAME=1302118080.54") in new stack
[2011-04-06 15:28:00]     -- Executing [s@default-application-acd-sales:6] Goto("SIP/6002-00000024", "8") in new stack
[2011-04-06 15:28:00]     -- Goto (default-application-acd-sales,s,8)
[2011-04-06 15:28:00]     -- Executing [s@default-application-acd-sales:8] Set("SIP/6002-00000024", "TIMEOUT(digit)=1") in new stack
[2011-04-06 15:28:00]     -- Digit timeout set to 1
[2011-04-06 15:28:00]     -- Executing [s@default-application-acd-sales:9] Set("SIP/6002-00000024", "TIMEOUT(response)=1") in new stack
[2011-04-06 15:28:00]     -- Response timeout set to 1
[2011-04-06 15:28:00]     -- Executing [s@default-application-acd-sales:10] BackGround("SIP/6002-00000024", "custom/0001") in new stack
[2011-04-06 15:28:00]     -- <SIP/6002-00000024> Playing 'custom/0001' (language 'en')
[2011-04-06 15:28:02]   == Parsing '/etc/asterisk/manager.conf': [2011-04-06 15:28:02] Found
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:11] Set("SIP/6002-00000024", "__ACD_TO_OUTGOING=1") in new stack
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:12] Set("SIP/6002-00000024", "CHANNEL(musicclass)=default") in new stack
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:13] Set("SIP/6002-00000024", "__ALLOW_TRANSFER=twk") in new stack
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:14] Set("SIP/6002-00000024", "CALLERID(name)=SALES:Reception 6002") in new stack
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:15] Queue("SIP/6002-00000024", "default-sales|tH|||30|") in new stack
[2011-04-06 15:28:08] WARNING[22181]: app_queue.c:4304 queue_exec: Unable to join queue 'default-sales'
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:16] NoOp("SIP/6002-00000024", "JOINUNAVAIL") in new stack
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:17] GotoIf("SIP/6002-00000024", "0?18:20") in new stack
[2011-04-06 15:28:08]     -- Goto (default-application-acd-sales,s,20)
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:20] GotoIf("SIP/6002-00000024", "1?21:23") in new stack
[2011-04-06 15:28:08]     -- Goto (default-application-acd-sales,s,21)
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:21] QueueLog("SIP/6002-00000024", "default-sales|1302118080.54|NONE|ENTERQUEUE||6002") in new stack
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:22] QueueLog("SIP/6002-00000024", "default-sales|1302118080.54|NONE|EXITUNAVAIL|1|1|0") in new stack
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:23] GotoIf("SIP/6002-00000024", "0?24:26") in new stack
[2011-04-06 15:28:08]     -- Goto (default-application-acd-sales,s,26)
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:26] GotoIf("SIP/6002-00000024", "0?1000") in new stack
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:27] GotoIf("SIP/6002-00000024", "0?1000") in new stack
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:28] GotoIf("SIP/6002-00000024", "0?1000") in new stack
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:29] GotoIf("SIP/6002-00000024", "1?1000") in new stack
[2011-04-06 15:28:08]     -- Goto (default-application-acd-sales,s,1000)
[2011-04-06 15:28:08]     -- Executing [s@default-application-acd-sales:1000] Hangup("SIP/6002-00000024", "16") in new stack
[2011-04-06 15:28:08]   == Spawn extension (default-application-acd-sales, s, 1000) exited non-zero on 'SIP/6002-00000024'
[2011-04-06 15:28:08]     -- Executing [h@default-application-acd-sales:1] Goto("SIP/6002-00000024", "all-hangup|s|1") in new stack
[2011-04-06 15:28:08]     -- Goto (all-hangup,s,1)
[2011-04-06 15:28:08]     -- Executing [s@all-hangup:1] GotoIf("SIP/6002-00000024", "0?all-faxnotify|s|1:2") in new stack
[2011-04-06 15:28:08]     -- Goto (all-hangup,s,2)
[2011-04-06 15:28:08]     -- Executing [s@all-hangup:2] ResetCDR("SIP/6002-00000024", "w") in new stack
[2011-04-06 15:28:08]     -- Executing [s@all-hangup:3] NoCDR("SIP/6002-00000024", "") in new stack
[2011-04-06 15:28:08]  Extension Changed 6002[default-local] new state Idle for Notify User 6002
[2011-04-06 15:28:08]  Extension Changed 6002[default-local] new state Idle for Notify User 6010
[2011-04-06 15:28:08]  Extension Changed 6002[default-local] new state Idle for Notify User 6001

Last lines from /var/log/asterisk/queue_log
1302117912|1302117904.51|default-sales|NONE|ENTERQUEUE||6002
1302117912|1302117904.51|default-sales|NONE|EXITUNAVAIL|1|1|0

By: David Brillert (aragon) 2011-04-06 14:46:32

I assume exitempty refers to no agent logged to the queue.
I assume exitunavail refers to no agents available in queue.
Both conditions write EXITUNAVAIL to queue_log
voip-info.org search results "Your search - EXITUNAVAIL - did not match any documents."

If condition is true for leavewhenempty = yes
It seems to me that no agents logged should write EXITEMPTY
All agents paused should write EXITUNAVAIL

So I ran another test by logging agent 1 to ext 6010 and pausing the agent to make unavailable.

Extension 6002 dials queue ext 6500 while agent 1 is paused.

queues.conf
[default-sales]
music = default
strategy = rrmemory
servicelevel = 25
context = default-aa-servicemainmenubutton1englishsubmenu
timeout = 15
retry = 5
maxlen =
weight = 0
reportholdtime = no
reportwaitcall = no
memberdelay = 0
timeoutrestart = no
autofill = yes
autopause = no
ringinuse = no
setinterfacevar = yes
wrapuptime =
joinempty = strict
leavewhenempty = yes
eventwhencalled = vars
eventmemberstatus = yes
monitor-format = wav49
monitor-type = MixMonitor
queue-youarenext = queue-youarenext
queue-thereare = queue-thereare
queue-callswaiting = queue-callswaiting
queue-holdtime = queue-holdtime
queue-minutes = queue-minutes
queue-seconds = queue-seconds
queue-thankyou = queue-thankyou
queue-lessthan = queue-less-than

lab*CLI> show queues
default      has 0 calls (max unlimited) in 'ringall' strategy (0s holdtime), W:0, C:0, A:0, SL:0.0% within 0s
  No Members
  No Callers

default-orde has 0 calls (max unlimited) in 'rrmemory' strategy (0s holdtime), W:0, C:0, A:0, SL:0.0% within 60s
  No Members
  No Callers

default-sale has 0 calls (max unlimited) in 'rrmemory' strategy (0s holdtime), W:0, C:0, A:0, SL:0.0% within 25s
  Members:
     Local/6010@default-agent/n (dynamic) (paused) (Not in use) has taken no calls yet
  No Callers

default-serv has 0 calls (max unlimited) in 'rrmemory' strategy (0s holdtime), W:0, C:0, A:0, SL:0.0% within 10s
  No Members
  No Callers

[2011-04-06 15:39:33]     -- Executing [6500@default-super:1] Set("SIP/6002-00000027", "LOCAL_EXTEN=6500") in new stack
[2011-04-06 15:39:33]     -- Executing [6500@default-super:2] Gosub("SIP/6002-00000027", "all-local-extension|s|1") in new stack
[2011-04-06 15:39:33]     -- Executing [s@all-local-extension:1] Set("SIP/6002-00000027", "__PICKUPMARK=6500") in new stack
[2011-04-06 15:39:33]     -- Executing [s@all-local-extension:2] GotoIf("SIP/6002-00000027", "0?4") in new stack
[2011-04-06 15:39:33]     -- Executing [s@all-local-extension:3] Set("SIP/6002-00000027", "GROUP(OUTGOING)=6002") in new stack
[2011-04-06 15:39:33]     -- Executing [s@all-local-extension:4] Set("SIP/6002-00000027", "OUTBOUND_GROUP_ONCE=6500@INCOMING") in new stack
[2011-04-06 15:39:33]     -- Executing [s@all-local-extension:5] GotoIf("SIP/6002-00000027", "1?8") in new stack
[2011-04-06 15:39:33]     -- Goto (all-local-extension,s,8)
[2011-04-06 15:39:33]     -- Executing [s@all-local-extension:8] Return("SIP/6002-00000027", "") in new stack
[2011-04-06 15:39:33]     -- Executing [6500@default-super:3] Ringing("SIP/6002-00000027", "") in new stack
[2011-04-06 15:39:33]     -- Executing [6500@default-super:4] Goto("SIP/6002-00000027", "default-aa-followme-6500|s|1") in new stack
[2011-04-06 15:39:33]     -- Goto (default-aa-followme-6500,s,1)
[2011-04-06 15:39:33]     -- Executing [s@default-aa-followme-6500:1] Set("SIP/6002-00000027", "GLOBAL(__SCREEN_EXTENSION)=DEFAULT_ONCALL_6500") in new stack
[2011-04-06 15:39:33]   == Setting global variable '__SCREEN_EXTENSION' to 'DEFAULT_ONCALL_6500'
[2011-04-06 15:39:33]     -- Executing [s@default-aa-followme-6500:2] Set("SIP/6002-00000027", "__FOLLOWME=YES") in new stack
[2011-04-06 15:39:33]     -- Executing [s@default-aa-followme-6500:3] Set("SIP/6002-00000027", "QUEUE_PRIO=0") in new stack
[2011-04-06 15:39:33]     -- Executing [s@default-aa-followme-6500:4] Gosub("SIP/6002-00000027", "default-application-acd-sales|s|1") in new stack
[2011-04-06 15:39:33]     -- Executing [s@default-application-acd-sales:1] Set("SIP/6002-00000027", "AUDIOHOOK_INHERIT(MixMonitor)=yes") in new stack
[2011-04-06 15:39:33]  Extension Changed 6002[default-local] new state InUse for Notify User 6002
[2011-04-06 15:39:33]  Extension Changed 6002[default-local] new state InUse for Notify User 6010
[2011-04-06 15:39:33]  Extension Changed 6002[default-local] new state InUse for Notify User 6001
[2011-04-06 15:39:33]     -- Executing [s@default-application-acd-sales:2] NoOp("SIP/6002-00000027", ""=== START QUEUE (default-sales) ==="") in new stack
[2011-04-06 15:39:33]     -- Executing [s@default-application-acd-sales:3] Set("SIP/6002-00000027", "__QUEUENAME=default-sales") in new stack
[2011-04-06 15:39:33]     -- Executing [s@default-application-acd-sales:4] GotoIf("SIP/6002-00000027", "0?7") in new stack
[2011-04-06 15:39:33]     -- Executing [s@default-application-acd-sales:5] Set("SIP/6002-00000027", "MONITOR_FILENAME=1302118773.57") in new stack
[2011-04-06 15:39:33]     -- Executing [s@default-application-acd-sales:6] Goto("SIP/6002-00000027", "8") in new stack
[2011-04-06 15:39:33]     -- Goto (default-application-acd-sales,s,8)
[2011-04-06 15:39:33]     -- Executing [s@default-application-acd-sales:8] Set("SIP/6002-00000027", "TIMEOUT(digit)=1") in new stack
[2011-04-06 15:39:33]     -- Digit timeout set to 1
[2011-04-06 15:39:33]     -- Executing [s@default-application-acd-sales:9] Set("SIP/6002-00000027", "TIMEOUT(response)=1") in new stack
[2011-04-06 15:39:33]     -- Response timeout set to 1
[2011-04-06 15:39:33]     -- Executing [s@default-application-acd-sales:10] BackGround("SIP/6002-00000027", "custom/0001") in new stack
[2011-04-06 15:39:33]     -- <SIP/6002-00000027> Playing 'custom/0001' (language 'en')
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:11] Set("SIP/6002-00000027", "__ACD_TO_OUTGOING=1") in new stack
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:12] Set("SIP/6002-00000027", "CHANNEL(musicclass)=default") in new stack
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:13] Set("SIP/6002-00000027", "__ALLOW_TRANSFER=twk") in new stack
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:14] Set("SIP/6002-00000027", "CALLERID(name)=SALES:Reception 6002") in new stack
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:15] Queue("SIP/6002-00000027", "default-sales|tH|||30|") in new stack
[2011-04-06 15:39:41] WARNING[30839]: app_queue.c:4304 queue_exec: Unable to join queue 'default-sales'
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:16] NoOp("SIP/6002-00000027", "JOINUNAVAIL") in new stack
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:17] GotoIf("SIP/6002-00000027", "0?18:20") in new stack
[2011-04-06 15:39:41]     -- Goto (default-application-acd-sales,s,20)
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:20] GotoIf("SIP/6002-00000027", "1?21:23") in new stack
[2011-04-06 15:39:41]     -- Goto (default-application-acd-sales,s,21)
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:21] QueueLog("SIP/6002-00000027", "default-sales|1302118773.57|NONE|ENTERQUEUE||6002") in new stack
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:22] QueueLog("SIP/6002-00000027", "default-sales|1302118773.57|NONE|EXITUNAVAIL|1|1|0") in new stack
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:23] GotoIf("SIP/6002-00000027", "0?24:26") in new stack
[2011-04-06 15:39:41]     -- Goto (default-application-acd-sales,s,26)
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:26] GotoIf("SIP/6002-00000027", "0?1000") in new stack
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:27] GotoIf("SIP/6002-00000027", "0?1000") in new stack
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:28] GotoIf("SIP/6002-00000027", "0?1000") in new stack
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:29] GotoIf("SIP/6002-00000027", "1?1000") in new stack
[2011-04-06 15:39:41]     -- Goto (default-application-acd-sales,s,1000)
[2011-04-06 15:39:41]     -- Executing [s@default-application-acd-sales:1000] Hangup("SIP/6002-00000027", "16") in new stack
[2011-04-06 15:39:41]   == Spawn extension (default-application-acd-sales, s, 1000) exited non-zero on 'SIP/6002-00000027'
[2011-04-06 15:39:41]     -- Executing [h@default-application-acd-sales:1] Goto("SIP/6002-00000027", "all-hangup|s|1") in new stack
[2011-04-06 15:39:41]     -- Goto (all-hangup,s,1)
[2011-04-06 15:39:41]     -- Executing [s@all-hangup:1] GotoIf("SIP/6002-00000027", "0?all-faxnotify|s|1:2") in new stack
[2011-04-06 15:39:41]     -- Goto (all-hangup,s,2)
[2011-04-06 15:39:41]     -- Executing [s@all-hangup:2] ResetCDR("SIP/6002-00000027", "w") in new stack
[2011-04-06 15:39:41]     -- Executing [s@all-hangup:3] NoCDR("SIP/6002-00000027", "") in new stack

last lines in /var/log/asterisk/queue_log
1302118781|1302118773.57|default-sales|NONE|ENTERQUEUE||6002
1302118781|1302118773.57|default-sales|NONE|EXITUNAVAIL|1|1|0

By: Jonathan Rose (jrose) 2011-04-07 14:11:33

leavewhenempty uses the same settings as joinwhenempty...

; This setting controls whether callers can join a queue with no members. There
; are three choices:
;
; yes    - callers can join a queue with no members or only unavailable members
; no     - callers cannot join a queue with no members
; strict - callers cannot join a queue with no members or only unavailable
;          members


I haven't tested it a lot, but when I did get the result I expected, I used...

leavewhenempty = strict

the terminology is weird, but it seems to me like saying "yes" will actually make it just stick around and no will make it quit only if there aren't any members in the queue.


EDIT:  I have to make a small correction to this after some more testing.  leavewhenempty is just like joinempty for options with the exception that "yes" and "no" are reversed, which makes sense in context with the name of the option, but is perhaps a little confusing when considering joinempty sharing the same option names.

Anyway, set it (leavewhenempty) to strict and your problems should go away.  Having it as "yes" makes unavail the only plausible scenario since if there are agents attached to the queue but not logged in, they'll just continue to sit there until they either hang up or time out.

When it's paused, the agent is just considered unavailable.  If the agent isn't logged in at all, that's different.  The easier way to check this out would have been to log off with the agent, but then nothing would have happened when you did that since you had leavewhenempty set to yes.



By: David Brillert (aragon) 2011-04-08 09:16:23

I have no issue with the way the caller is treated by Asterisk.
As far as I am concerned the caller should not enter the queue if all agents are paused.  I consider this queue to be unavailable in this scenario and I expect and Asterisk does write EXITUNAVAIL to the queue_log file.
If no agents are logged to this queue the queue is also unavailable to the caller except when the caller is forced out of the queue I would expect EXITEMPTY to be written to the queue_log file.  EXITEMPTY is never written to the queue_log file.  The result is that agent statistical reports are never able to differentiate caller overflow between all agents paused Vs. no agents logged since EXITUNAVAIL is written to queue_log in both scenarios.  Obviously the two scenarios are different.  Queue empty is not the same as all members paused.  I just want Asterisk to write EXITEMPTY to the queue_log file when a caller is forced to exit due to no agents logged.

I also tested leavwhenempty=strict
The result:
All members paused writes EXITEMPTY to queue_log file
No members logged writes EXITEMPTY to queue_log file

In this case I would expect all members paused to write EXITUNAVAIL to queue_log file.

I also tested leavewhenempty=strict in combination with joinempty=yes
This writes EXITEMPTY in both scenarios.

I also tested leavewhenempty=strict in combination with joinempty=strict.
This writes EXITUNAVAIL in both scenarios

So Asterisk cannot seem to differentiate between all members paused Vs. no members logged to write correct value to queue_log.

By: David Brillert (aragon) 2011-04-08 09:19:55

Just finished testing joinempty=strict and leavewhenempty=no
This writes EXITUNAVAIL in both scenarios (no members Vs. all members paused)

By: David Brillert (aragon) 2011-04-08 09:22:19

Just finished testing joinempty=strict and leavewhenempty=yes
This writes EXITUNAVAIL in both scenarios (no members Vs. all members paused)

By: Jonathan Rose (jrose) 2011-04-08 16:19:51

Well, it isn't really a bug though.  It's strictly a matter of terminology.  And inside of Asterisk proper, the exit status is LEAVEUNAVAIL when someone gets ejected from a queue due to mass pausing, so that's what you'd normally expect right?

You can pretty easily perform a workaround simply by checking for that exist status and editing the log yourself using a shell command cat with append for the log file in question if it encounters ${QUEUESTATUS} == LEAVEUNAVAIL.

If you want to pursue this further, please create a new issue with... I'd guess text as the severity.