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