Summary:ASTERISK-09145: Dynamic queue members marked invalid after asterisk is restarted
Reporter:hedge77 (hedge77)Labels:
Date Opened:2007-03-29 16:17:16Date Closed:2011-06-07 14:02:42
Versions:Frequency of
Description:persistentmembers = yes in queues.conf.  Members are added to the queue with


and are present with a 'queue show' in the CLI.  Calls into the queue are routed properly.

After restarting asterisk (via CLI restart or restarting system) the queue members are automatically reloaded, but they appear to be invalid.  'queue show':

Local/104@staff-queue with penalty 10 (dynamic) (Invalid) has taken no calls yet

Callers go into the queue, but the member phones never ring.  Issuing a 'reload' command from the CLI or manager interface causes the member to be marked as not in use instead of invalid, and the call completes normally.

****** STEPS TO REPRODUCE ******

add dynamic queue member with persistentmembers set to yes
do a restart (now or gracefully) from the CLI
restart the CLI and do a queue show
Comments:By: hedge77 (hedge77) 2007-04-02 14:51:50

I just tested it and a 'module reload app_queue.so' also clears the problem.

By: Chad Wallace (cmdrwalrus) 2007-04-10 09:52:07

I am experiencing this problem as well.  We just upgraded Asterisk to 1.4.2 from 1.2, and noticed that agents don't receive calls after a reboot until they log out and then log back in.

Given that reloading app_queue fixes it, I guess it is probably caused by app_queue needing to be loaded after something else...  perhaps chan_local?  

I can't test this right now since the system is currently in use.  If I get a chance in the near future, I'll try moving the "load=chan_local.so" line above the "load=app_queue.so" line and see if that fixes it.

By: Joshua C. Colp (jcolp) 2007-04-11 12:17:54

This is a simple module loading ordering issue. You must ensure stuff is loaded in the following order if doing this:

1. pbx_config.so and/or pbx_ael.so
2. chan_local.so
3. app_queue.so

That will ensure your dialplan is loaded so chan_local can see it, and ensures chan_local will exist before app_queue tries to query it.