Hi Michael I has created modified version of switch_load_timezones function in attached file. I has make first step - "swap out the pointers", but do know not how to make correctly thread synchronization. Can you give me reference to function and source file where located mutex protection of dialplan reload? I has read apr_thread_mutex_lock and apr_thread_rwlock_rdlock functions description apr_thread_mutex_lock http://apr.apache.org/docs/apr/1.3/group__apr__thread__mutex.html#g1430fd10d... apr_thread_rwlock_rdlock http://apr.apache.org/docs/apr/1.4/group__apr__thread__rwlock.html#gad44a106... May be usage switch_thread_rwlock_t datatype and switch_thread_rwlock_rdlock function will be more featured? This allow multiple threads make switch_lookup_timezone. On Tue, Mar 3, 2015 at 10:20 PM, Michael Jerris <mike@jerris.com> wrote:
yes it will require code changes there. I wouldn't make an idle loop tho. I would do something to swap out the pointers with the new ones and protect it all with a mutex. I think we do something similar with dialplan reload.
On Mar 3, 2015, at 1:35 PM, Sergey Safarov <s.safarov@gmail.com> wrote:
Will it help addition of the configuration update flag of module CORE_SOFTTIMER_MODULE. And to add idle loop 'into the function switch_lookup_timezone until 'update is complete?
On Tue, Mar 3, 2015 at 7:21 PM, Michael Jerris <mike@jerris.com> wrote:
That is ALWAYS loaded before any other modules, so that not being loaded after. Whats happening here, is the reload signal triggers the timezones to reload asynchronously. This will require a code change to swap those out in some way that doesn't leave them empty for a short period, properly protected against race conditions. This code is in switch_time.c.
On Mar 3, 2015, at 10:41 AM, Sergey Safarov <s.safarov@gmail.com> wrote:
Please help me declare module dependency I has extended module radius_cdr by timezone support and from time to time is getting following error
freeswitch@internal> reload mod_radius_cdr +OK Reloading XML +OK module unloaded +OK module loaded
2015-03-03 18:35:34.543407 [CONSOLE] switch_loadable_module.c:1935 Stopping: mod_radius_cdr 2015-03-03 18:35:34.543407 [CONSOLE] switch_loadable_module.c:1955 mod_radius_cdr unloaded. 2015-03-03 18:35:34.543407 [INFO] mod_enum.c:880 ENUM Reloaded 2015-03-03 18:35:34.543407 [ERR] switch_time.c:1324 Timezone 'Asia/Tokyo' not found! 2015-03-03 18:35:34.543407 [ERR] mod_radius_cdr.c:992 Cannot find timezone Asia/Tokyo , Setting timezone to GMT 2015-03-03 18:35:34.543407 [CONSOLE] switch_loadable_module.c:1465 Successfully Loaded [mod_radius_cdr] 2015-03-03 18:35:34.543407 [INFO] switch_time.c:1369 Timezone reloaded 1781 definitions
Module currently depend of loaded configuradion of CORE_SOFTTIMER_MODULE but mod_radius_cdr loaded before loaded CORE_SOFTTIMER_MODULE configuration.
How can I make sure that CORE_SOFTTIMER_MODULE configuration is loaded before mod_radius_cdr?
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
Official FreeSWITCH Sites http://www.freeswitch.org http://confluence.freeswitch.org http://www.cluecon.com
FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org