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
