[Freeswitch-users] module dependency

Michael Jerris mike at jerris.com
Mon Mar 9 16:55:15 MSK 2015


Yes, i would use read/write locks.  The switch_thread ones are the right ones to use.

> On Mar 9, 2015, at 6:13 AM, Sergey Safarov <s.safarov at gmail.com> wrote:
> 
> 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#g1430fd10d8d260c0e3832c959742a977 <http://apr.apache.org/docs/apr/1.3/group__apr__thread__mutex.html#g1430fd10d8d260c0e3832c959742a977>
> apr_thread_rwlock_rdlock  http://apr.apache.org/docs/apr/1.4/group__apr__thread__rwlock.html#gad44a106cd9a81eef362d31837ca7018f <http://apr.apache.org/docs/apr/1.4/group__apr__thread__rwlock.html#gad44a106cd9a81eef362d31837ca7018f>
> 
> 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 at jerris.com <mailto:mike at 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 at gmail.com <mailto:s.safarov at 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 at jerris.com <mailto:mike at 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 at gmail.com <mailto:s.safarov at 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 at 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?
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20150309/c6a26c5e/attachment-0001.html 


Join us at ClueCon 2016 Aug 8-12, 2016
More information about the FreeSWITCH-users mailing list