ack, code review only. /Thanks HansN

On 05/04/2015 12:10 PM, [email protected] wrote:
>   osaf/services/saf/amf/amfnd/chc.cc  |   2 +-
>   osaf/services/saf/amf/amfnd/hcdb.cc |  12 +++++++++---
>   2 files changed, 10 insertions(+), 4 deletions(-)
>
>
> saAmfHealthcheckStart() API fails with SA_AIS_ERR_NOT_EXIST in the reported 
> case.
>
> In the reported case, Application is up with 2 SUs with one component in each 
> SU.
> Each component belongs to same component type.HealtchCheckKey is configured 
> for
> component type. Now, dynamically, a SU is added in the system having one 
> component
> of same component type and a different health check key is configured for the 
> same
> component type. When this SU is unlocked, saAmfHealthcheckStart() API fails 
> with
> SA_AIS_ERR_NOT_EXIST. Why  ? As a part of dynamic addition of SU, AMFND reads 
> SU
> configuration from IMM. While reading information for healthCheckType,
> AMFND reads all keys again for the same compType and try to create again 
> record for
> it. Since record already exists in its database, record is not added in 
> database and
> at this error AMF does not continue to read other healthCheckType from 
> IMM.AMFND must
> skip creating existing records and must continue to read other records from 
> IMM.
>
>
> Patch ensures that AMFND first checks if record already exists in its 
> database. It creates
> record only if it does not exists. Thus error situation while addition of 
> record is avoided
> and all records are read.
>
> diff --git a/osaf/services/saf/amf/amfnd/chc.cc 
> b/osaf/services/saf/amf/amfnd/chc.cc
> --- a/osaf/services/saf/amf/amfnd/chc.cc
> +++ b/osaf/services/saf/amf/amfnd/chc.cc
> @@ -100,7 +100,7 @@ uint32_t avnd_evt_ava_hc_start_evh(AVND_
>       }
>       /* validate the healthcheck start message */
>       avnd_comp_hc_param_val(cb, AVSV_AMF_HC_START, (uint8_t *)hc_start, 
> &comp, 0, &amf_rc);
> -
> +     TRACE_1("sending response:%d",amf_rc);
>       /* send the response back to AvA */
>       rc = avnd_amf_resp_send(cb, AVSV_AMF_HC_START, amf_rc, 0, 
> &api_info->dest, &evt->mds_ctxt, comp, msg_from_avnd);
>   
> diff --git a/osaf/services/saf/amf/amfnd/hcdb.cc 
> b/osaf/services/saf/amf/amfnd/hcdb.cc
> --- a/osaf/services/saf/amf/amfnd/hcdb.cc
> +++ b/osaf/services/saf/amf/amfnd/hcdb.cc
> @@ -326,9 +326,15 @@ SaAisErrorT avnd_hctype_config_get(SaImm
>       while (immutil_saImmOmSearchNext_2(searchHandle, &hc_name, 
> (SaImmAttrValuesT_2 ***)&attributes) == SA_AIS_OK) {
>   
>               TRACE_1("'%s'", hc_name.value);
> -
> -             if (hctype_create(avnd_cb, &hc_name, attributes) == NULL)
> -                     goto done2;
> +             //A record may get created in the context of some other 
> component of same comptype.
> +             AVND_HCTYPE *hctype = NULL;
> +             if ((hctype = (AVND_HCTYPE *)ncs_patricia_tree_get(&hctypedb,
> +                                             (uint8_t *)&hc_name)) == NULL) {
> +                     if (hctype_create(avnd_cb, &hc_name, attributes) == 
> NULL)
> +                             goto done2;
> +             }
> +             else
> +                     TRACE_2("Record already exists");
>       }
>   
>       error = SA_AIS_OK;


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to