Hi Hung,

Reviewed the patch.
Ack.

/Neel.

On 2016/08/28 11:50 AM, Hung Nguyen wrote:
>   osaf/services/saf/immsv/config/immd.conf |  11 +++++++++++
>   osaf/services/saf/immsv/immd/immd_cb.h   |   1 +
>   osaf/services/saf/immsv/immd/immd_main.c |  18 +++++++++++++++---
>   3 files changed, 27 insertions(+), 3 deletions(-)
>
>
> Make veteran max wait configurable.
>
> diff --git a/osaf/services/saf/immsv/config/immd.conf 
> b/osaf/services/saf/immsv/config/immd.conf
> --- a/osaf/services/saf/immsv/config/immd.conf
> +++ b/osaf/services/saf/immsv/config/immd.conf
> @@ -54,5 +54,16 @@ export IMMSV_ENV_HEALTHCHECK_KEY="Defaul
>   # during IMMD absence is in essence only the reading of config data.
>   #export IMMSV_SC_ABSENCE_ALLOWED=900
>   
> +# Amount of seconds IMMD waits for veteran IMMNDs after sc absence.
> +# If IMMD processes the intro messages from new IMMNDs before the intro
> +# messages from veteran IMMNDs, IMM service will start to load from file
> +# instead of syncing data from veteran nodes.
> +# This timeout is for preventing that from happening.
> +# Note that during a fresh cluster startup, IMMD also waits for veteran 
> IMMNDs.
> +# Setting this value to large will slow down the cluster startup.
> +# This timeout only used with sc absence enabled. When sc absence is 
> disabled,
> +# IMMD will not wait for the veteran IMMNDs.
> +# The default value (when the environment variable is not set) is 3 seconds.
> +#export IMMSV_SC_ABSENCE_VETERAN_MAX_WAIT=3
>   
>   
> diff --git a/osaf/services/saf/immsv/immd/immd_cb.h 
> b/osaf/services/saf/immsv/immd/immd_cb.h
> --- a/osaf/services/saf/immsv/immd/immd_cb.h
> +++ b/osaf/services/saf/immsv/immd/immd_cb.h
> @@ -142,6 +142,7 @@ typedef struct immd_cb_tag {
>       SaUint16T mScAbsenceAllowed; /* Non zero if SC absence is allowed (loss 
> of both IMMDs/SCs).
>                                      Value is number of seconds of SC absence 
> tolerated. */
>       MDS_DEST payload_coord_dest; /* IMMND coord may be at payload if 
> mScAbsenceAllowed is nonzero */
> +     uint32_t mScAbsenceVeteranMaxWait; /* Amount of seconds IMMD waits for 
> veteran IMMDs after sc absence */
>   
>       NCS_LOCK veteran_sync_lock;   /* Sync up with veteran payload after 
> headless */
>       NCS_SEL_OBJ veteran_sync_sel; /* Sync up with veteran payload after 
> headless */
> diff --git a/osaf/services/saf/immsv/immd/immd_main.c 
> b/osaf/services/saf/immsv/immd/immd_main.c
> --- a/osaf/services/saf/immsv/immd/immd_main.c
> +++ b/osaf/services/saf/immsv/immd/immd_main.c
> @@ -234,10 +234,12 @@ uint32_t initialize_for_assignment(IMMD_
>   
>       if (cb->mScAbsenceAllowed && cb->ha_state == SA_AMF_HA_ACTIVE) {
>               /* If this IMMD has active role, wait for veteran payloads.
> -              * Give up after 3 seconds if there's no veteran payloads. */
> -             LOG_NO("Waiting 3 seconds to allow IMMND MDS attachments to get 
> processed.");
> +              * Give up after mScAbsenceVeteranMaxWait if there's no veteran 
> payloads. */
> +             uint32_t timeout_sec = immd_cb->mScAbsenceVeteranMaxWait;
> +             int sel_obj = m_GET_FD_FROM_SEL_OBJ(immd_cb->veteran_sync_sel);
> +             LOG_NO("Waiting %u seconds to allow IMMND MDS attachments to 
> get processed.", timeout_sec);
>   
> -             if 
> (osaf_poll_one_fd(m_GET_FD_FROM_SEL_OBJ(immd_cb->veteran_sync_sel), 3000) != 
> 1) {
> +             if (osaf_poll_one_fd(sel_obj, timeout_sec * 1000) != 1) {
>                       TRACE("osaf_poll_one_fd on veteran_sync_sel failed or 
> timed out");
>               } else {
>                       LOG_NO("Received intro message from veteran payload, 
> stop waiting");
> @@ -268,6 +270,7 @@ int main(int argc, char *argv[])
>       const int peerMaxWaitMin = 5; /*5 sec*/
>       const char * peerWaitStr = getenv("IMMSV_2PBE_PEER_SC_MAX_WAIT");
>       const char * absentScStr = getenv("IMMSV_SC_ABSENCE_ALLOWED");
> +     const char * veteranWaitStr = 
> getenv("IMMSV_SC_ABSENCE_VETERAN_MAX_WAIT");
>       int32_t timeout = (-1);
>       int32_t total_wait = (-1);
>       int64_t start_time = 0LL;
> @@ -284,6 +287,15 @@ int main(int argc, char *argv[])
>               }
>       }
>   
> +     if (veteranWaitStr) {
> +             immd_cb->mScAbsenceVeteranMaxWait = atoi(veteranWaitStr);
> +             if(!immd_cb->mScAbsenceVeteranMaxWait) {
> +                     LOG_WA("IMMSV_SC_ABSENCE_VETERAN_MAX_WAIT 
> malconfigured: '%s'", veteranWaitStr);
> +             }
> +     } else {
> +             immd_cb->mScAbsenceVeteranMaxWait = 3; /* Default is 3 seconds 
> */
> +     }
> +
>       if(peerWaitStr) {
>               int32_t peerMaxWait = atoi(peerWaitStr);
>               if(peerMaxWait < peerMaxWaitMin) {


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to