Hi Hoang

I just cloned http://hg.code.sf.net/p/opensaf/staging and applied ,
dint find nay issue  , so attaching the patch for your reference .
let me know if you still find the issue , i will republish the patch.

-AVM

On 1/18/2017 9:12 AM, Vo Minh Hoang wrote:
Dear Mahesh,

Would you please rebase this patch, it seems a little bit out date.
-------------------------------------------------------------------
patching file src/ckpt/ckptd/cpd_sbevt.c
Hunk #2 FAILED at 497
Hunk #3 FAILED at 511
2 out of 3 hunks FAILED
-------------------------------------------------------------------

Sincerely,
Hoang

-----Original Message-----
From: A V Mahesh [mailto:mahesh.va...@oracle.com]
Sent: Tuesday, January 17, 2017 10:45 AM
To: hoang.m...@dektech.com.au
Cc: opensaf-devel@lists.sourceforge.net
Subject: Re: [devel] [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat
for non-colcated ckpt above 3 replicas[#2253]

Hi Hoang,

It seem you missed to see this, can you please review.

-AVM


On 1/6/2017 5:47 PM, mahesh.va...@oracle.com wrote:
   src/ckpt/ckptd/cpd_sbevt.c |  30 +++++++++++++++++++++---------
   1 files changed, 21 insertions(+), 9 deletions(-)


Issue :                According to Ckpt non-collocated ckpt
implementation the cluster can have max 3 replicas
                            and minimum of 2 replicas,if the non-collocated
ckpt is opened on controller initially ,
                            by default cpsv service will create 2 replicas
each one on controllers ,
                            else the non-collocated ckpt is opened on
payload initially,by default cpsv service will create 3 replicas
                            one on the payload and other each one on
controllers,so any further opens form any other payload is not
                            required to create replicas  locally.All other
node ckpt application will access the data form the
                            default created active replica.

                           In current code ha bug in active standby MBCSV
checkpoint of CPD_CKPT_REF_INFO data is mismatching
                           while creating replica node for
non-collocated of a payload

Fix :                 This patch address the issue by  matching
CPD_CKPT_REF_INFO data by not crating
                          cpd_ckpt_reploc_node  cpd_ckpt_ref_info , for the
any further opens
                          form any other payload opened the ckpt above max
3 replicas.
diff --git a/src/ckpt/ckptd/cpd_sbevt.c b/src/ckpt/ckptd/cpd_sbevt.c
--- a/src/ckpt/ckptd/cpd_sbevt.c
+++ b/src/ckpt/ckptd/cpd_sbevt.c
@@ -456,6 +456,7 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
        SaClmClusterNodeT cluster_node;
        CPD_REP_KEY_INFO key_info;
        CPD_NODE_REF_INFO *nref_info;
+       bool noncoll_rep_on_payload = false;
TRACE_ENTER(); @@ -497,9 +498,20 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C reploc_info->rep_key.node_name =
strdup(osaf_extended_name_borrow(&cluster_node.nodeName));
                reploc_info->rep_key.ckpt_name =
strdup(ckpt_node->ckpt_name);
-               if
(!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&ckpt_node->attributes))
+               if
(!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&ckpt_node->attributes)) {
                        reploc_info->rep_type = REP_NONCOLL;
-               else {
+                       if
((cpd_get_slot_sub_id_from_mds_dest(msg->info.dest_add.mds_dest) ==
cb->cpd_remote_id) ||
+
(cpd_get_slot_sub_id_from_mds_dest(msg->info.dest_add.mds_dest) ==
cb->cpd_self_id) ) {
+                               TRACE_4(" reploc node add for non-collocated
on controller ckpt_id:%llx", msg->info.dest_add.ckpt_id);
+                               proc_rc =
cpd_ckpt_reploc_node_add(&cb->ckpt_reploc_tree, reploc_info, cb->ha_state,
cb->immOiHandle);
+                               if (proc_rc != NCSCC_RC_SUCCESS) {
+                                       TRACE_4("cpd standby dest add evt
failed ");
+                               }
+                       } else {
+                               TRACE_4(" reploc node add for non-collocated
on paylaod ckpt_id:%llx",msg->info.dest_add.ckpt_id);
+                               noncoll_rep_on_payload = true;
+                       }
+               } else {
                        if ((ckpt_node->attributes.creationFlags &
SA_CKPT_WR_ALL_REPLICAS) &&
(m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&ckpt_node->attributes)))
                                reploc_info->rep_type = REP_SYNCUPD; @@
-511,17 +523,17 @@
uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
                        if ((ckpt_node->attributes.creationFlags &
SA_CKPT_WR_ACTIVE_REPLICA_WEAK) &&
(m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&ckpt_node->attributes)))
                                reploc_info->rep_type = REP_NOTACTIVE;
-               }
- proc_rc = cpd_ckpt_reploc_node_add(&cb->ckpt_reploc_tree,
reploc_info, cb->ha_state, cb->immOiHandle);
-               if (proc_rc != NCSCC_RC_SUCCESS) {
-                       TRACE_4("cpd standby dest add evt failed ");
-                       /*  goto free_mem; */
+                       proc_rc =
cpd_ckpt_reploc_node_add(&cb->ckpt_reploc_tree, reploc_info, cb->ha_state,
cb->immOiHandle);
+                       if (proc_rc != NCSCC_RC_SUCCESS) {
+                               TRACE_4("cpd standby dest add evt failed ");
+                       }
                }
        }
- cpd_ckpt_ref_info_add(node_info, ckpt_node);
-       
+       if (noncoll_rep_on_payload != true) {
+               cpd_ckpt_ref_info_add(node_info, ckpt_node);
+       }
        TRACE_1("cpd standby destadd evt success ckpt_id %llx mdsdest:
%"PRIu64, msg->info.dest_add.ckpt_id, msg->info.dest_add.mds_dest);
TRACE_LEAVE();

----------------------------------------------------------------------
-------- Check out the vibrant tech community on one of the world's
most engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


diff --git a/src/ckpt/ckptd/cpd_sbevt.c b/src/ckpt/ckptd/cpd_sbevt.c
--- a/src/ckpt/ckptd/cpd_sbevt.c
+++ b/src/ckpt/ckptd/cpd_sbevt.c
@@ -456,6 +456,7 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
 	SaClmClusterNodeT cluster_node;
 	CPD_REP_KEY_INFO key_info;
 	CPD_NODE_REF_INFO *nref_info;
+	bool noncoll_rep_on_payload = false;
 
 	TRACE_ENTER();
 
@@ -497,9 +498,20 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
 
 		reploc_info->rep_key.node_name = strdup(osaf_extended_name_borrow(&cluster_node.nodeName));
 		reploc_info->rep_key.ckpt_name = strdup(ckpt_node->ckpt_name);
-		if (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&ckpt_node->attributes))
+		if (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&ckpt_node->attributes)) {
 			reploc_info->rep_type = REP_NONCOLL;
-		else {
+			if ((cpd_get_slot_sub_id_from_mds_dest(msg->info.dest_add.mds_dest) == cb->cpd_remote_id) ||
+					(cpd_get_slot_sub_id_from_mds_dest(msg->info.dest_add.mds_dest) == cb->cpd_self_id) ) {
+				TRACE_4(" reploc node add for non-collocated on controller ckpt_id:%llx", msg->info.dest_add.ckpt_id);
+				proc_rc = cpd_ckpt_reploc_node_add(&cb->ckpt_reploc_tree, reploc_info, cb->ha_state, cb->immOiHandle);
+				if (proc_rc != NCSCC_RC_SUCCESS) {
+					TRACE_4("cpd standby dest add evt failed ");
+				}
+			} else {
+				TRACE_4(" reploc node add for non-collocated on paylaod ckpt_id:%llx",msg->info.dest_add.ckpt_id);
+				noncoll_rep_on_payload = true;
+			}
+		} else {
 			if ((ckpt_node->attributes.creationFlags & SA_CKPT_WR_ALL_REPLICAS) &&
 			    (m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&ckpt_node->attributes)))
 				reploc_info->rep_type = REP_SYNCUPD;
@@ -511,17 +523,17 @@ uint32_t cpd_sb_proc_ckpt_dest_add(CPD_C
 			if ((ckpt_node->attributes.creationFlags & SA_CKPT_WR_ACTIVE_REPLICA_WEAK) &&
 			    (m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(&ckpt_node->attributes)))
 				reploc_info->rep_type = REP_NOTACTIVE;
-		}
 
-		proc_rc = cpd_ckpt_reploc_node_add(&cb->ckpt_reploc_tree, reploc_info, cb->ha_state, cb->immOiHandle);
-		if (proc_rc != NCSCC_RC_SUCCESS) {
-			TRACE_4("cpd standby dest add evt failed ");
-			/*  goto free_mem; */
+			proc_rc = cpd_ckpt_reploc_node_add(&cb->ckpt_reploc_tree, reploc_info, cb->ha_state, cb->immOiHandle);
+			if (proc_rc != NCSCC_RC_SUCCESS) {
+				TRACE_4("cpd standby dest add evt failed ");
+			}
 		}
 	}
 
-	cpd_ckpt_ref_info_add(node_info, ckpt_node);
-	
+	if (noncoll_rep_on_payload != true) {
+		cpd_ckpt_ref_info_add(node_info, ckpt_node);
+	}
 	TRACE_1("cpd standby destadd evt success ckpt_id %llx mdsdest: %"PRIu64, msg->info.dest_add.ckpt_id, msg->info.dest_add.mds_dest);
 
 	TRACE_LEAVE();
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to