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