Dear Mahesh, We do not have specific test case and environment for in-service update. So my test work is based on osaftest cases.
I tested with old d - new nd and new d - old nd cases. There are failed test cases but after investigating, they are intensional when old one cannot recognize new message. The only problem found is record to ticket #1922 and it is not related to long DN problem. Thank you and best regards, Hoang -----Original Message----- From: A V Mahesh [mailto:mahesh.va...@oracle.com] Sent: Thursday, July 28, 2016 4:04 PM To: Hoang Vo <hoang.m...@dektech.com.au> Cc: opensaf-devel@lists.sourceforge.net Subject: Re: [PATCH 6 of 8] cpsv: Apply new messages supporting extended SaNameT to CPD, CPND, and CPA v1 [#1574] Hi Hoang, I just started reviewing please share following : I hope this Long DN should support In-service upgrade , if so, please share the test case that you run , it will help me in reviewing and in test uncovered use/test cases. -AVM On 7/21/2016 3:04 PM, Hoang Vo wrote: > osaf/libs/agents/saf/cpa/cpa_api.c | 12 +++++++++--- > osaf/libs/agents/saf/cpa/cpa_mds.c | 2 +- > osaf/libs/common/cpsv/cpsv_evt.c | 1 + > osaf/services/saf/cpsv/cpd/cpd_evt.c | 10 +++++++--- > osaf/services/saf/cpsv/cpd/cpd_mds.c | 3 ++- > osaf/services/saf/cpsv/cpd/cpd_proc.c | 2 +- > osaf/services/saf/cpsv/cpnd/cpnd_evt.c | 26 ++++++++++++++++---------- > osaf/services/saf/cpsv/cpnd/cpnd_mds.c | 4 ++-- > osaf/services/saf/cpsv/cpnd/cpnd_proc.c | 6 +++--- > 9 files changed, 42 insertions(+), 24 deletions(-) > > > diff --git a/osaf/libs/agents/saf/cpa/cpa_api.c > b/osaf/libs/agents/saf/cpa/cpa_api.c > --- a/osaf/libs/agents/saf/cpa/cpa_api.c > +++ b/osaf/libs/agents/saf/cpa/cpa_api.c > @@ -880,6 +880,8 @@ SaAisErrorT saCkptCheckpointOpen(SaCkptH > } > > ckpt_name = osaf_extended_name_borrow(checkpointName); > + if (strlen(ckpt_name) >= kOsafMaxDnLength) > + return SA_AIS_ERR_INVALID_PARAM; > > /* SA_AIS_ERR_INVALID_PARAM, bullet 4 in SAI-AIS-CKPT-B.02.02 > Section 3.6.1 saCkptCheckpointOpen() and > saCkptCheckpointOpenAsync(), Return Values */ @@ -981,7 +983,7 @@ SaAisErrorT saCkptCheckpointOpen(SaCkptH > /* Populate & Send the Open Event to CPND */ > memset(&evt, 0, sizeof(CPSV_EVT)); > evt.type = CPSV_EVT_TYPE_CPND; > - evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_OPEN; > + evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_OPEN_2; > evt.info.cpnd.info.openReq.client_hdl = ckptHandle; > evt.info.cpnd.info.openReq.lcl_ckpt_hdl = lc_node->lcl_ckpt_hdl; > > @@ -1192,6 +1194,8 @@ SaAisErrorT saCkptCheckpointOpenAsync(Sa > } > > ckpt_name = osaf_extended_name_borrow(checkpointName); > + if (strlen(ckpt_name) >= kOsafMaxDnLength) > + return SA_AIS_ERR_INVALID_PARAM; > > /* SA_AIS_ERR_INVALID_PARAM, bullet 4 in SAI-AIS-CKPT-B.02.02 > Section 3.6.1 saCkptCheckpointOpen() and > saCkptCheckpointOpenAsync(), Return Values */ @@ -1277,7 +1281,7 @@ SaAisErrorT saCkptCheckpointOpenAsync(Sa > /* Populate & Send the Open Event to CPND */ > memset(&evt, 0, sizeof(CPSV_EVT)); > evt.type = CPSV_EVT_TYPE_CPND; > - evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_OPEN; > + evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_OPEN_2; > evt.info.cpnd.info.openReq.client_hdl = ckptHandle; > evt.info.cpnd.info.openReq.lcl_ckpt_hdl = lc_node->lcl_ckpt_hdl; > > @@ -1597,6 +1601,8 @@ SaAisErrorT saCkptCheckpointUnlink(SaCkp > } > > ckpt_name = osaf_extended_name_borrow(checkpointName); > + if (strlen(ckpt_name) >= kOsafMaxDnLength) > + return SA_AIS_ERR_INVALID_PARAM; > > /* retrieve CPA CB */ > m_CPA_RETRIEVE_CB(cb); > @@ -1635,7 +1641,7 @@ SaAisErrorT saCkptCheckpointUnlink(SaCkp > /* Populate evt.info.cpnd.info.unlinkReq & Call MDS sync Send */ > memset(&evt, 0, sizeof(CPSV_EVT)); > evt.type = CPSV_EVT_TYPE_CPND; > - evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_UNLINK; > + evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_UNLINK_2; > > osaf_extended_name_lend(ckpt_name, > &evt.info.cpnd.info.ulinkReq.ckpt_name); > > diff --git a/osaf/libs/agents/saf/cpa/cpa_mds.c > b/osaf/libs/agents/saf/cpa/cpa_mds.c > --- a/osaf/libs/agents/saf/cpa/cpa_mds.c > +++ b/osaf/libs/agents/saf/cpa/cpa_mds.c > @@ -515,7 +515,7 @@ static uint32_t cpa_mds_svc_evt(CPA_CB * > /* Populate & Send the Open Event to CPND */ > memset(&evt, 0, sizeof(CPSV_EVT)); > evt.type = CPSV_EVT_TYPE_CPND; > - evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_LIST_UPDATE; > + evt.info.cpnd.type = CPND_EVT_A2ND_CKPT_LIST_UPDATE_2; > evt.info.cpnd.info.ckptListUpdate.client_hdl = lc_node->cl_hdl; > osaf_extended_name_lend(lc_node->ckpt_name, > &evt.info.cpnd.info.ckptListUpdate.ckpt_name); > > diff --git a/osaf/libs/common/cpsv/cpsv_evt.c > b/osaf/libs/common/cpsv/cpsv_evt.c > --- a/osaf/libs/common/cpsv/cpsv_evt.c > +++ b/osaf/libs/common/cpsv/cpsv_evt.c > @@ -2414,6 +2414,7 @@ uint32_t cpsv_encode_extended_name(NCS_U > if(!osaf_is_an_extended_name(name)) > return NCSCC_RC_SUCCESS; > > + TRACE("length = %d", name->length); > SaConstStringT value = osaf_extended_name_borrow(name); > uint16_t length = osaf_extended_name_length(name); > > diff --git a/osaf/services/saf/cpsv/cpd/cpd_evt.c > b/osaf/services/saf/cpsv/cpd/cpd_evt.c > --- a/osaf/services/saf/cpsv/cpd/cpd_evt.c > +++ b/osaf/services/saf/cpsv/cpd/cpd_evt.c > @@ -110,6 +110,7 @@ void cpd_process_evt(CPSV_EVT *evt) > (void)cpd_evt_proc_timer_expiry(cb, &evt->info.cpd); > break; > case CPD_EVT_ND2D_CKPT_CREATE: > + case CPD_EVT_ND2D_CKPT_CREATE_2: > (void)cpd_evt_proc_ckpt_create(cb, &evt->info.cpd, &evt->sinfo); > break; > case CPD_EVT_ND2D_CKPT_USR_INFO: > @@ -119,6 +120,7 @@ void cpd_process_evt(CPSV_EVT *evt) > (void)cpd_evt_proc_ckpt_sec_info_upd(cb, &evt->info.cpd, &evt->sinfo); > break; > case CPD_EVT_ND2D_CKPT_UNLINK: > + case CPD_EVT_ND2D_CKPT_UNLINK_2: > (void)cpd_evt_proc_ckpt_unlink(cb, &evt->info.cpd, &evt->sinfo); > break; > case CPD_EVT_ND2D_CKPT_RDSET: > @@ -131,12 +133,14 @@ void cpd_process_evt(CPSV_EVT *evt) > (void)cpd_evt_proc_ckpt_destroy(cb, &evt->info.cpd, &evt->sinfo); > break; > case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME: > + case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2: > (void)cpd_evt_proc_ckpt_destroy_byname(cb, &evt->info.cpd, &evt->sinfo); > break; > case CPD_EVT_MDS_QUIESCED_ACK_RSP: > (void)cpd_evt_mds_quiesced_ack_rsp(cb, &evt->info.cpd, &evt->sinfo); > break; > case CPD_EVT_ND2D_CKPT_INFO_UPDATE: > + case CPD_EVT_ND2D_CKPT_INFO_UPDATE_2: > (void)cpd_evt_proc_ckpt_info_upd(cb, &evt->info.cpd, &evt->sinfo); > break; > > @@ -1484,15 +1488,15 @@ static uint32_t cpd_evt_proc_mds_evt(CPD > static void cpd_evt_free(CPSV_EVT *evt) > { > switch (evt->info.cpd.type) { > - case CPD_EVT_ND2D_CKPT_CREATE: > + case CPD_EVT_ND2D_CKPT_CREATE_2: > if (osaf_is_an_extended_name(&evt->info.cpd.info.ckpt_create.ckpt_name)) > free((void *)osaf_extended_name_borrow(&evt->info.cpd.info.ckpt_create.ckpt_name)); > break; > - case CPD_EVT_ND2D_CKPT_UNLINK: > + case CPD_EVT_ND2D_CKPT_UNLINK_2: > if (osaf_is_an_extended_name(&evt->info.cpd.info.ckpt_ulink.ckpt_name)) > free((void *)osaf_extended_name_borrow(&evt->info.cpd.info.ckpt_ulink.ckpt_name)); > break; > - case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME: > + case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2: > if (osaf_is_an_extended_name(&evt->info.cpd.info.ckpt_destroy_byname.ckpt_name) ) > free((void *)osaf_extended_name_borrow(&evt->info.cpd.info.ckpt_destroy_byname.ckpt_nam e)); > break; > diff --git a/osaf/services/saf/cpsv/cpd/cpd_mds.c > b/osaf/services/saf/cpsv/cpd/cpd_mds.c > --- a/osaf/services/saf/cpsv/cpd/cpd_mds.c > +++ b/osaf/services/saf/cpsv/cpd/cpd_mds.c > @@ -333,7 +333,7 @@ static uint32_t cpd_mds_enc(CPD_CB *cb, > > if (pevt->type == CPSV_EVT_TYPE_CPND) { > switch (pevt->info.cpnd.type) { > - case CPND_EVT_D2ND_CKPT_CREATE: > + case CPND_EVT_D2ND_CKPT_CREATE_2: > > pstream = ncs_enc_reserve_space(io_uba, 12); > if (!pstream) > @@ -431,6 +431,7 @@ static uint32_t cpd_mds_dec(CPD_CB *cb, > return rc; > > case CPD_EVT_ND2D_CKPT_INFO_UPDATE: > + case CPD_EVT_ND2D_CKPT_INFO_UPDATE_2: > ncs_dec_skip_space(dec_info->io_uba, 8); > rc = cpsv_nd2d_ckpt_info_update_decode(&msg_ptr->info.cpd.info.ckpt_info, dec_info->io_uba); > if (rc != NCSCC_RC_SUCCESS) { > diff --git a/osaf/services/saf/cpsv/cpd/cpd_proc.c > b/osaf/services/saf/cpsv/cpd/cpd_proc.c > --- a/osaf/services/saf/cpsv/cpd/cpd_proc.c > +++ b/osaf/services/saf/cpsv/cpd/cpd_proc.c > @@ -61,7 +61,7 @@ uint32_t cpd_noncolloc_ckpt_rep_create(C > /* Send the Replica create info to CPND */ > memset(&send_evt, 0, sizeof(CPSV_EVT)); > send_evt.type = CPSV_EVT_TYPE_CPND; > - send_evt.info.cpnd.type = CPND_EVT_D2ND_CKPT_CREATE; > + send_evt.info.cpnd.type = CPND_EVT_D2ND_CKPT_CREATE_2; > > osaf_extended_name_lend(map_info->ckpt_name, > &send_evt.info.cpnd.info.ckpt_create.ckpt_name); > > diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_evt.c > b/osaf/services/saf/cpsv/cpnd/cpnd_evt.c > --- a/osaf/services/saf/cpsv/cpnd/cpnd_evt.c > +++ b/osaf/services/saf/cpsv/cpnd/cpnd_evt.c > @@ -200,6 +200,7 @@ void cpnd_process_evt(CPSV_EVT *evt) > break; > > case CPND_EVT_A2ND_CKPT_OPEN: > + case CPND_EVT_A2ND_CKPT_OPEN_2: > (void)cpnd_evt_proc_ckpt_open(cb, &evt->info.cpnd, &evt->sinfo); > break; > > @@ -208,6 +209,7 @@ void cpnd_process_evt(CPSV_EVT *evt) > break; > > case CPND_EVT_A2ND_CKPT_UNLINK: > + case CPND_EVT_A2ND_CKPT_UNLINK_2: > (void)cpnd_evt_proc_ckpt_unlink(cb, &evt->info.cpnd, &evt->sinfo); > break; > > @@ -313,6 +315,7 @@ void cpnd_process_evt(CPSV_EVT *evt) > > case CPND_EVT_D2ND_CKPT_CREATE: /* happens for non-collocated and received > by CPNDs on SCXB */ > + case CPND_EVT_D2ND_CKPT_CREATE_2: > (void)cpnd_evt_proc_ckpt_create(cb, &evt->info.cpnd, &evt->sinfo); > break; > > @@ -360,6 +363,7 @@ void cpnd_process_evt(CPSV_EVT *evt) > break; > > case CPND_EVT_A2ND_CKPT_LIST_UPDATE: > + case CPND_EVT_A2ND_CKPT_LIST_UPDATE_2: > (void) cpnd_evt_proc_ckpt_ckpt_list_update(cb, &evt->info.cpnd, &evt->sinfo); > break; > > @@ -708,7 +712,7 @@ static uint32_t cpnd_evt_proc_ckpt_open( > > /* ckpt is not present locally */ > /* if not present send to cpd,get the details... > - Send the CPD_EVT_ND2D_CKPT_CREATE evt to CPD to get the ckpt details > + Send the CPD_EVT_ND2D_CKPT_CREATE_2 evt to CPD to get the ckpt > +details > Fill send_evt.info.cpd.info.ckpt_create */ > if (sinfo->stype == MDS_SENDTYPE_SNDRSP) { > timeout = > m_CPSV_CONVERT_SATIME_TEN_MILLI_SEC(evt->info.openReq.timeout); > @@ -718,7 +722,7 @@ static uint32_t cpnd_evt_proc_ckpt_open( > timeout = CPSV_WAIT_TIME; > > send_evt.type = CPSV_EVT_TYPE_CPD; > - send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_CREATE; > + send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_CREATE_2; > > osaf_extended_name_lend(ckpt_name, &send_evt.info.cpd.info.ckpt_create.ckpt_name); > send_evt.info.cpd.info.ckpt_create.attributes = > evt->info.openReq.ckpt_attrib; @@ -743,7 +747,7 @@ static uint32_t > cpnd_evt_proc_ckpt_open( > > memset(node, '\0', sizeof(CPND_CPD_DEFERRED_REQ_NODE)); > node->evt.type = CPSV_EVT_TYPE_CPD; > - node->evt.info.cpd.type = CPD_EVT_ND2D_CKPT_DESTROY_BYNAME; > + node->evt.info.cpd.type = CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2; > osaf_extended_name_lend(ckpt_name, > &node->evt.info.cpd.info.ckpt_destroy_byname.ckpt_name); > > ncs_enqueue(&cb->cpnd_cpd_deferred_reqs_list, (void *)node); @@ > -1151,7 +1155,7 @@ static uint32_t cpnd_evt_proc_ckpt_unlin > } > > send_evt.type = CPSV_EVT_TYPE_CPD; > - send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_UNLINK; > + send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_UNLINK_2; > send_evt.info.cpd.info.ckpt_ulink.ckpt_name = > evt->info.ulinkReq.ckpt_name; > > rc = cpnd_mds_msg_sync_send(cb, NCSMDS_SVC_ID_CPD, > cb->cpd_mdest_id, &send_evt, &out_evt, CPSV_WAIT_TIME); @@ -3954,13 +3958,13 @@ static uint32_t cpnd_proc_cpd_new_active > TRACE_4("cpnd cpd new active destroy failed with error:%d",out_evt->info.cpnd.info.destroy_ack.error); > } > break; > - case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME: > + case CPD_EVT_ND2D_CKPT_DESTROY_BYNAME_2: > if (out_evt && out_evt->info.cpnd.info.destroy_ack.error != SA_AIS_OK) { > TRACE_4("cpnd cpd new active destroy byname failed with error:%d",out_evt->info.cpnd.info.destroy_ack.error); > } > break; > > - case CPD_EVT_ND2D_CKPT_UNLINK: > + case CPD_EVT_ND2D_CKPT_UNLINK_2: > if (out_evt && out_evt->info.cpnd.info.ulink_ack.error != SA_AIS_OK) { > TRACE_4("cpnd cpd new active unlink failed with error:%d",out_evt->info.cpnd.info.ulink_ack.error); > } > @@ -4628,16 +4632,18 @@ uint32_t cpnd_evt_destroy(CPSV_EVT *evt) > } > break; > } > - } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_OPEN) { > + } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_OPEN_2) { > if (osaf_is_an_extended_name(&evt->info.cpnd.info.openReq.ckpt_name)) > free((void *)osaf_extended_name_borrow(&evt->info.cpnd.info.openReq.ckpt_name)); > - } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_UNLINK) { > + } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_UNLINK_2) { > if (osaf_is_an_extended_name(&evt->info.cpnd.info.ulinkReq.ckpt_name)) > free((void *)osaf_extended_name_borrow(&evt->info.cpnd.info.ulinkReq.ckpt_name)); > - } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_LIST_UPDATE) { > + } else if (evt->info.cpnd.type == CPND_EVT_A2ND_CKPT_LIST_UPDATE_2) > +{ > if (osaf_is_an_extended_name(&evt->info.cpnd.info.ckptListUpdate.ckpt_name)) > free((void *)osaf_extended_name_borrow(&evt->info.cpnd.info.ckptListUpdate.ckpt_name)); > - } else if (evt->info.cpnd.type == CPND_EVT_D2ND_CKPT_CREATE) { > + } else if (evt->info.cpnd.type == CPND_EVT_D2ND_CKPT_CREATE_2) { > + if (evt->info.cpnd.info.ckpt_create.ckpt_info.dest_list != NULL) > + > +m_MMGR_FREE_CPSV_SYS_MEMORY(evt->info.cpnd.info.ckpt_create.ckpt_info > +.dest_list); > if (osaf_is_an_extended_name(&evt->info.cpnd.info.ckpt_create.ckpt_name)) > free((void *)osaf_extended_name_borrow(&evt->info.cpnd.info.ckpt_create.ckpt_name)); > } > diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_mds.c > b/osaf/services/saf/cpsv/cpnd/cpnd_mds.c > --- a/osaf/services/saf/cpsv/cpnd/cpnd_mds.c > +++ b/osaf/services/saf/cpsv/cpnd/cpnd_mds.c > @@ -425,7 +425,7 @@ static uint32_t cpnd_mds_enc(CPND_CB *cb > TRACE_LEAVE(); > return rc; > > - case CPD_EVT_ND2D_CKPT_INFO_UPDATE: > + case CPD_EVT_ND2D_CKPT_INFO_UPDATE_2: > pstream = ncs_enc_reserve_space(io_uba, 8); > if (!pstream) > return m_CPSV_DBG_SINK(NCSCC_RC_FAILURE, @@ -593,7 +593,7 @@ > static uint32_t cpnd_mds_dec(CPND_CB *cb > rc = cpsv_refcnt_ckptid_decode(&msg_ptr->info.cpnd.info.refCntsetReq,dec_info->io _uba); > goto free; > > - case CPND_EVT_D2ND_CKPT_CREATE: > + case CPND_EVT_D2ND_CKPT_CREATE_2: > ncs_dec_skip_space(dec_info->io_uba, 12); > rc = cpsv_d2nd_ckpt_create_2_decode(&msg_ptr->info.cpnd.info.ckpt_create, dec_info->io_uba); > goto free; > diff --git a/osaf/services/saf/cpsv/cpnd/cpnd_proc.c > b/osaf/services/saf/cpsv/cpnd/cpnd_proc.c > --- a/osaf/services/saf/cpsv/cpnd/cpnd_proc.c > +++ b/osaf/services/saf/cpsv/cpnd/cpnd_proc.c > @@ -2529,7 +2529,7 @@ void cpnd_proc_ckpt_info_update(CPND_CB > LOG_NO("cpnd_proc_update_cpd_data::ckpt_name = %s[%llu]", (char*)ckpt_node->ckpt_name, > ckpt_node->ckpt_id); > send_evt.type = CPSV_EVT_TYPE_CPD; > - send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_INFO_UPDATE; > + send_evt.info.cpd.type = CPD_EVT_ND2D_CKPT_INFO_UPDATE_2; > send_evt.info.cpd.info.ckpt_info.ckpt_id = ckpt_node->ckpt_id; > osaf_extended_name_lend(ckpt_node->ckpt_name, &send_evt.info.cpd.info.ckpt_info.ckpt_name); > send_evt.info.cpd.info.ckpt_info.attributes = > ckpt_node->create_attrib; @@ -2550,12 +2550,12 @@ void cpnd_proc_ckpt_info_update(CPND_CB > else > send_evt.info.cpd.info.ckpt_info.is_last = false; > > - LOG_NO("cpnd_proc_update_cpd_data::send CPD_EVT_ND2D_CKPT_INFO_UPDATE"); > + LOG_NO("cpnd_proc_update_cpd_data::send > +CPD_EVT_ND2D_CKPT_INFO_UPDATE_2"); > rc = cpnd_mds_msg_sync_send(cb, NCSMDS_SVC_ID_CPD, cb->cpd_mdest_id, &send_evt, &out_evt, > CPSV_WAIT_TIME); > > if (rc != NCSCC_RC_SUCCESS) { > - LOG_ER("cpnd_proc_update_cpd_data::fail to send CPD_EVT_ND2D_CKPT_INFO_UPDATE"); > + LOG_ER("cpnd_proc_update_cpd_data::fail to send > +CPD_EVT_ND2D_CKPT_INFO_UPDATE_2"); > } > > if (out_evt == NULL) { ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel