Re: [devel] [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat for non-colcated ckpt above 3 replicas[#2253]
Hi Hoang, Thanks for the comments i will incorporate these two comments while pushing. -AVM On 1/18/2017 10:17 AM, Vo Minh Hoang wrote: > Dear Mahesh, > > I have 2 comments. > Please find with [Hoang] tag and consider. > > Sincerely, > Hoang > > -Original Message- > From: mahesh.va...@oracle.com [mailto:mahesh.va...@oracle.com] > Sent: Friday, January 6, 2017 7:17 PM > To: hoang.m...@dektech.com.au > Cc: opensaf-devel@lists.sourceforge.net > Subject: [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat for > non-colcated ckpt above 3 replicas[#2253] > > 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(_node.nodeName)); > reploc_info->rep_key.ckpt_name = > strdup(ckpt_node->ckpt_name); > - if > (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)) > + if > (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_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(>ckpt_reploc_tree, reploc_info, cb->ha_state, > cb->immOiHandle); > + if (proc_rc != NCSCC_RC_SUCCESS) { > + TRACE_4("cpd standby dest add evt > failed "); > [Hoang] reploc_info is malloc in this scope, should free it here to avoid > mem leak. So do LOC: 511 and 529. > + } > + } else { > + TRACE_4(" reploc node add for > non-collocated on paylaod ckpt_id:%llx",msg->info.dest_add.ckpt_id); > [Hoang] consider changing trace message when we do not add anything here. > Small typos " paylaod ". > + noncoll_rep_on_payload = true; > + } > + } else { > if ((ckpt_node->attributes.creationFlags & > SA_CKPT_WR_ALL_REPLICAS) && > > (m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_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(_node->attributes))) > reploc_info->rep_type = REP_NOTACTIVE; > - } > > - proc_rc = cpd_ckpt_reploc_node_add(>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 = >
Re: [devel] [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat for non-colcated ckpt above 3 replicas[#2253]
Dear Mahesh, I have 2 comments. Please find with [Hoang] tag and consider. Sincerely, Hoang -Original Message- From: mahesh.va...@oracle.com [mailto:mahesh.va...@oracle.com] Sent: Friday, January 6, 2017 7:17 PM To: hoang.m...@dektech.com.au Cc: opensaf-devel@lists.sourceforge.net Subject: [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat for non-colcated ckpt above 3 replicas[#2253] 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(_node.nodeName)); reploc_info->rep_key.ckpt_name = strdup(ckpt_node->ckpt_name); - if (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)) + if (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_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(>ckpt_reploc_tree, reploc_info, cb->ha_state, cb->immOiHandle); + if (proc_rc != NCSCC_RC_SUCCESS) { + TRACE_4("cpd standby dest add evt failed "); [Hoang] reploc_info is malloc in this scope, should free it here to avoid mem leak. So do LOC: 511 and 529. + } + } else { + TRACE_4(" reploc node add for non-collocated on paylaod ckpt_id:%llx",msg->info.dest_add.ckpt_id); [Hoang] consider changing trace message when we do not add anything here. Small typos " paylaod ". + noncoll_rep_on_payload = true; + } + } else { if ((ckpt_node->attributes.creationFlags & SA_CKPT_WR_ALL_REPLICAS) && (m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_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(_node->attributes))) reploc_info->rep_type = REP_NOTACTIVE; - } - proc_rc = cpd_ckpt_reploc_node_add(>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(>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
[devel] [PATCH 1 of 1] AMFD: Refactor to remove macro m_AVD_SET_SG_FSM [#1945]
src/amf/amfd/role.cc |2 +- src/amf/amfd/sg.h |1 - src/amf/amfd/sg_2n_fsm.cc | 142 src/amf/amfd/sg_npm_fsm.cc | 138 +++--- src/amf/amfd/sg_nway_fsm.cc| 108 +++--- src/amf/amfd/sg_nwayact_fsm.cc | 80 +++--- src/amf/amfd/si.cc |6 +- src/amf/amfd/si_dep.cc | 10 +- 8 files changed, 243 insertions(+), 244 deletions(-) AMFD currently is using both m_AVD_SET_SG_FSM and set_fsm_state(), this patch removes m_AVD_SET_SG_FSM diff --git a/src/amf/amfd/role.cc b/src/amf/amfd/role.cc --- a/src/amf/amfd/role.cc +++ b/src/amf/amfd/role.cc @@ -676,7 +676,7 @@ void avd_role_switch_ncs_su_evh(AVD_CL_C } else { avd_sg_su_oper_list_add(cb, i_su, false); i_su->set_su_switch(AVSV_SI_TOGGLE_SWITCH); - m_AVD_SET_SG_FSM(cb, (i_su->sg_of_su), AVD_SG_FSM_SU_OPER); + i_su->sg_of_su->set_fsm_state(AVD_SG_FSM_SU_OPER); } } } diff --git a/src/amf/amfd/sg.h b/src/amf/amfd/sg.h --- a/src/amf/amfd/sg.h +++ b/src/amf/amfd/sg.h @@ -577,7 +577,6 @@ private: }; // TODO(hafe) remove when all code has been changed -#define m_AVD_SET_SG_FSM(cb,sg,state) (sg)->set_fsm_state(state) #define m_AVD_SET_SG_ADMIN_SI(cb,si) (si)->sg_of_si->set_admin_si((si)) #define m_AVD_CLEAR_SG_ADMIN_SI(cb,sg) (sg)->clear_admin_si() #define m_AVD_CHK_OPLIST(i_su,flag) (flag) = (i_su)->sg_of_su->in_su_oper_list(i_su) diff --git a/src/amf/amfd/sg_2n_fsm.cc b/src/amf/amfd/sg_2n_fsm.cc --- a/src/amf/amfd/sg_2n_fsm.cc +++ b/src/amf/amfd/sg_2n_fsm.cc @@ -735,7 +735,7 @@ uint32_t SG_2N::si_assign(AVD_CL_CB *cb, /* Add the SU to the list and change the FSM state */ avd_sg_su_oper_list_add(cb, l_su, false); - m_AVD_SET_SG_FSM(cb, (si->sg_of_si), AVD_SG_FSM_SG_REALIGN); + si->sg_of_si->set_fsm_state(AVD_SG_FSM_SG_REALIGN); done: TRACE_LEAVE(); @@ -778,7 +778,7 @@ SaAisErrorT SG_2N::si_swap(AVD_SI *si, S /* Add the SU to the operation list and change the SG state to SU_operation. */ avd_sg_su_oper_list_add(avd_cb, susi->su, false); - m_AVD_SET_SG_FSM(avd_cb, susi->su->sg_of_su, AVD_SG_FSM_SU_OPER); + susi->su->sg_of_su->set_fsm_state(AVD_SG_FSM_SU_OPER); susi->su->set_su_switch(AVSV_SI_TOGGLE_SWITCH); si->invocation = invocation; @@ -867,7 +867,7 @@ uint32_t SG_2N::su_fault_su_oper(AVD_SU /* add the SU to the operation list and change the SG FSM to SG realign. */ avd_sg_su_oper_list_add(cb, su, false); - m_AVD_SET_SG_FSM(cb, this, AVD_SG_FSM_SG_REALIGN); + set_fsm_state(AVD_SG_FSM_SG_REALIGN); /* if the other SUs switch field is true, it is in service, * having quiesced assigning state Send D2N-INFO_SU_SI_ASSIGN modify @@ -925,7 +925,7 @@ uint32_t SG_2N::su_fault_su_oper(AVD_SU /* add the SU to the operation list and change the SG FSM to SG realign. */ avd_sg_su_oper_list_add(cb, su, false); - m_AVD_SET_SG_FSM(cb, this, AVD_SG_FSM_SG_REALIGN); + set_fsm_state(AVD_SG_FSM_SG_REALIGN); /* If the other SUs switch field is true, it is in service, * having quiesced assigned state Change switch field to false. @@ -996,7 +996,7 @@ uint32_t SG_2N::su_fault_si_oper(AVD_SU m_AVD_CLEAR_SG_ADMIN_SI(cb, (su->sg_of_su)); avd_sg_su_oper_list_add(cb, su, false); - m_AVD_SET_SG_FSM(cb, (su->sg_of_su), AVD_SG_FSM_SU_OPER); + su->sg_of_su->set_fsm_state(AVD_SG_FSM_SU_OPER); } else { /* The SU has standby assignments. Send D2N-INFO_SU_SI_ASSIGN * with remove all to the SU. @@ -1052,7 +1052,7 @@ uint32_t SG_2N::su_fault_si_oper(AVD_SU su->sg_of_su->admin_si->set_admin_state(SA_AMF_ADMIN_UNLOCKED); m_AVD_CLEAR_SG_ADMIN_SI(cb, (su->sg_of_su)); avd_sg_su_oper_list_add(cb, su, false); - m_AVD_SET_SG_FSM(cb, (su->sg_of_su), AVD_SG_FSM_SU_OPER); + su->sg_of_su->set_fsm_state(AVD_SG_FSM_SU_OPER); } else { /* The SU has standby assignments. Change the SI admin state to * unlock. Remove the SI from the SI admin pointer. @@
[devel] [PATCH 0 of 1] Review Request for AMFD: Refactor to remove macro m_AVD_SET_SG_FSM [#1945]
Summary: AMFD: Refactor to remove macro m_AVD_SET_SG_FSM [#1945] Review request for Trac Ticket(s): 1945 Peer Reviewer(s): AMF devs Pull request to: <> Affected branch(es): default Development branch: default Impacted area Impact y/n Docsn Build systemn RPM/packaging n Configuration files n Startup scripts n SAF servicesy OpenSAF servicesn Core libraries n Samples n Tests n Other n Comments (indicate scope for each "y" above): - <> changeset d9d59bb0815d50b512281d5771c893c806e4d60b Author: Minh Hon ChauDate: Wed, 18 Jan 2017 15:17:52 +1100 AMFD: Refactor to remove macro m_AVD_SET_SG_FSM [#1945] AMFD currently is using both m_AVD_SET_SG_FSM and set_fsm_state(), this patch removes m_AVD_SET_SG_FSM Complete diffstat: -- src/amf/amfd/role.cc |2 +- src/amf/amfd/sg.h |1 - src/amf/amfd/sg_2n_fsm.cc | 142 src/amf/amfd/sg_npm_fsm.cc | 138 ++-- src/amf/amfd/sg_nway_fsm.cc| 108 src/amf/amfd/sg_nwayact_fsm.cc | 80 +++--- src/amf/amfd/si.cc |6 ++-- src/amf/amfd/si_dep.cc | 10 +++--- 8 files changed, 243 insertions(+), 244 deletions(-) Testing Commands: - <> Testing, Expected Results: -- <> Conditions of Submission: - Ack from reviewers Arch Built StartedLinux distro --- mipsn n mips64 n n x86 n n x86_64 y y powerpc n n powerpc64 n n Reviewer Checklist: --- [Submitters: make sure that your review doesn't trigger any checkmarks!] Your checkin has not passed review because (see checked entries): ___ Your RR template is generally incomplete; it has too many blank entries that need proper data filled in. ___ You have failed to nominate the proper persons for review and push. ___ Your patches do not have proper short+long header ___ You have grammar/spelling in your header that is unacceptable. ___ You have exceeded a sensible line length in your headers/comments/text. ___ You have failed to put in a proper Trac Ticket # into your commits. ___ You have incorrectly put/left internal data in your comments/files (i.e. internal bug tracking tool IDs, product names etc) ___ You have not given any evidence of testing beyond basic build tests. Demonstrate some level of runtime or other sanity testing. ___ You have ^M present in some of your files. These have to be removed. ___ You have needlessly changed whitespace or added whitespace crimes like trailing spaces, or spaces before tabs. ___ You have mixed real technical changes with whitespace and other cosmetic code cleanup changes. These have to be separate commits. ___ You need to refactor your submission into logical chunks; there is too much content into a single commit. ___ You have extraneous garbage in your review (merge commits etc) ___ You have giant attachments which should never have been sent; Instead you should place your content in a public tree to be pulled. ___ You have too many commits attached to an e-mail; resend as threaded commits, or place in a public tree for a pull. ___ You have resent this content multiple times without a clear indication of what has changed between each re-send. ___ You have failed to adequately and individually address all of the comments and change requests that were proposed in the initial review. ___ You have a misconfigured ~/.hgrc file (i.e. username, email etc) ___ Your computer have a badly configured date and time; confusing the the threaded patch review. ___ Your changes affect IPC mechanism, and you don't present any results for in-service upgradability test. ___ Your changes affect user manual and documentation, your patch series do not contain the patch that updates the Doxygen manual. -- 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
Re: [devel] [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat for non-colcated ckpt above 3 replicas[#2253]
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(_node.nodeName)); reploc_info->rep_key.ckpt_name = strdup(ckpt_node->ckpt_name); - if (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)) + if (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_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(>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(_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(_node->attributes))) reploc_info->rep_type = REP_NOTACTIVE; - } - proc_rc = cpd_ckpt_reploc_node_add(>ckpt_reploc_tree, reploc_info, cb->ha_state, cb->immOiHandle); - if (proc_rc != NCSCC_RC_SUCCESS) { -
Re: [devel] [PATCH 1 of 1] cpd: syncup active standby mbcsv dtat for non-colcated ckpt above 3 replicas[#2253]
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(_node.nodeName)); > reploc_info->rep_key.ckpt_name = strdup(ckpt_node->ckpt_name); > - if (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_node->attributes)) > + if (!m_IS_SA_CKPT_CHECKPOINT_COLLOCATED(_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(>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(_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(_node->attributes))) > reploc_info->rep_type = REP_NOTACTIVE; > - } > > - proc_rc = cpd_ckpt_reploc_node_add(>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(>ckpt_reploc_tree, reploc_info, cb->ha_state, cb->immOiHandle); > +
[devel] [PATCH 0 of 1] Review Request for AMFD: Refactor to read sg headless cached rta [#1945]
Summary: AMFD: Refactor to read sg headless cached rta [#1945] Review request for Trac Ticket(s): 1945 Peer Reviewer(s): AMF devs Pull request to: <> Affected branch(es): 5.1, default Development branch: default Impacted area Impact y/n Docsn Build systemn RPM/packaging n Configuration files n Startup scripts n SAF servicesy OpenSAF servicesn Core libraries n Samples n Tests n Other n Comments (indicate scope for each "y" above): - <> changeset dc873bcf64a12436668fec1ac56652b418e4e9f1 Author: Minh Hon ChauDate: Wed, 18 Jan 2017 14:15:19 +1100 AMFD: Refactor to read sg headless cached rta [#1945] The patch #2112 has been pushed that makes both amfds as earlier applier/implementer, so there's no need to add avd_sg_read_headless_fsm_state_cached_rta which was introduced in ticket #1987 Complete diffstat: -- src/amf/amfd/ndfsm.cc | 4 +--- src/amf/amfd/sg.cc| 71 +++ src/amf/amfd/sg.h | 3 +-- 3 files changed, 13 insertions(+), 65 deletions(-) Testing Commands: - <> Testing, Expected Results: -- <> Conditions of Submission: - Ack from reviewers Arch Built StartedLinux distro --- mipsn n mips64 n n x86 n n x86_64 y y powerpc n n powerpc64 n n Reviewer Checklist: --- [Submitters: make sure that your review doesn't trigger any checkmarks!] Your checkin has not passed review because (see checked entries): ___ Your RR template is generally incomplete; it has too many blank entries that need proper data filled in. ___ You have failed to nominate the proper persons for review and push. ___ Your patches do not have proper short+long header ___ You have grammar/spelling in your header that is unacceptable. ___ You have exceeded a sensible line length in your headers/comments/text. ___ You have failed to put in a proper Trac Ticket # into your commits. ___ You have incorrectly put/left internal data in your comments/files (i.e. internal bug tracking tool IDs, product names etc) ___ You have not given any evidence of testing beyond basic build tests. Demonstrate some level of runtime or other sanity testing. ___ You have ^M present in some of your files. These have to be removed. ___ You have needlessly changed whitespace or added whitespace crimes like trailing spaces, or spaces before tabs. ___ You have mixed real technical changes with whitespace and other cosmetic code cleanup changes. These have to be separate commits. ___ You need to refactor your submission into logical chunks; there is too much content into a single commit. ___ You have extraneous garbage in your review (merge commits etc) ___ You have giant attachments which should never have been sent; Instead you should place your content in a public tree to be pulled. ___ You have too many commits attached to an e-mail; resend as threaded commits, or place in a public tree for a pull. ___ You have resent this content multiple times without a clear indication of what has changed between each re-send. ___ You have failed to adequately and individually address all of the comments and change requests that were proposed in the initial review. ___ You have a misconfigured ~/.hgrc file (i.e. username, email etc) ___ Your computer have a badly configured date and time; confusing the the threaded patch review. ___ Your changes affect IPC mechanism, and you don't present any results for in-service upgradability test. ___ Your changes affect user manual and documentation, your patch series do not contain the patch that updates the Doxygen manual. -- 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
[devel] [PATCH 1 of 1] AMFD: Refactor to read sg headless cached rta [#1945]
src/amf/amfd/ndfsm.cc | 4 +-- src/amf/amfd/sg.cc| 71 +++--- src/amf/amfd/sg.h | 3 +- 3 files changed, 13 insertions(+), 65 deletions(-) The patch #2112 has been pushed that makes both amfds as earlier applier/implementer, so there's no need to add avd_sg_read_headless_fsm_state_cached_rta which was introduced in ticket #1987 diff --git a/src/amf/amfd/ndfsm.cc b/src/amf/amfd/ndfsm.cc --- a/src/amf/amfd/ndfsm.cc +++ b/src/amf/amfd/ndfsm.cc @@ -133,12 +133,10 @@ void avd_process_state_info_queue(AVD_CL // Reading sg must be after reading susi if (found_state_info == true) { LOG_NO("Enter restore headless cached RTAs from IMM"); - // Read SG Fsm state to recover nodegroup operation - avd_sg_read_headless_fsm_state_cached_rta(cb); // Read all cached susi, includes ABSENT SUSI with IMM fsm state avd_susi_read_headless_cached_rta(cb); // Read SUOperationList, set ABSENT fsm state for ABSENT SUSI - avd_sg_read_headless_su_oper_list_cached_rta(cb); + avd_sg_read_headless_cached_rta(cb); // Read SUSwitch of SU, validate toggle depends on SUSI fsm state avd_su_read_headless_cached_rta(cb); // Clean compcsi object of ABSENT SUSI diff --git a/src/amf/amfd/sg.cc b/src/amf/amfd/sg.cc --- a/src/amf/amfd/sg.cc +++ b/src/amf/amfd/sg.cc @@ -375,6 +375,15 @@ static AVD_SG *sg_create(const std::stri if (immutil_getAttr(const_cast("saAmfSGAdminState"), attributes, 0, >saAmfSGAdminState) != SA_AIS_OK) { sg->saAmfSGAdminState = SA_AMF_ADMIN_UNLOCKED; } + // only read SG FSM State for non-ncs SG + if (sg_name.find("safApp=OpenSAF") == std::string::npos) { + if (immutil_getAttr(const_cast("osafAmfSGFsmState"), + attributes, 0, >sg_fsm_state) != SA_AIS_OK) { + sg->sg_fsm_state = AVD_SG_FSM_STABLE; + } + TRACE("sg_fsm_state(%u) read from osafAmfSGFsmState", sg->sg_fsm_state); + } + /* TODO use value in type instead? */ sg->sg_redundancy_model = sgt->saAmfSgtRedundancyModel; @@ -422,6 +431,7 @@ SaAisErrorT avd_sg_config_get(const std: const_cast("saAmfSGSuRestartProb"), const_cast("saAmfSGSuRestartMax"), const_cast("saAmfSGAdminState"), + const_cast("osafAmfSGFsmState"), nullptr }; @@ -2098,66 +2108,7 @@ uint32_t AVD_SG::curr_non_instantiated_s (su->saAmfSUPresenceState == SA_AMF_PRESENCE_UNINSTANTIATED));})); } -void avd_sg_read_headless_fsm_state_cached_rta(AVD_CL_CB *cb) -{ - - SaAisErrorT rc; - SaImmSearchHandleT searchHandle; - SaImmSearchParametersT_2 searchParam; - - SaNameT sg_dn; - AVD_SG *sg; - const SaImmAttrValuesT_2 **attributes; - AVD_SG_FSM_STATE imm_sg_fsm_state; - const char *className = "SaAmfSG"; - const SaImmAttrNameT searchAttributes[] = { - const_cast("osafAmfSGFsmState"), - NULL - }; - - TRACE_ENTER(); - - osafassert(cb->scs_absence_max_duration > 0); - - searchParam.searchOneAttr.attrName = const_cast("SaImmAttrClassName"); - searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT; - searchParam.searchOneAttr.attrValue = - - if ((rc = immutil_saImmOmSearchInitialize_2(cb->immOmHandle, NULL, SA_IMM_SUBTREE, - SA_IMM_SEARCH_ONE_ATTR | SA_IMM_SEARCH_GET_SOME_ATTR, , - searchAttributes, )) != SA_AIS_OK) { - - LOG_ER("%s: saImmOmSearchInitialize_2 failed: %u", __FUNCTION__, rc); - goto done; - } - - while ((rc = immutil_saImmOmSearchNext_2(searchHandle, _dn, - (SaImmAttrValuesT_2 ***))) == SA_AIS_OK) { - sg = sg_db->find(Amf::to_string(_dn)); - if (sg && sg->sg_ncs_spec == false) { - if (sg->headless_validation == false) { - continue; - } - if (sg->any_assignment_in_progress() == false && - sg->any_assignment_assigned() == false) { - continue; - } - // Read sg fsm state - rc = immutil_getAttr(const_cast("osafAmfSGFsmState"), - attributes, 0, _sg_fsm_state); - osafassert(rc == SA_AIS_OK); - sg->set_fsm_state(imm_sg_fsm_state, false); - } - } - - (void)immutil_saImmOmSearchFinalize(searchHandle); - -done: - TRACE_LEAVE(); - -} - -void avd_sg_read_headless_su_oper_list_cached_rta(AVD_CL_CB
[devel] [PATCH 1 of 1] amfd: change cold sync in progress log message to NOTICE [#2264]
osaf/services/saf/amf/amfd/si.cc | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/osaf/services/saf/amf/amfd/si.cc b/osaf/services/saf/amf/amfd/si.cc --- a/osaf/services/saf/amf/amfd/si.cc +++ b/osaf/services/saf/amf/amfd/si.cc @@ -1620,7 +1620,7 @@ SaAisErrorT AVD_SI::si_swap_validate() /* Check whether Amfd is in sync if node is illigible to join. */ if ((avd_cb->node_id_avd_other != 0) && (avd_cb->other_avd_adest != 0) && (avd_cb->stby_sync_state == AVD_STBY_OUT_OF_SYNC)) { - LOG_ER("%s SWAP failed - Cold sync in progress", name.c_str()); + LOG_NO("%s SWAP failed - Cold sync in progress", name.c_str()); rc = SA_AIS_ERR_TRY_AGAIN; goto done; } -- 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
[devel] [PATCH 1 of 1] amf: support restrictions to auto-repair V3 [#2144]
osaf/libs/common/amf/include/amf_defs.h | 1 + osaf/services/saf/amf/amfd/comp.cc| 2 +- osaf/services/saf/amf/amfd/include/su.h | 3 +- osaf/services/saf/amf/amfd/sgproc.cc | 2 +- osaf/services/saf/amf/amfd/su.cc | 18 ++-- osaf/services/saf/amf/amfnd/clc.cc| 28 ++ osaf/services/saf/amf/amfnd/err.cc| 20 +++--- osaf/services/saf/amf/amfnd/include/avnd_su.h | 2 + osaf/services/saf/amf/amfnd/sudb.cc | 3 ++ osaf/services/saf/amf/amfnd/susm.cc | 10 +++- 10 files changed, 68 insertions(+), 21 deletions(-) This patch implements section 3.11.1.4.2 of AMF spec (Restrictions to Auto-Repair). diff --git a/osaf/libs/common/amf/include/amf_defs.h b/osaf/libs/common/amf/include/amf_defs.h --- a/osaf/libs/common/amf/include/amf_defs.h +++ b/osaf/libs/common/amf/include/amf_defs.h @@ -203,6 +203,7 @@ typedef enum saAmfSUParentSGName_ID = 12, saAmfSUIsExternal_ID = 13, saAmfSURestartCount_ID = 14, + saAmfSUMaintenanceCampaign_ID = 15, } AVSV_AMF_SU_ATTR_ID; /* Attribute ID enum for the saAmfComp class */ diff --git a/osaf/services/saf/amf/amfd/comp.cc b/osaf/services/saf/amf/amfd/comp.cc --- a/osaf/services/saf/amf/amfd/comp.cc +++ b/osaf/services/saf/amf/amfd/comp.cc @@ -155,7 +155,7 @@ void AVD_COMP::avd_comp_pres_state_set(S (saAmfCompPresenceState == SA_AMF_PRESENCE_TERMINATION_FAILED)) || ((node->saAmfNodeFailfastOnInstantiationFailure == true) && (saAmfCompPresenceState == SA_AMF_PRESENCE_INSTANTIATION_FAILED))) && - (!su->saAmfSUMaintenanceCampaign.empty())) { + (su->saAmfSUMaintenanceCampaign.empty())) { saflog(LOG_NOTICE, amfSvcUsrName, "%s PresenceState %s => %s", osaf_extended_name_borrow(_info.name), avd_pres_state_name[old_state], diff --git a/osaf/services/saf/amf/amfd/include/su.h b/osaf/services/saf/amf/amfd/include/su.h --- a/osaf/services/saf/amf/amfd/include/su.h +++ b/osaf/services/saf/amf/amfd/include/su.h @@ -96,6 +96,7 @@ class AVD_SU { AVD_SU *su_list_su_type_next; void set_su_failover(bool value); + void set_su_maintenance_campaign(void); void dec_curr_stdby_si(); void inc_curr_stdby_si(); void inc_curr_act_si(); @@ -116,7 +117,7 @@ class AVD_SU { void set_term_state(bool state); void remove_from_model(); void set_su_switch(SaToggleState state, bool wrt_to_imm = true); - AVD_AVND *get_node_ptr(void); + AVD_AVND *get_node_ptr(void) const; bool is_in_service(void); bool is_instantiable(void); void reset_all_comps_assign_flag(); diff --git a/osaf/services/saf/amf/amfd/sgproc.cc b/osaf/services/saf/amf/amfd/sgproc.cc --- a/osaf/services/saf/amf/amfd/sgproc.cc +++ b/osaf/services/saf/amf/amfd/sgproc.cc @@ -804,7 +804,7 @@ void avd_su_oper_state_evh(AVD_CL_CB *cb node->recvr_fail_sw = true; // if maintenance campaign is ongoing, disable node reboot -if (su->saAmfSUMaintenanceCampaign.empty()) +if (!su->saAmfSUMaintenanceCampaign.empty()) node_reboot_req = false; switch (n2d_msg->msg_info.n2d_opr_state.rec_rcvr.raw) { diff --git a/osaf/services/saf/amf/amfd/su.cc b/osaf/services/saf/amf/amfd/su.cc --- a/osaf/services/saf/amf/amfd/su.cc +++ b/osaf/services/saf/amf/amfd/su.cc @@ -737,7 +737,7 @@ void AVD_SU::set_pres_state(SaAmfPresenc (su_on_node->saAmfNodeFailfastOnTerminationFailure == true) && (sg_of_su->saAmfSGAutoRepair == true) && (su_on_node->saAmfNodeAutoRepair == true) && - (!saAmfSUMaintenanceCampaign.empty())) + (saAmfSUMaintenanceCampaign.empty())) /* According to AMF B.04.01 Section 4.8 Page 214 if user configures saAmfNodeFailfastOnTerminationFailure = true, AMF has to perform node failfast recovery action. So mark SU to SA_AMF_PRESENCE_TERMINATION_FAILED @@ -748,7 +748,7 @@ void AVD_SU::set_pres_state(SaAmfPresenc (su_on_node->saAmfNodeFailfastOnInstantiationFailure == true) && (sg_of_su->saAmfSGAutoRepair == true) && (su_on_node->saAmfNodeAutoRepair == true) && - (!saAmfSUMaintenanceCampaign.empty())) + (saAmfSUMaintenanceCampaign.empty())) /* According to AMF B.04.01 Section 4.6 Page 212 if user configures saAmfNodeFailfastOnInstantiationFailure = true, AMF has to perform node failfast recovery action. So mark SU to SA_AMF_PRESENCE_INSTANTIATION_FAILED @@ -1840,6 +1840,7 @@ static void su_ccb_apply_modify_hdlr(str TRACE("saAmfSUMaintenanceCampaign set to '%s' for
[devel] [PATCH 0 of 1] Review Request for amf: support restrictions to auto-repair [#2144]
Summary: amf: support restrictions to auto-repair V3 Review request for Trac Ticket(s): 2144 Peer Reviewer(s): praveen, nagu Pull request to: Affected branch(es): default Development branch: Impacted area Impact y/n Docsn Build systemn RPM/packaging n Configuration files n Startup scripts n SAF servicesy OpenSAF servicesn Core libraries n Samples n Tests n Other n Comments (indicate scope for each "y" above): - Replace the V2 patch with this V3 patch. You should still use the first original one, and this one on top of it. changeset 107b80219b2dff125fa30ddda4be5ebfc5531f60 Author: Alex JonesDate: Tue, 17 Jan 2017 15:32:38 -0500 amf: support restrictions to auto-repair V3 [#2144] This patch implements section 3.11.1.4.2 of AMF spec (Restrictions to Auto- Repair). Complete diffstat: -- osaf/libs/common/amf/include/amf_defs.h | 1 + osaf/services/saf/amf/amfd/comp.cc| 2 +- osaf/services/saf/amf/amfd/include/su.h | 3 ++- osaf/services/saf/amf/amfd/sgproc.cc | 2 +- osaf/services/saf/amf/amfd/su.cc | 18 +++--- osaf/services/saf/amf/amfnd/clc.cc| 28 +++- osaf/services/saf/amf/amfnd/err.cc| 20 osaf/services/saf/amf/amfnd/include/avnd_su.h | 2 ++ osaf/services/saf/amf/amfnd/sudb.cc | 3 +++ osaf/services/saf/amf/amfnd/susm.cc | 10 -- 10 files changed, 68 insertions(+), 21 deletions(-) Testing Commands: - 1) set suMaintenanceCampaign for an SU 2) perform some failures on components in that SU Testing, Expected Results: -- 1) auto repair should not get invoked while suMaintenanceCampaign is set for that SU. Conditions of Submission: - <> Arch Built StartedLinux distro --- mipsn n mips64 n n x86 n n x86_64 y y powerpc n n powerpc64 n n Reviewer Checklist: --- [Submitters: make sure that your review doesn't trigger any checkmarks!] Your checkin has not passed review because (see checked entries): ___ Your RR template is generally incomplete; it has too many blank entries that need proper data filled in. ___ You have failed to nominate the proper persons for review and push. ___ Your patches do not have proper short+long header ___ You have grammar/spelling in your header that is unacceptable. ___ You have exceeded a sensible line length in your headers/comments/text. ___ You have failed to put in a proper Trac Ticket # into your commits. ___ You have incorrectly put/left internal data in your comments/files (i.e. internal bug tracking tool IDs, product names etc) ___ You have not given any evidence of testing beyond basic build tests. Demonstrate some level of runtime or other sanity testing. ___ You have ^M present in some of your files. These have to be removed. ___ You have needlessly changed whitespace or added whitespace crimes like trailing spaces, or spaces before tabs. ___ You have mixed real technical changes with whitespace and other cosmetic code cleanup changes. These have to be separate commits. ___ You need to refactor your submission into logical chunks; there is too much content into a single commit. ___ You have extraneous garbage in your review (merge commits etc) ___ You have giant attachments which should never have been sent; Instead you should place your content in a public tree to be pulled. ___ You have too many commits attached to an e-mail; resend as threaded commits, or place in a public tree for a pull. ___ You have resent this content multiple times without a clear indication of what has changed between each re-send. ___ You have failed to adequately and individually address all of the comments and change requests that were proposed in the initial review. ___ You have a misconfigured ~/.hgrc file (i.e. username, email etc) ___ Your computer have a badly configured date and time; confusing the the threaded patch review. ___ Your changes affect IPC mechanism, and you don't present any results for in-service upgradability test. ___ Your changes affect user manual and documentation, your patch series do not contain the patch that updates the Doxygen manual. -- Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot