osaf/libs/common/immsv/immpbe_dump.cc      |   1 +
 osaf/libs/common/immsv/include/immsv_evt.h |   2 +-
 osaf/services/saf/immsv/immd/immd_cb.h     |   2 +-
 osaf/services/saf/immsv/immd/immd_evt.c    |  26 ++++++++++++--------------
 osaf/services/saf/immsv/immd/immd_proc.c   |   2 +-
 osaf/services/saf/immsv/immd/immd_sbevt.c  |   2 +-
 osaf/services/saf/immsv/immnd/ImmModel.cc  |   2 +-
 osaf/services/saf/immsv/immnd/immnd_cb.h   |   2 +-
 osaf/services/saf/immsv/immnd/immnd_evt.c  |  10 +++++-----
 osaf/services/saf/immsv/immnd/immnd_proc.c |  17 +++++++----------
 10 files changed, 31 insertions(+), 35 deletions(-)


The patch conatins fixes from reviewers comments.

diff --git a/osaf/libs/common/immsv/immpbe_dump.cc 
b/osaf/libs/common/immsv/immpbe_dump.cc
--- a/osaf/libs/common/immsv/immpbe_dump.cc
+++ b/osaf/libs/common/immsv/immpbe_dump.cc
@@ -1307,6 +1307,7 @@ static bool verifyClassObjectsPBE(std::s
        for(i=0; attrDefinitions[i]; i++) {
                if(attrDefinitions[i]->attrFlags & SA_IMM_ATTR_RDN) {
                        rdnAttrDefIndex = i;
+                       break;
                }
        }
 
diff --git a/osaf/libs/common/immsv/include/immsv_evt.h 
b/osaf/libs/common/immsv/include/immsv_evt.h
--- a/osaf/libs/common/immsv/include/immsv_evt.h
+++ b/osaf/libs/common/immsv/include/immsv_evt.h
@@ -438,7 +438,7 @@ typedef struct immsv_nd2d_control {
        IMMSV_OCTET_STRING xmlFile;
        IMMSV_OCTET_STRING pbeFile;
 
-       /* OpenSaf4.6: At restart of IMMD sv-id, IMMND gives feeedback on:
+       /* OpenSaf5.0: At restart of IMMD sv-id, IMMND gives feeedback on:
         - fevs_count
         - admo_id_count
         - ccb_id_count
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
@@ -138,7 +138,7 @@ typedef struct immd_cb_tag {
        bool m2PbeExtraWait;    /* true => Used only to prolong wait if both SCs
                                   have been introduced but one has not yet 
replied. */
        bool nid_started;       /* true if started by NID */
-       SaUint16T mScAbsenceAllowed; /* Non zero if "headless Hydra" allowed 
(loss of both IMMDs/SCs).
+       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 */
 } IMMD_CB;
diff --git a/osaf/services/saf/immsv/immd/immd_evt.c 
b/osaf/services/saf/immsv/immd/immd_evt.c
--- a/osaf/services/saf/immsv/immd/immd_evt.c
+++ b/osaf/services/saf/immsv/immd/immd_evt.c
@@ -414,7 +414,6 @@ static void immd_abort_sync_ok(IMMD_CB *
        sync_evt.info.immnd.info.ctrl.nodeId = node_info->immnd_key;
        sync_evt.info.immnd.info.ctrl.rulingEpoch = cb->mRulingEpoch;
        sync_evt.info.immnd.info.ctrl.fevsMsgStart = cb->fevsSendCount;
-       sync_evt.info.immnd.info.ctrl.ndExecPid = node_info->immnd_execPid;
        sync_evt.info.immnd.info.ctrl.canBeCoord = 
(node_info->isOnController)?1:(cb->mScAbsenceAllowed)?4:0;
        sync_evt.info.immnd.info.ctrl.ndExecPid = 
(sync_evt.info.immnd.info.ctrl.canBeCoord==4)?(cb->mScAbsenceAllowed):node_info->immnd_execPid;
        sync_evt.info.immnd.info.ctrl.isCoord = node_info->isCoord;
@@ -458,7 +457,6 @@ static void immd_prto_purge_mutations(IM
        sync_evt.info.immnd.info.ctrl.nodeId = node_info->immnd_key;
        sync_evt.info.immnd.info.ctrl.rulingEpoch = cb->mRulingEpoch;
        sync_evt.info.immnd.info.ctrl.fevsMsgStart = cb->fevsSendCount;
-       sync_evt.info.immnd.info.ctrl.ndExecPid = node_info->immnd_execPid;
        sync_evt.info.immnd.info.ctrl.canBeCoord = 
(node_info->isOnController)?1:(cb->mScAbsenceAllowed)?4:0;
        sync_evt.info.immnd.info.ctrl.ndExecPid = 
(sync_evt.info.immnd.info.ctrl.canBeCoord==4)?(cb->mScAbsenceAllowed):node_info->immnd_execPid;
        sync_evt.info.immnd.info.ctrl.isCoord = node_info->isCoord;
@@ -565,7 +563,6 @@ static void immd_req_sync(IMMD_CB *cb, I
        rqsync_evt.info.immnd.info.ctrl.nodeId = node_info->immnd_key;
        rqsync_evt.info.immnd.info.ctrl.rulingEpoch = cb->mRulingEpoch;
        rqsync_evt.info.immnd.info.ctrl.canBeCoord = 
(node_info->isOnController)?1:(cb->mScAbsenceAllowed)?4:0;
-       rqsync_evt.info.immnd.info.ctrl.ndExecPid = node_info->immnd_execPid;
        rqsync_evt.info.immnd.info.ctrl.ndExecPid = 
(rqsync_evt.info.immnd.info.ctrl.canBeCoord==4)?(cb->mScAbsenceAllowed):node_info->immnd_execPid;
        rqsync_evt.info.immnd.info.ctrl.fevsMsgStart = cb->fevsSendCount;
        rqsync_evt.info.immnd.info.ctrl.isCoord = node_info->isCoord;
@@ -620,10 +617,10 @@ static void immd_req_sync(IMMD_CB *cb, I
                goto done;
        }
 
-       LOG_IN("ABT coord at payload ? cb->immnd_coord:%x 
cb->mScAbsenceAllowed: %u dest:%" PRIu64,
+       LOG_IN("coord at payload ? cb->immnd_coord:%x cb->mScAbsenceAllowed: %u 
dest:%" PRIu64,
                cb->immnd_coord, cb->mScAbsenceAllowed, cb->payload_coord_dest);
 
-       if(cb->immnd_coord && cb->mScAbsenceAllowed) {
+       if(cb->payload_coord_dest && cb->mScAbsenceAllowed) {
                LOG_NO("Sc Absence Allowed is configured (%u) => IMMND coord at 
payload node:%x dest%" PRIu64,
                        cb->mScAbsenceAllowed, cb->immnd_coord, 
cb->payload_coord_dest);
                TRACE_5("Send-4 SYNC_REQ to remote coord IMMND at payload, 
dest:%" PRIu64, cb->payload_coord_dest);
@@ -677,13 +674,11 @@ static void immd_accept_node(IMMD_CB *cb
        IMMD_MBCSV_MSG mbcp_msg;
        bool isOnController = node_info->isOnController;
        bool fsParamMbcp = false;
-       int32_t mds_attached_nodes = 
(int32_t)immd_immnd_info_node_cardinality(&cb->immnd_tree);
-       LOG_NO("Attached Nodes:%u Accepted nodes:%u KnownVeteran:%u 
doReply:%u", mds_attached_nodes, accepted_nodes, knownVeteran, doReply);
        TRACE_ENTER();
 
        memset(&accept_evt, 0, sizeof(IMMSV_EVT));
        memset(&mbcp_msg, 0, sizeof(IMMD_MBCSV_MSG));
-       if(cb->mScAbsenceAllowed && doReply) {++accepted_nodes;}
+       if(cb->mScAbsenceAllowed && !cb->immnd_coord && doReply) 
{++accepted_nodes;}
 
        accept_evt.type = IMMSV_EVT_TYPE_IMMND;
        accept_evt.info.immnd.type = IMMND_EVT_D2ND_INTRO_RSP;
@@ -696,15 +691,18 @@ static void immd_accept_node(IMMD_CB *cb
        /* Sending back pbeEnabled from IMMD to IMMNDs not really needed.*/
        accept_evt.info.immnd.info.ctrl.pbeEnabled = (cb->mRim == 
SA_IMM_KEEP_REPOSITORY);
        if (isOnController) {
-               if(cb->immnd_coord == 0) {/* No coord */                        
+               if(cb->immnd_coord == 0) {/* No coord */
+                       int32_t mds_attached_nodes = 
(int32_t)immd_immnd_info_node_cardinality(&cb->immnd_tree);
+                       LOG_NO("Attached Nodes:%u Accepted nodes:%u 
KnownVeteran:%u doReply:%u", mds_attached_nodes, accepted_nodes, knownVeteran, 
doReply);
+
                        if(cb->mIs2Pbe) {
                                LOG_NO("IMMND on SC found at %x this IMMD at 
%x."
                                        " Cluster is loading. 2PBE configured 
=> Wait.",
                                        node_info->immnd_key, cb->node_id);
                                accept_evt.info.immnd.info.ctrl.canBeCoord = 2; 
/* 2PBE => order preload. */
-                       } else if(!(cb->mScAbsenceAllowed) || knownVeteran || 
(mds_attached_nodes == 1) ||
+                       } else if(!(cb->mScAbsenceAllowed) || 
(mds_attached_nodes == 1) ||
                                   (accepted_nodes > (mds_attached_nodes - 2))) 
{
-                               /* ABT possibly need timeout conditionj ALSO. 
But we dont want another config variable */
+                               /* possibly need timeout condition ALSO. But we 
dont want another config variable */
                                LOG_NO("First IMMND on SC found at %x this IMMD 
at %x."
                                        " Cluster is loading, *not* 2PBE => 
designating that IMMND as coordinator",
                                        node_info->immnd_key, cb->node_id);
@@ -715,8 +713,8 @@ static void immd_accept_node(IMMD_CB *cb
                                doReply = false;
                                --accepted_nodes;
                        } else {
-                              LOG_NO("PROBLEM CASE (?) ScAbsenceAllowed: %u; 
accepted_nodes:%u; mds_attached_nodess:%u",
-                                     cb->mScAbsenceAllowed, accepted_nodes, 
mds_attached_nodes);
+                               LOG_NO("PROBLEM CASE (?) ScAbsenceAllowed: %u; 
accepted_nodes:%u; mds_attached_nodess:%u",
+                                               cb->mScAbsenceAllowed, 
accepted_nodes, mds_attached_nodes);
                        }
                } else {
                        /* Coord already exists. An SC is joining the cluster. 
*/
@@ -833,7 +831,7 @@ static void immd_accept_node(IMMD_CB *cb
                                }
                        }
 
-                       if(cb->mScAbsenceAllowed && cb->payload_coord_dest) {
+                       if(cb->mScAbsenceAllowed && cb->payload_coord_dest && 
!node_info->isCoord) {
                                /* SC absence allowed and coord is configured 
at payload. */
                                TRACE("Payload intro sent to IMMND coord at 
payload (%x)", cb->immnd_coord);
                                proc_rc = immd_mds_msg_send(cb, 
NCSMDS_SVC_ID_IMMND, cb->payload_coord_dest, &accept_evt);
diff --git a/osaf/services/saf/immsv/immd/immd_proc.c 
b/osaf/services/saf/immsv/immd/immd_proc.c
--- a/osaf/services/saf/immsv/immd/immd_proc.c
+++ b/osaf/services/saf/immsv/immd/immd_proc.c
@@ -276,7 +276,7 @@ bool immd_proc_elect_coord(IMMD_CB *cb, 
                   one step higher than the coord epoch.
                 */
        } else {
-               /* Try to elect a new coord. ABT Do I need to reset 
payload_coord_dest earlier ? */
+               /* Try to elect a new coord. */
                cb->payload_coord_dest = 0LL;
                memset(&key, 0, sizeof(MDS_DEST));
                immd_immnd_info_node_getnext(&cb->immnd_tree, &key, 
&immnd_info_node);
diff --git a/osaf/services/saf/immsv/immd/immd_sbevt.c 
b/osaf/services/saf/immsv/immd/immd_sbevt.c
--- a/osaf/services/saf/immsv/immd/immd_sbevt.c
+++ b/osaf/services/saf/immsv/immd/immd_sbevt.c
@@ -193,6 +193,7 @@ uint32_t immd_process_node_accept(IMMD_C
                if(ctrl->isCoord) {
                        SaImmRepositoryInitModeT oldRim = cb->mRim;
                        cb->immnd_coord = immnd_info_node->immnd_key;
+                       cb->payload_coord_dest = 
(immnd_info_node->isOnController) ? 0LL : immnd_info_node->immnd_dest;
                        cb->m2PbeCanLoad = true;
                        LOG_NO("IMMND coord at %x", immnd_info_node->immnd_key);
                        immnd_info_node->syncStarted = ctrl->syncStarted;
@@ -251,7 +252,6 @@ uint32_t immd_process_node_accept(IMMD_C
                        cb->mDir = ctrl->dir.buf; /*steal*/
                } else if(ctrl->dir.size && cb->mDir) {
                        /* Should not get here since fs params sent only once.*/
-                       LOG_NO("ABT Should not get here since fs params sent 
only once");
                        if(strcmp(cb->mDir, ctrl->dir.buf)) {
                                LOG_WA("SBY: Discrepancy on IMM directory: %s 
!= %s",
                                        cb->mDir, ctrl->dir.buf);
diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc 
b/osaf/services/saf/immsv/immnd/ImmModel.cc
--- a/osaf/services/saf/immsv/immnd/ImmModel.cc
+++ b/osaf/services/saf/immsv/immnd/ImmModel.cc
@@ -17378,7 +17378,7 @@ ImmModel::setScAbsenceAllowed(SaUint16T 
     ImmAttrValue* valuep = (ImmAttrValue *) avi->second;
     valuep->setValue_int(scAbsenceAllowed);
 
-    LOG_NO("ABT ImmModel received scAbsenceAllowed %u", scAbsenceAllowed);
+    LOG_NO("ImmModel received scAbsenceAllowed %u", scAbsenceAllowed);
 }
 
 SaAisErrorT
diff --git a/osaf/services/saf/immsv/immnd/immnd_cb.h 
b/osaf/services/saf/immsv/immnd/immnd_cb.h
--- a/osaf/services/saf/immsv/immnd/immnd_cb.h
+++ b/osaf/services/saf/immsv/immnd/immnd_cb.h
@@ -132,7 +132,7 @@ typedef struct immnd_cb_tag {
        bool mIsOtherScUp; //If set & this is an SC then other SC is up(2pbe).
                   //False=> *allow* 1safe 2pbe. May err conservatively (true) 
        bool mForceClean; //true => Force cleanTheHouse to run once *now*.
-       SaUint16T mScAbsenceAllowed; /* Non zero if "headless Hydra" allowed 
(loss of both IMMDs/SCs).
+       SaUint16T mScAbsenceAllowed; /* Non zero if SC absence is allowed (loss 
of both IMMDs/SCs).
                                       Value is number of seconds of SC absence 
tolerated. */
 
        /* Information about the IMMD */
diff --git a/osaf/services/saf/immsv/immnd/immnd_evt.c 
b/osaf/services/saf/immsv/immnd/immnd_evt.c
--- a/osaf/services/saf/immsv/immnd/immnd_evt.c
+++ b/osaf/services/saf/immsv/immnd/immnd_evt.c
@@ -2198,7 +2198,7 @@ static uint32_t immnd_evt_proc_imm_clien
     cl_node->mIsResurrect = 0x1;
 
     if (immnd_client_node_add(cb, cl_node) != NCSCC_RC_SUCCESS) {
-#if 0 //CLOUD-PROTO  ABT clients should be discarded !!!!
+#if 0 //CLOUD-PROTO  clients should be discarded !!!!
            LOG_ER("IMMND - Adding temporary imma client Failed.");
            /*free(cl_node);*/
            abort();
@@ -8782,8 +8782,8 @@ static uint32_t immnd_evt_proc_intro_rsp
                if(cb->mCanBeCoord == 4) {
                        osafassert(!(cb->m2Pbe));
                        cb->mScAbsenceAllowed =  evt->info.ctrl.ndExecPid;
-                       LOG_IN("ABT cb->mScAbsenceAllowed:%u 
evt->info.ctrl.ndExecPid:%u", cb->mScAbsenceAllowed, evt->info.ctrl.ndExecPid);
-                       LOG_IN("SC_ABSENCE_ALLOWED (Headless Hydra) is 
configured for %u seconds. CanBeCoord:%u",
+                       LOG_IN("cb->mScAbsenceAllowed:%u 
evt->info.ctrl.ndExecPid:%u", cb->mScAbsenceAllowed, evt->info.ctrl.ndExecPid);
+                       LOG_IN("SC_ABSENCE_ALLOWED is configured for %u 
seconds. CanBeCoord:%u",
                                cb->mScAbsenceAllowed, cb->mCanBeCoord);
                }
 
@@ -8814,7 +8814,7 @@ static uint32_t immnd_evt_proc_intro_rsp
                }
                if(cb->mIsCoord) {
                        if(!(evt->info.ctrl.isCoord)) {
-                               LOG_NO("ABT CLOUD PROTO avoided canceling coord 
- SHOULD NOT GET HERE");
+                               LOG_NO("Avoided canceling coord - SHOULD NOT 
GET HERE");
                        }
                } else {
                        LOG_NO("SETTING COORD TO %u CLOUD PROTO", 
evt->info.ctrl.isCoord);
@@ -9325,7 +9325,7 @@ static void immnd_evt_proc_finalize_sync
                        SaImmHandleT prev_hdl;
                        unsigned int count = 0;
                        IMMSV_EVT send_evt;
-                       /* Sync completed for veteran & headless allowed => 
trigger active
+                       /* Sync completed for veteran & SC absence allowed => 
trigger active
                           resurrect. */
                        memset(&send_evt, '\0', sizeof(IMMSV_EVT));
                        send_evt.type = IMMSV_EVT_TYPE_IMMA;
diff --git a/osaf/services/saf/immsv/immnd/immnd_proc.c 
b/osaf/services/saf/immsv/immnd/immnd_proc.c
--- a/osaf/services/saf/immsv/immnd/immnd_proc.c
+++ b/osaf/services/saf/immsv/immnd/immnd_proc.c
@@ -157,7 +157,9 @@ uint32_t immnd_proc_imma_discard_connect
           Abort all such ccbs via broadcast over IMMD. 
         */
 
-       immModel_getCcbIdsForOrigCon(cb, client_id, &arrSize, &idArr);
+       if(!scAbsence)
+               immModel_getCcbIdsForOrigCon(cb, client_id, &arrSize, &idArr);
+
        if (arrSize) {
                SaUint32T ix;
                memset(&send_evt, '\0', sizeof(IMMSV_EVT));
@@ -166,7 +168,7 @@ uint32_t immnd_proc_imma_discard_connect
                for (ix = 0; ix < arrSize && !(cl_node->mIsStale); ++ix) {
                        send_evt.info.immd.info.ccbId = idArr[ix];
                        TRACE_5("Discarding Ccb id:%u originating at dead 
connection: %u", idArr[ix], client_id);
-                       if (!scAbsence && immnd_mds_msg_send(cb, 
NCSMDS_SVC_ID_IMMD, cb->immd_mdest_id,
+                       if (immnd_mds_msg_send(cb, NCSMDS_SVC_ID_IMMD, 
cb->immd_mdest_id,
                                               &send_evt) != NCSCC_RC_SUCCESS) {
                                if (immnd_is_immd_up(cb)) {
                                        LOG_ER("Failure to broadcast discard 
Ccb for ccbId:%u "
@@ -177,8 +179,6 @@ uint32_t immnd_proc_imma_discard_connect
                                               "(immd down)- will retry later", 
idArr[ix]);
                                }
                                cl_node->mIsStale = true;
-                       } else if(scAbsence) {
-                               /* ABT TODO discard local ccbs ??*/
                        }
                }
                free(idArr);
@@ -505,7 +505,7 @@ static int32_t immnd_iAmLoader(IMMND_CB 
                TRACE_5("Loading is not possible, preLoader still attached");
                return (-3);
        }
-LOG_IN("ABT CLOUD PROTO cb->mMyEpoch:%u !=  cb->mRulingEpoch:%u", 
cb->mMyEpoch, cb->mRulingEpoch);
+
        if (cb->mMyEpoch != cb->mRulingEpoch) {
                /*We are joining the cluster, need to sync this IMMND. */
                return (-2);
@@ -561,7 +561,7 @@ static uint32_t immnd_requestSync(IMMND_
        uint32_t rc = NCSCC_RC_SUCCESS;
        IMMSV_EVT send_evt;
        memset(&send_evt, '\0', sizeof(IMMSV_EVT));
-LOG_NO("ABT REQUESTING SYNC");
+
        send_evt.type = IMMSV_EVT_TYPE_IMMD;
        send_evt.info.immd.type = IMMD_EVT_ND2D_REQ_SYNC;
        send_evt.info.immd.info.ctrl_msg.ndExecPid = cb->mMyPid;
@@ -2317,7 +2317,7 @@ void immnd_dump_client_info(IMMND_IMM_CL
 
 #endif
 
-/* Only for scAbsenceAllowed (headless hydra) */
+/* Only for scAbsenceAllowed */
 void immnd_proc_discard_other_nodes(IMMND_CB *cb)
 {
        TRACE_ENTER();
@@ -2328,15 +2328,12 @@ void immnd_proc_discard_other_nodes(IMMN
        while (cl_node) {
                LOG_NO("Removing client id:%llx sv_id:%u", 
cl_node->imm_app_hdl, cl_node->sv_id);
                osafassert(immnd_proc_imma_discard_connection(cb, cl_node, 
true));
-               LOG_NO("ABT discard_connection OK");
                osafassert(immnd_client_node_del(cb, cl_node) == 
NCSCC_RC_SUCCESS);
                free(cl_node);
                cl_node = NULL;
-               LOG_NO("ABT Client node REMOVED");
                immnd_client_node_getnext(cb, 0, &cl_node);
        }
 
-       LOG_NO("ABT DONE REMOVING CLIENTS ENTERING immModel_isolateThisNode(cb) 
");
        immModel_isolateThisNode(cb);
        immModel_abortNonCriticalCcbs(cb);
        TRACE_LEAVE();

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to