Re: [devel] [PATCH 2 of 2] AMFD: Fix double start timer of AVD_TMR_CL_INIT [#2036]

2016-09-27 Thread praveen malviya
Hi Gary/Minh,

I think, comments can be taken up as a part of refactoring later.
Ack from me, for both the patches.

Thanks,
Praveen

On 23-Sep-16 5:33 AM, Minh Hon Chau wrote:
>  osaf/services/saf/amf/amfd/include/timer.h |  1 -
>  1 files changed, 0 insertions(+), 1 deletions(-)
>
>
> Since the AVD_TMR_CL_INIT can be started/restarted to wait for all SU 
> presence state
> synchronization, so m_AVD_CLINIT_TMR_START could not always be called as the 
> first start. As
> a result, due to @is_active is set to false before start timer, therefore the 
> timer can be
> restarted without stop in advance. It appears a warning as below
>
> Sep 22 22:08:22.640710 osafamfd [477:timer.cc:0066] TEST >> avd_start_tmr: 1
> Sep 22 22:08:22.640717 osafamfd [477:sysf_tmr.c:0690] TR IN LEAP_DBG_SINK
> Sep 22 22:08:22.640758 osafamfd [477:timer.cc:0096] << avd_start_tmr
>
> Patch removes setting @is_active to false in m_AVD_CLINIT_TMR_START
>
> diff --git a/osaf/services/saf/amf/amfd/include/timer.h 
> b/osaf/services/saf/amf/amfd/include/timer.h
> --- a/osaf/services/saf/amf/amfd/include/timer.h
> +++ b/osaf/services/saf/amf/amfd/include/timer.h
> @@ -65,7 +65,6 @@ typedef struct avd_tmr_tag {
>  #define m_AVD_CLINIT_TMR_START(cb) \
>  {\
>   saflog(LOG_NOTICE, amfSvcUsrName, "Starting cluster startup timer"); \
> - cb->amf_init_tmr.is_active = false; \
>   cb->amf_init_tmr.type = AVD_TMR_CL_INIT; \
>   avd_start_tmr(cb,&(cb->amf_init_tmr), 
> avd_cluster->saAmfClusterStartupTimeout); \
>  }
>

--
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 2 of 2] AMFD: Fix double start timer of AVD_TMR_CL_INIT [#2036]

2016-09-23 Thread minh chau
Hi Nagu,

Please let me know what particular thing that concerns you with (1), or 
do you agree if I do like (2)?

Thanks,
Minh

On 23/09/16 16:27, minh chau wrote:
> Hi Nagu,
>
> The macro m_AVD_CLINIT_TMR_START has the setting *is_active = false*, 
> so if this macro is called again without checking timer status, then 
> amf_init_tmr will be started again while the same instance of this 
> timer could be running.
> In the fix of #1988, I could not reuse this macro and had to manually 
> start/stop this timer. But #1988 is in context of headless feature 
> only, so it would not cause any problem because m_AVD_CLINIT_TMR_START 
> is always called first.
> Now in #2063 which has roaming feature enabled, m_AVD_CLINIT_TMR_START 
> is not always called first. The first instance of amf_init_tmr is 
> started in avd_node_up_evh(), because leds state of amfnd in active 
> promoted SC is green (true). Then, m_AVD_CLINIT_TMR_START get hit 
> after 2N Opensaf SU (in promoted SC) is assigned ACTIVE.
> So, to fix the problem in #2063, I do either (1) or (2):
> (1). As in this patch, remove *is_active = false* in 
> m_AVD_CLINIT_TMR_START
> (2). Before call m_AVD_CLINIT_TMR_START, need to stop this timer if 
> it's running, likely:
> diff --git a/osaf/services/saf/amf/amfd/ndfsm.cc 
> b/osaf/services/saf/amf/amfd/ndfsm.cc
> --- a/osaf/services/saf/amf/amfd/ndfsm.cc
> +++ b/osaf/services/saf/amf/amfd/ndfsm.cc
> @@ -570,6 +570,8 @@ void avd_nd_ncs_su_assigned(AVD_CL_CB *c
> cb->init_state = AVD_INIT_DONE;
>
> /* start the cluster init timer. */
> +   if (cb->amf_init_tmr.is_active == true)
> +   avd_stop_tmr(cb, &cb->amf_init_tmr);
> m_AVD_CLINIT_TMR_START(cb);
> }
>
> I think (1) is reasonable, the is_active could not be forced to be 
> false before starting timer regardless actual status of timer. The 
> current *is_active = false* in macro, I think it was meant as an 
> initial setting, so it'd better be done somewhere in initialize(void), 
> similarly as
> cb->heartbeat_tmr.is_active = false;
>
> Do you agree if I also add *cb->amf_init_tmr.is_active = false* in 
> initialize(void)?
>
> Thanks,
> Minh
>
> On 23/09/16 15:46, Nagendra Kumar wrote:
>> Please don't change anything in this function. Please stop and start 
>> the timer or write a function if needed.
>>
>> Thanks
>> -Nagu
>>> -Original Message-
>>> From: Minh Hon Chau [mailto:minh.c...@dektech.com.au]
>>> Sent: 23 September 2016 05:33
>>> To: hans.nordeb...@ericsson.com; Nagendra Kumar; Praveen Malviya;
>>> gary@dektech.com.au; long.hb.ngu...@dektech.com.au;
>>> minh.c...@dektech.com.au
>>> Cc: opensaf-devel@lists.sourceforge.net
>>> Subject: [PATCH 2 of 2] AMFD: Fix double start timer of AVD_TMR_CL_INIT
>>> [#2036]
>>>
>>>   osaf/services/saf/amf/amfd/include/timer.h |  1 -
>>>   1 files changed, 0 insertions(+), 1 deletions(-)
>>>
>>>
>>> Since the AVD_TMR_CL_INIT can be started/restarted to wait for all SU
>>> presence state
>>> synchronization, so m_AVD_CLINIT_TMR_START could not always be called
>>> as the first start. As
>>> a result, due to @is_active is set to false before start timer, 
>>> therefore the
>>> timer can be
>>> restarted without stop in advance. It appears a warning as below
>>>
>>> Sep 22 22:08:22.640710 osafamfd [477:timer.cc:0066] TEST >>
>>> avd_start_tmr: 1
>>> Sep 22 22:08:22.640717 osafamfd [477:sysf_tmr.c:0690] TR IN
>>> LEAP_DBG_SINK
>>> Sep 22 22:08:22.640758 osafamfd [477:timer.cc:0096] << avd_start_tmr
>>>
>>> Patch removes setting @is_active to false in m_AVD_CLINIT_TMR_START
>>>
>>> diff --git a/osaf/services/saf/amf/amfd/include/timer.h
>>> b/osaf/services/saf/amf/amfd/include/timer.h
>>> --- a/osaf/services/saf/amf/amfd/include/timer.h
>>> +++ b/osaf/services/saf/amf/amfd/include/timer.h
>>> @@ -65,7 +65,6 @@ typedef struct avd_tmr_tag {
>>>   #define m_AVD_CLINIT_TMR_START(cb) \
>>>   {\
>>>   saflog(LOG_NOTICE, amfSvcUsrName, "Starting cluster startup
>>> timer"); \
>>> -cb->amf_init_tmr.is_active = false; \
>>>   cb->amf_init_tmr.type = AVD_TMR_CL_INIT; \
>>>   avd_start_tmr(cb,&(cb->amf_init_tmr), avd_cluster-
 saAmfClusterStartupTimeout); \
>>>   }
>


--
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 2 of 2] AMFD: Fix double start timer of AVD_TMR_CL_INIT [#2036]

2016-09-22 Thread minh chau
Hi Nagu,

The macro m_AVD_CLINIT_TMR_START has the setting *is_active = false*, so 
if this macro is called again without checking timer status, then 
amf_init_tmr will be started again while the same instance of this timer 
could be running.
In the fix of #1988, I could not reuse this macro and had to manually 
start/stop this timer. But #1988 is in context of headless feature only, 
so it would not cause any problem because m_AVD_CLINIT_TMR_START is 
always called first.
Now in #2063 which has roaming feature enabled, m_AVD_CLINIT_TMR_START 
is not always called first. The first instance of amf_init_tmr is 
started in avd_node_up_evh(), because leds state of amfnd in active 
promoted SC is green (true). Then, m_AVD_CLINIT_TMR_START get hit after 
2N Opensaf SU (in promoted SC) is assigned ACTIVE.
So, to fix the problem in #2063, I do either (1) or (2):
(1). As in this patch, remove *is_active = false* in m_AVD_CLINIT_TMR_START
(2). Before call m_AVD_CLINIT_TMR_START, need to stop this timer if it's 
running, likely:
diff --git a/osaf/services/saf/amf/amfd/ndfsm.cc 
b/osaf/services/saf/amf/amfd/ndfsm.cc
--- a/osaf/services/saf/amf/amfd/ndfsm.cc
+++ b/osaf/services/saf/amf/amfd/ndfsm.cc
@@ -570,6 +570,8 @@ void avd_nd_ncs_su_assigned(AVD_CL_CB *c
 cb->init_state = AVD_INIT_DONE;

 /* start the cluster init timer. */
+   if (cb->amf_init_tmr.is_active == true)
+   avd_stop_tmr(cb, &cb->amf_init_tmr);
 m_AVD_CLINIT_TMR_START(cb);
 }

I think (1) is reasonable, the is_active could not be forced to be false 
before starting timer regardless actual status of timer. The current 
*is_active = false* in macro, I think it was meant as an initial 
setting, so it'd better be done somewhere in initialize(void), similarly as
 cb->heartbeat_tmr.is_active = false;

Do you agree if I also add *cb->amf_init_tmr.is_active = false* in 
initialize(void)?

Thanks,
Minh

On 23/09/16 15:46, Nagendra Kumar wrote:
> Please don't change anything in this function. Please stop and start the 
> timer or write a function  if needed.
>
> Thanks
> -Nagu
>> -Original Message-
>> From: Minh Hon Chau [mailto:minh.c...@dektech.com.au]
>> Sent: 23 September 2016 05:33
>> To: hans.nordeb...@ericsson.com; Nagendra Kumar; Praveen Malviya;
>> gary@dektech.com.au; long.hb.ngu...@dektech.com.au;
>> minh.c...@dektech.com.au
>> Cc: opensaf-devel@lists.sourceforge.net
>> Subject: [PATCH 2 of 2] AMFD: Fix double start timer of AVD_TMR_CL_INIT
>> [#2036]
>>
>>   osaf/services/saf/amf/amfd/include/timer.h |  1 -
>>   1 files changed, 0 insertions(+), 1 deletions(-)
>>
>>
>> Since the AVD_TMR_CL_INIT can be started/restarted to wait for all SU
>> presence state
>> synchronization, so m_AVD_CLINIT_TMR_START could not always be called
>> as the first start. As
>> a result, due to @is_active is set to false before start timer, therefore the
>> timer can be
>> restarted without stop in advance. It appears a warning as below
>>
>> Sep 22 22:08:22.640710 osafamfd [477:timer.cc:0066] TEST >>
>> avd_start_tmr: 1
>> Sep 22 22:08:22.640717 osafamfd [477:sysf_tmr.c:0690] TR IN
>> LEAP_DBG_SINK
>> Sep 22 22:08:22.640758 osafamfd [477:timer.cc:0096] << avd_start_tmr
>>
>> Patch removes setting @is_active to false in m_AVD_CLINIT_TMR_START
>>
>> diff --git a/osaf/services/saf/amf/amfd/include/timer.h
>> b/osaf/services/saf/amf/amfd/include/timer.h
>> --- a/osaf/services/saf/amf/amfd/include/timer.h
>> +++ b/osaf/services/saf/amf/amfd/include/timer.h
>> @@ -65,7 +65,6 @@ typedef struct avd_tmr_tag {
>>   #define m_AVD_CLINIT_TMR_START(cb) \
>>   {\
>>  saflog(LOG_NOTICE, amfSvcUsrName, "Starting cluster startup
>> timer"); \
>> -cb->amf_init_tmr.is_active = false; \
>>  cb->amf_init_tmr.type = AVD_TMR_CL_INIT; \
>>  avd_start_tmr(cb,&(cb->amf_init_tmr), avd_cluster-
>>> saAmfClusterStartupTimeout); \
>>   }


--
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


Re: [devel] [PATCH 2 of 2] AMFD: Fix double start timer of AVD_TMR_CL_INIT [#2036]

2016-09-22 Thread Nagendra Kumar
Please don't change anything in this function. Please stop and start the timer 
or write a function  if needed.

Thanks
-Nagu
> -Original Message-
> From: Minh Hon Chau [mailto:minh.c...@dektech.com.au]
> Sent: 23 September 2016 05:33
> To: hans.nordeb...@ericsson.com; Nagendra Kumar; Praveen Malviya;
> gary@dektech.com.au; long.hb.ngu...@dektech.com.au;
> minh.c...@dektech.com.au
> Cc: opensaf-devel@lists.sourceforge.net
> Subject: [PATCH 2 of 2] AMFD: Fix double start timer of AVD_TMR_CL_INIT
> [#2036]
> 
>  osaf/services/saf/amf/amfd/include/timer.h |  1 -
>  1 files changed, 0 insertions(+), 1 deletions(-)
> 
> 
> Since the AVD_TMR_CL_INIT can be started/restarted to wait for all SU
> presence state
> synchronization, so m_AVD_CLINIT_TMR_START could not always be called
> as the first start. As
> a result, due to @is_active is set to false before start timer, therefore the
> timer can be
> restarted without stop in advance. It appears a warning as below
> 
> Sep 22 22:08:22.640710 osafamfd [477:timer.cc:0066] TEST >>
> avd_start_tmr: 1
> Sep 22 22:08:22.640717 osafamfd [477:sysf_tmr.c:0690] TR IN
> LEAP_DBG_SINK
> Sep 22 22:08:22.640758 osafamfd [477:timer.cc:0096] << avd_start_tmr
> 
> Patch removes setting @is_active to false in m_AVD_CLINIT_TMR_START
> 
> diff --git a/osaf/services/saf/amf/amfd/include/timer.h
> b/osaf/services/saf/amf/amfd/include/timer.h
> --- a/osaf/services/saf/amf/amfd/include/timer.h
> +++ b/osaf/services/saf/amf/amfd/include/timer.h
> @@ -65,7 +65,6 @@ typedef struct avd_tmr_tag {
>  #define m_AVD_CLINIT_TMR_START(cb) \
>  {\
>   saflog(LOG_NOTICE, amfSvcUsrName, "Starting cluster startup
> timer"); \
> - cb->amf_init_tmr.is_active = false; \
>   cb->amf_init_tmr.type = AVD_TMR_CL_INIT; \
>   avd_start_tmr(cb,&(cb->amf_init_tmr), avd_cluster-
> >saAmfClusterStartupTimeout); \
>  }

--
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 2 of 2] AMFD: Fix double start timer of AVD_TMR_CL_INIT [#2036]

2016-09-22 Thread Minh Hon Chau
 osaf/services/saf/amf/amfd/include/timer.h |  1 -
 1 files changed, 0 insertions(+), 1 deletions(-)


Since the AVD_TMR_CL_INIT can be started/restarted to wait for all SU presence 
state
synchronization, so m_AVD_CLINIT_TMR_START could not always be called as the 
first start. As
a result, due to @is_active is set to false before start timer, therefore the 
timer can be
restarted without stop in advance. It appears a warning as below

Sep 22 22:08:22.640710 osafamfd [477:timer.cc:0066] TEST >> avd_start_tmr: 1
Sep 22 22:08:22.640717 osafamfd [477:sysf_tmr.c:0690] TR IN LEAP_DBG_SINK
Sep 22 22:08:22.640758 osafamfd [477:timer.cc:0096] << avd_start_tmr

Patch removes setting @is_active to false in m_AVD_CLINIT_TMR_START

diff --git a/osaf/services/saf/amf/amfd/include/timer.h 
b/osaf/services/saf/amf/amfd/include/timer.h
--- a/osaf/services/saf/amf/amfd/include/timer.h
+++ b/osaf/services/saf/amf/amfd/include/timer.h
@@ -65,7 +65,6 @@ typedef struct avd_tmr_tag {
 #define m_AVD_CLINIT_TMR_START(cb) \
 {\
saflog(LOG_NOTICE, amfSvcUsrName, "Starting cluster startup timer"); \
-   cb->amf_init_tmr.is_active = false; \
cb->amf_init_tmr.type = AVD_TMR_CL_INIT; \
avd_start_tmr(cb,&(cb->amf_init_tmr), 
avd_cluster->saAmfClusterStartupTimeout); \
 }

--
___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel