Hi Nhat Pham,

ACK  , tested also .

Note for cpsv users : issues exposed after this fix  will be addressed 
in ticket #1655

-AVM

On 1/5/2016 9:16 AM, A V Mahesh wrote:
> Hi Nhat Pham,
>
> On 1/5/2016 8:19 AM, Nhat Pham wrote:
>>
>> But the replica IMM objects are not created.This is because when 
>> unlink the checkpoint, theCPD doesn’t delete relating 
>> nodesfromckpt_reploc_tree.
>>
>> This should be fixed too.
>>
>
>  We will do in a New ticket ?  or you would like to adders in this 
> ticket it self
>
> -AVM
>
> On 1/5/2016 8:19 AM, Nhat Pham wrote:
>> RE: [devel] [PATCH 1 of 1] cpsv: improve handling unlink and close 
>> non-collocated checkpoint [#1616]
>>
>> Hi Mahesh,
>>
>> For the case you described below,anew replica is created with same name.
>>
>> root@PL-3:~# ll /run/shm
>>
>> total 696
>>
>> drwxrwxrwt  2 root root    100 Jan  5 09:02 ./
>>
>> drwxr-xr-x 11 root root    440 Jan  5 09:01 ../
>>
>> -rw-r--r--  1 root root 704008 Jan  5 09:00 
>> opensaf_CPND_CHECKPOINT_INFO_131855
>>
>> -rw-r--r--  1 root root   8872 Jan  5 09:00opensaf_safCkpt=tes_131855_1
>>
>> -rw-r--r--  1 root root   8872 Jan  5 09:02opensaf_safCkpt=tes_131855_2
>>
>> But the replica IMM objects are not created.This is because when 
>> unlink the checkpoint, theCPD doesn’t delete relating 
>> nodesfromckpt_reploc_tree.
>>
>> This should be fixed too.
>>
>> root@PL-3:~# immfind | grep safCkpt
>>
>> safApp=safCkptService
>>
>> safCkpt=testç===============No Replica IMM object is created
>>
>> Best regards,
>>
>> Nhat Pham
>>
>> ==== Create checkpoint safCkpt=test
>>
>> root@PL-3:~# immfind | grep safCkpt
>>
>> safApp=safCkptService
>>
>> safCkpt=test
>>
>> safReplica=safNode=PL-3\,safCluster=myClmCluster,safCkpt=test
>>
>> safReplica=safNode=SC-1\,safCluster=myClmCluster,safCkpt=test
>>
>> safReplica=safNode=SC-2\,safCluster=myClmCluster,safCkpt=test
>>
>> root@PL-3:~# ll /run/shm/
>>
>> total 692
>>
>> drwxrwxrwt  2 root root     80 Jan  5 09:00 ./
>>
>> drwxr-xr-x 11 root root    440 Jan  5 09:01 ../
>>
>> -rw-r--r--  1 root root 704008 Jan  5 09:00 
>> opensaf_CPND_CHECKPOINT_INFO_131855
>>
>> -rw-r--r--  1 root root   8872 Jan  5 09:00 opensaf_safCkpt=tes_131855_1
>>
>> ====Unlinkcheckpoint safCkpt=test– checkpoint is still being used.
>>
>> root@PL-3:~# ll /run/shm/
>>
>> total 692
>>
>> drwxrwxrwt  2 root root     80 Jan  5 09:00 ./
>>
>> drwxr-xr-x 11 root root    440 Jan  5 09:01 ../
>>
>> -rw-r--r--  1 root root 704008 Jan  5 09:00 
>> opensaf_CPND_CHECKPOINT_INFO_131855
>>
>> -rw-r--r--  1 root root   8872 Jan  5 09:00 opensaf_safCkpt=tes_131855_1
>>
>> root@PL-3:~# immfind | grep safCkpt
>>
>> safApp=safCkptService
>>
>> ====Create a newcheckpointwith same namesafCkpt=test
>>
>> root@PL-3:~# immfind | grep safCkpt
>>
>> safApp=safCkptService
>>
>> safCkpt=testç===============No Replica IMM object is created
>>
>> root@PL-3:~# ll /run/shm
>>
>> total 696
>>
>> drwxrwxrwt  2 root root    100 Jan  5 09:02 ./
>>
>> drwxr-xr-x 11 root root    440 Jan  5 09:01 ../
>>
>> -rw-r--r--  1 root root 704008 Jan  5 09:00 
>> opensaf_CPND_CHECKPOINT_INFO_131855
>>
>> -rw-r--r--  1 root root   8872 Jan  5 09:00 opensaf_safCkpt=tes_131855_1
>>
>> -rw-r--r--  1 root root   8872 Jan  5 09:02 opensaf_safCkpt=tes_131855_2
>>
>> -----Original Message-----
>> From: A V Mahesh [mailto:[email protected]]
>> Sent: Monday, January 4, 2016 11:29 AM
>> To: [email protected]
>> Subject: Re: [devel] [PATCH 1 of 1] cpsv: improve handling unlink and 
>> close non-collocated checkpoint [#1616]
>>
>> Hi Nhat Pham,
>>
>> As this patch fixed the issue of `unlinked checkpoint is deleted 
>> although there is a client using the checkpoint`
>>
>> Can you please verify following subsequent case which is also to be 
>> addressed :
>>
>> Say  multiple application opened  checkpoint  and one application 
>> closed with unlink , still some application are uniting the 
>> checkpoint  , at that moment  the checkpoint is re-created by 
>> specifying in an open call the SA_CKPT_CHECKPOINT_CREATE flag and the 
>> same name of the checkpoint which is to be unlinked but checkpoint is 
>> possibly not yet finally deleted.
>>
>> According to CPSV specification A new instance of the checkpoint is 
>> created while the old instance of the checkpoint is possibly not yet 
>> finally deleted.
>>
>> this means , at CPND  while open called the SA_CKPT_CHECKPOINT_CREATE
>>
>> flag and the same name of the checkpoint where  checkpoint  exist 
>> with same name  and unlink is already marked for that old instence 
>> CPND should create a New of  checkpoint/ replica ( this mean at a 
>> given point of time two instance of cktp/replicas exist on cluster)
>>
>>
>> -AVM
>>
>> On 12/9/2015 11:48 AM, A V Mahesh wrote:
>>
>> > Hi,
>>
>> >
>>
>> > Ok got it , I will review both cases
>>
>> >
>>
>> > -AVM
>>
>> >
>>
>> > On 12/9/2015 11:34 AM, Nhat Pham wrote:
>>
>> >> Hi Mahesh,
>>
>> >>
>>
>> >> For 'several problem', I mean 3 use cases where:
>>
>> >> 1,2 : the checkpoint replicas are not deleted immediately even no
>>
>> >> client exists
>>
>> >> 3: the checkpoint is deleted although there is a client using the
>>
>> >> checkpoint.
>>
>> >>
>>
>> >> The patch only addresses the problem in these 3 use cases.
>>
>> >>
>>
>> >> Best regards,
>>
>> >> Nhat Pham
>>
>> >>
>>
>> >> -----Original Message-----
>>
>> >> From: A V Mahesh [mailto:[email protected]]
>>
>> >> Sent: Wednesday, December 9, 2015 12:21 PM
>>
>> >> To: Nhat Pham 
>> >> <[email protected]<mailto:[email protected]>>;[email protected]<mailto:[email protected]>
>>
>> >> Cc:[email protected]<mailto:[email protected]>
>>
>> >> Subject: Re: [PATCH 1 of 1] cpsv: improve handling unlink and close
>>
>> >> non-collocated checkpoint [#1616]
>>
>> >>
>>
>> >> Hi Nhat
>>
>> >>
>>
>> >>    >>There are several problems relating to closing and unlinking
>>
>> >> non-collocated checkpoint.
>>
>> >>
>>
>> >> I can see only one problem unlinked non-collocated checkpoint is not
>>
>> >> getting deleted immediate even No client exist for that non-collocated 
>> >> checkpoint.
>>
>> >>
>>
>> >> I see 1,2 ,3 areuse-case of  non-collocated checkpoint , in all
>>
>> >> cases the the non-collocated checkpoint is not getting deleted
>>
>> >> immediately is that you mean by `several problems` ?
>>
>> >>
>>
>> >> Please let me know is any other portable exist and it is being
>>
>> >> addressed in this patch , so that I can look the patch in that point of 
>> >> view as well .
>>
>> >>
>>
>> >> -AVM
>>
>> >>
>>
>> >>
>>
>> >> On 12/9/2015 8:06 AM, Nhat Pham wrote:
>>
>> >>>osaf/services/saf/cpsv/cpnd/cpnd_evt.c  |  51 +++++++++++++------------
>>
>> >>>osaf/services/saf/cpsv/cpnd/cpnd_proc.c |  66
>>
>> >> ++++++++++++++++++--------------
>>
>> >>>     2 files changed, 64 insertions(+), 53 deletions(-)
>>
>> >>>
>>
>> >>>
>>
>> >>> Problem:
>>
>> >>> --------
>>
>> >>> There are several problems relating to closing and unlinking
>>
>> >> non-collocated checkpoint.
>>
>> >>> 1. A non-collocated checkpoint is firstly created on SC-2. It is
>>
>> >>> closed on
>>
>> >> SC-2. It is opened on PL-3.
>>
>> >>> It is unlinked. It is closes on PL-3. The replicas on SCs are not
>>
>> >>> destroyed although the checkpoint is unlinked and no client is using it.
>>
>> >>>
>>
>> >>> 2. A non-collocated checkpoint is firstly created on PL-3. It is
>>
>> >>> closed on
>>
>> >> PL-3. It is opened on SC-2.
>>
>> >>> It is unlinked. It is closes on SC-2. The replicas on SCs and PL-3
>>
>> >>> are not destroyed although the checkpoint is unlinked and no client
>>
>> >>> is using
>>
>> >> it.
>>
>> >>> 3. A non-collocated checkpoint is firstly created on PL-3. It is
>>
>> >>> closed on
>>
>> >> PL-3. It is opened on PL-4.
>>
>> >>> It is unlinked. The replicas on SCs and PL-3 are destroyed although
>>
>> >>> the
>>
>> >> checkpoint is using on PL-4.
>>
>> >>> Solution:
>>
>> >>> ---------
>>
>> >>> The main cause of above problems is to use checking if
>>
>> >>> non-collocated replica is on PL to decide destroying the replicas.
>>
>> >>> This mechanism is not correct in some cases. The solution is use
>>
>> >>> another mechanism which checks if there is any client using the
>>
>> >>> checkpoint on the cluster by
>>
>> >> verifying if the retention duration timer is active or not.
>>
>> >>> Test:
>>
>> >>> -----
>>
>> >>> Following test cases were executed for both non-collocated and
>>
>> >>> collocated checkpoint to verify the solution:
>>
>> >>> 1. verify_unlink_ckpt_created_on_sc_before_close_it_from_sc
>>
>> >>> 2. verify_unlink_ckpt_created_on_sc_before_close_it_from_pl
>>
>> >>> 3. verify_unlink_ckpt_created_on_sc_after_close_it
>>
>> >>> 4. verify_unlink_ckpt_created_on_pl_before_close_it_from_pl
>>
>> >>> 5. verify_unlink_ckpt_created_on_pl_before_close_it_from_sc
>>
>> >>> 6. verify_unlink_ckpt_created_on_pl_before_close_it_from_other_pl
>>
>> >>> 7. verify_unlink_ckpt_created_on_pl_after_close_it
>>
>> >>>
>>
>> >>> 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
>>
>> >>> @@ -26,7 +26,7 @@
>>
>> >>>
>>
>> >>>     #include "cpnd.h"
>>
>> >>>
>>
>> >>> -extern uint32_t cpnd_ckpt_non_collocated_rplica_close(CPND_CB *cb,
>>
>> >>> CPND_CKPT_NODE *cp_node, SaAisErrorT *error);
>>
>> >>> +extern uint32_t cpnd_proc_rdset_start(CPND_CB *cb, CPND_CKPT_NODE
>>
>> >>> +*cp_node);
>>
>> >>>     extern uint32_t cpnd_proc_non_colloc_rt_expiry(CPND_CB *cb,
>>
>> >>> SaCkptCheckpointHandleT ckpt_id);
>>
>> >>>
>>
>> >>>     static uint32_t cpnd_evt_proc_cb_dump(CPND_CB *cb); @@ -1194,8
>>
>> >>> +1194,7 @@ static uint32_t cpnd_evt_proc_ckpt_unlin
>>
>> >>>
>>
>> >> /********************************************************************
>>
>> >> *******
>>
>> >> *
>>
>> >>>      * Name          : cpnd_evt_proc_ckpt_unlink_info
>>
>> >>>      *
>>
>> >>> - * Description   : Function to process check point unlink
>>
>> >>> - *from Applications.
>>
>> >>> + * Description   : Function to process checkpoint unlink event from CPD
>>
>> >>>      *
>>
>> >>>      * Arguments     : CPND_CB *cb - CPND CB pointer
>>
>> >>>*                 CPSV_EVT *evt - Received Event structure
>>
>> >>> @@ -1209,10 +1208,11 @@ static uint32_t cpnd_evt_proc_ckpt_unlin
>>
>> >>>     {
>>
>> >>>uint32_t rc = NCSCC_RC_SUCCESS;
>>
>> >>>CPND_CKPT_NODE *cp_node = NULL;
>>
>> >>> -   SaAisErrorT error;
>>
>> >>> +   SaAisErrorT error = SA_AIS_OK;
>>
>> >>>CPSV_SEND_INFO sinfo_cpa;
>>
>> >>>CPSV_EVT send_evt;
>>
>> >>>             bool sinfo_cpa_flag = false;
>>
>> >>> +   bool destroy_replica = false;
>>
>> >>>
>>
>> >>>TRACE_ENTER();
>>
>> >>>memset(&send_evt, '\0', sizeof(CPSV_EVT)); @@ -1220,25 +1220,35
>>
>> >>> @@ static uint32_t cpnd_evt_proc_ckpt_unlin
>>
>> >>>             if (cp_node == NULL) {
>>
>> >>>TRACE_4("cpnd ckpt node get failed for
>>
>> >> ckpt_id:%llx",evt->info.ckpt_ulink.ckpt_id);
>>
>> >>>rc = NCSCC_RC_FAILURE;
>>
>> >>> -send_evt.info.cpa.info.ulinkRsp.error =
>>
>> >> SA_AIS_ERR_NOT_EXIST;
>>
>> >>> +           error = SA_AIS_ERR_NOT_EXIST;
>>
>> >>>goto agent_rsp;
>>
>> >>>             }
>>
>> >>>
>>
>> >>>sinfo_cpa = cp_node->cpa_sinfo;
>>
>> >>>sinfo_cpa_flag = cp_node->cpa_sinfo_flag;
>>
>> >>> +
>>
>> >>>             if (cp_node->is_close == true) {
>>
>> >>> -send_evt.info.cpa.info.ulinkRsp.error = SA_AIS_OK;
>>
>> >>> +           /* For non-collocated checkpoint if retention duration timer
>>
>> >> is active
>>
>> >>> +            * (i.e the checkpoint is not opened by any client in
>>
>> >> cluster) the replica
>>
>> >>> +            * should be destroyed in this case */
>>
>> >>> +           if
>>
>> >> (!m_CPND_IS_COLLOCATED_ATTR_SET(cp_node->create_attrib.creationFlags)
>>
>> >> ) {
>>
>> >>> +if (cp_node->ret_tmr.is_active) {
>>
>> >>> +        TRACE_1("cpnd destroy replica ckpt_id:%llx -
>>
>> >> No client opens the non-collocated checkpoint ",
>>
>> >>> +                cp_node->ckpt_id);
>>
>> >>> +        destroy_replica = true;
>>
>> >>> +}
>>
>> >>> +           }
>>
>> >>> +           /* For collocated checkpoint, there is no client opening the
>>
>> >> checkpoint on this
>>
>> >>> +            * node. The replica should be destroyed. */
>>
>> >>> +           else
>>
>> >>> +destroy_replica = true;
>>
>> >>> +   }
>>
>> >>> +
>>
>> >>> +   if (destroy_replica == true) {
>>
>> >>>/* check timer is present,if yes...stop the timer and
>>
>> >> destroy shm_info and the node */
>>
>> >>>if (cp_node->ret_tmr.is_active)
>>
>> >>>        cpnd_tmr_stop(&cp_node->ret_tmr);
>>
>> >>>
>>
>> >>> -           if
>>
>> >> (!m_CPND_IS_COLLOCATED_ATTR_SET(cp_node->create_attrib.creationFlags)
>>
>> >> ) {
>>
>> >>> -if
>>
>> >> (cpnd_is_noncollocated_replica_present_on_payload(cb, cp_node)) {
>>
>> >>> -        rc = NCSCC_RC_SUCCESS;
>>
>> >>> -        goto agent_rsp;
>>
>> >>> -}
>>
>> >>> -           }
>>
>> >>> -
>>
>> >>>rc = cpnd_ckpt_replica_destroy(cb, cp_node, &error);
>>
>> >>>if (rc == NCSCC_RC_FAILURE) {
>>
>> >>>        TRACE_4("cpnd ckpt replica destroy failed for
>>
>> >> ckpt_id:%llx,error
>>
>> >>> %u",cp_node->ckpt_id, error); @@ -1260,8 +1270,6 @@ static uint32_t
>>
>> >>> cpnd_evt_proc_ckpt_unlin
>>
>> >>>
>>
>> >>>}
>>
>> >>>TRACE_4("cpnd proc ckpt unlink set for
>>
>> >>> ckpt_id:%llx",cp_node->ckpt_id);
>>
>> >>> -
>>
>> >>> -send_evt.info.cpa.info.ulinkRsp.error = SA_AIS_OK;
>>
>> >>>             }
>>
>> >>>
>>
>> >>>      agent_rsp:
>>
>> >>> @@ -1269,6 +1277,7 @@ static uint32_t cpnd_evt_proc_ckpt_unlin
>>
>> >>>             if (sinfo_cpa_flag == 1) {
>>
>> >>>send_evt.type = CPSV_EVT_TYPE_CPA;
>>
>> >>>send_evt.info.cpa.type = CPA_EVT_ND2A_CKPT_UNLINK_RSP;
>>
>> >>> +send_evt.info.cpa.info.ulinkRsp.error = error;
>>
>> >>>rc = cpnd_mds_send_rsp(cb, &sinfo_cpa, &send_evt);
>>
>> >>>
>>
>> >>>             }
>>
>> >>> @@ -1767,7 +1776,6 @@ static uint32_t cpnd_evt_proc_ckpt_activ
>>
>> >>>     static uint32_t cpnd_evt_proc_ckpt_rdset_info(CPND_CB *cb,
>>
>> >>> CPND_EVT
>>
>> >> *evt, CPSV_SEND_INFO *sinfo)
>>
>> >>>     {
>>
>> >>>CPND_CKPT_NODE *cp_node = NULL;
>>
>> >>> -   SaAisErrorT error = SA_AIS_OK;
>>
>> >>>
>>
>> >>>TRACE_ENTER();
>>
>> >>>             /* get cp_node from ckpt_info_db */ @@ -1791,14 +1799,9 @@
>>
>> >>> static uint32_t cpnd_evt_proc_ckpt_rdset
>>
>> >>>             }
>>
>> >>>
>>
>> >>>             if (evt->info.rdset.type == CPSV_CKPT_RDSET_START) {
>>
>> >>> -           if
>>
>> >> (!m_CPND_IS_COLLOCATED_ATTR_SET(cp_node->create_attrib.creationFlags)
>>
>> >> ) {
>>
>> >>> -if (cpnd_ckpt_non_collocated_rplica_close(cb,
>>
>> >> cp_node, &error) == NCSCC_RC_FAILURE) {
>>
>> >>> -        TRACE_4("cpnd ckpt relica close failed for
>>
>> >> client_hdl:%llx,ckpt_id:%llx",evt->info.closeReq.client_hdl,
>>
>> >> cp_node->ckpt_id);
>>
>> >>> -
>>
>> >>> -}
>>
>> >>> -TRACE_LEAVE();
>>
>> >>> -return NCSCC_RC_SUCCESS;
>>
>> >>> -           }
>>
>> >>> +cpnd_proc_rdset_start(cb, cp_node);
>>
>> >>> +TRACE_LEAVE();
>>
>> >>> +           return NCSCC_RC_SUCCESS;
>>
>> >>>             }
>>
>> >>>
>>
>> >>>             /* if timer already started on one of the node then what to 
>> >>> do!!!
>>
>> >>> 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
>>
>> >>> @@ -2297,53 +2297,61 @@ uint32_t cpnd_ckpt_replica_close(CPND_CB
>>
>> >>>     }
>>
>> >>>
>>
>> >>>
>>
>> >> /********************************************************************
>>
>> >> *******
>>
>> >> *************
>>
>> >>> - * Name          : cpnd_ckpt_non_collocated_rplica_close
>>
>> >>> + * Name          : cpnd_proc_rdset_start
>>
>> >>>      *
>>
>> >>> - * Description   : This is the function close the non_collocated Ckpt
>>
>> >> Replica
>>
>> >>> + * Description   : This is the function process the event
>>
>> >> CPSV_CKPT_RDSET_START
>>
>> >>> + *This event is only applicable for non-collocated
>>
>> >> checkpoint
>>
>> >>>      * Arguments     : cb       - CPND Control Block pointer
>>
>> >>>*                 cp_node  - pointer to checkpoint node
>>
>> >>>      *
>>
>> >>>      * Return Values : NCSCC_RC_SUCCESS/NCSCC_RC_FAILURE
>>
>> >>>
>>
>> >>> ********************************************************************
>>
>> >>> **
>>
>> >>> *******************/
>>
>> >>>
>>
>> >>> -uint32_t cpnd_ckpt_non_collocated_rplica_close(CPND_CB *cb,
>>
>> >>> CPND_CKPT_NODE *cp_node, SaAisErrorT *error)
>>
>> >>> +uint32_t cpnd_proc_rdset_start(CPND_CB *cb, CPND_CKPT_NODE
>>
>> >>> +*cp_node)
>>
>> >>>     {
>>
>> >>>             SaTimeT presentTime;
>>
>> >>> +   SaAisErrorT error = SA_AIS_OK;
>>
>> >>>uint32_t rc = NCSCC_RC_SUCCESS;
>>
>> >>>
>>
>> >>>TRACE_ENTER();
>>
>> >>> -   if (cp_node->ckpt_lcl_ref_cnt == 0) {
>>
>> >>>
>>
>> >>> -cp_node->is_close = true;
>>
>> >>> -cpnd_restart_set_close_flag(cb, cp_node);
>>
>> >>> +   if
>>
>> >> (m_CPND_IS_COLLOCATED_ATTR_SET(cp_node->create_attrib.creationFlags))
>>
>> >> {
>>
>> >>> +TRACE_LEAVE();
>>
>> >>> +           return NCSCC_RC_SUCCESS;
>>
>> >>> +   }
>>
>> >>>
>>
>> >>> -           if (cp_node->is_unlink != true &&
>>
>> >>> -
>>
>> >> (m_CPSV_CONVERT_SATIME_TEN_MILLI_SEC(cp_node->create_attrib.retention
>>
>> >> Duratio
>>
>> >> n) != 0)) {
>>
>> >>> -m_GET_TIME_STAMP(presentTime);
>>
>> >>> -cpnd_restart_update_timer(cb, cp_node, presentTime);
>>
>> >>> +   if (cp_node->ckpt_lcl_ref_cnt != 0) {
>>
>> >>> +LOG_ER("cpnd receives CPND_EVT_D2ND_RDSET_INFO with START
>>
>> >> while ckpt_lcl_ref_cnt = %d", cp_node->ckpt_lcl_ref_cnt);
>>
>> >>> +TRACE_LEAVE();
>>
>> >>> +           return NCSCC_RC_FAILURE;
>>
>> >>> +   }
>>
>> >>>
>>
>> >>> -cp_node->ret_tmr.type =
>>
>> >> CPND_TMR_TYPE_NON_COLLOC_RETENTION;
>>
>> >>> -cp_node->ret_tmr.uarg = cb->cpnd_cb_hdl_id;
>>
>> >>> -cp_node->ret_tmr.ckpt_id = cp_node->ckpt_id;
>>
>> >>> -cpnd_tmr_start(&cp_node->ret_tmr,
>>
>> >>> -
>>
>> >> m_CPSV_CONVERT_SATIME_TEN_MILLI_SEC(cp_node->create_attrib.retentionD
>>
>> >> uration
>>
>> >> ));
>>
>> >>> -TRACE_1("cpnd ckpt ret tmr success
>>
>> >> ckpt_id:%llx",cp_node->ckpt_id);
>>
>> >>> -           } else {
>>
>> >>> -/* Check for Non-Collocated Replica */
>>
>> >>> -if
>>
>> >> (cpnd_is_noncollocated_replica_present_on_payload(cb, cp_node)) {
>>
>> >>> -        return NCSCC_RC_SUCCESS;
>>
>> >>> -}
>>
>> >>> -rc = cpnd_ckpt_replica_destroy(cb, cp_node, error);
>>
>> >>> -if (rc == NCSCC_RC_FAILURE) {
>>
>> >>> -        TRACE_4("cpnd ckpt replica destroy failed
>>
>> >> ckpt_id:%llx",cp_node->ckpt_id);
>>
>> >>> -        return NCSCC_RC_FAILURE;
>>
>> >>> -}
>>
>> >>> -TRACE_1("cpnd ckpt replica destroy failed
>>
>> >> ckpt_id:%llx",cp_node->ckpt_id);
>>
>> >>> +cp_node->is_close = true;
>>
>> >>> +cpnd_restart_set_close_flag(cb, cp_node);
>>
>> >>>
>>
>> >>> -cpnd_restart_shm_ckpt_free(cb, cp_node);
>>
>> >>> -cpnd_ckpt_node_destroy(cb, cp_node);
>>
>> >>> +   if (cp_node->is_unlink != true &&
>>
>> >>> +
>>
>> >> (m_CPSV_CONVERT_SATIME_TEN_MILLI_SEC(cp_node->create_attrib.retention
>>
>> >> Duratio
>>
>> >> n) != 0)) {
>>
>> >>> +m_GET_TIME_STAMP(presentTime);
>>
>> >>> +cpnd_restart_update_timer(cb, cp_node, presentTime);
>>
>> >>> +
>>
>> >>> +cp_node->ret_tmr.type = CPND_TMR_TYPE_NON_COLLOC_RETENTION;
>>
>> >>> +cp_node->ret_tmr.uarg = cb->cpnd_cb_hdl_id;
>>
>> >>> +cp_node->ret_tmr.ckpt_id = cp_node->ckpt_id;
>>
>> >>> +cpnd_tmr_start(&cp_node->ret_tmr,
>>
>> >>> +
>>
>> >> m_CPSV_CONVERT_SATIME_TEN_MILLI_SEC(cp_node->create_attrib.retentionD
>>
>> >> uration
>>
>> >> ));
>>
>> >>> +TRACE_1("cpnd ckpt ret tmr success
>>
>> >> ckpt_id:%llx",cp_node->ckpt_id);
>>
>> >>> +   } else {
>>
>> >>> +           rc = cpnd_ckpt_replica_destroy(cb, cp_node, &error);
>>
>> >>> +           if (rc == NCSCC_RC_FAILURE) {
>>
>> >>> +LOG_ER("cpnd ckpt replica destroy failed
>>
>> >> ckpt_id:%llx, error:%d",cp_node->ckpt_id, error);
>>
>> >>> +return NCSCC_RC_FAILURE;
>>
>> >>>}
>>
>> >>> +TRACE_1("cpnd ckpt replica destroy success
>>
>> >>> +ckpt_id:%llx",cp_node->ckpt_id);
>>
>> >>> +
>>
>> >>> +cpnd_restart_shm_ckpt_free(cb, cp_node);
>>
>> >>> +cpnd_ckpt_node_destroy(cb, cp_node);
>>
>> >>>             }
>>
>> >>> +
>>
>> >>>TRACE_LEAVE();
>>
>> >>>             return NCSCC_RC_SUCCESS;
>>
>> >>>     }
>>
>> >
>>
>> > ----------------------------------------------------------------------
>>
>> > -------- _______________________________________________
>>
>> > Opensaf-devel mailing list
>>
>> ><mailto:[email protected]>[email protected]
>>
>> ><https://lists.sourceforge.net/lists/listinfo/opensaf-devel>https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>>
>>
>> ------------------------------------------------------------------------------
>>
>> _______________________________________________
>>
>> Opensaf-devel mailing list
>>
>> [email protected]<mailto:[email protected]>
>>
>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel
>>
>

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to