osaf/services/saf/cpsv/cpd/cpd_proc.c |  24 +++++++++++-------------
 1 files changed, 11 insertions(+), 13 deletions(-)


Problem:
--------
A non-collocated checkpoint is created on PL3 with retention  duration = 0. 
Then it is opened
on PL4. In case the PL3 restarts, the checkpoint is destroyed althougth
there is a client on PL4 using it. This happens because the CPD uses incorrect
algorithm to start retention duration timer.

Solution:
--------
The CPD starts retention duration timer if the checkpoint is no longer used 
(i.e num_users = 0)

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
@@ -765,22 +765,20 @@ uint32_t cpd_process_cpnd_down(CPD_CB *c
 
                                }
                                /* if(ckpt_node->is_active_exists == false) */
-                               if ((ckpt_node->ckpt_on_scxb1 == 0) && 
(ckpt_node->ckpt_on_scxb2 == 0)) {
-                                       if 
(!cpd_is_noncollocated_replica_present_on_payload(cb, ckpt_node)) {
+                               if (ckpt_node->num_users == 0) {
 
-                                               /* Zero Clients for  
non-collocated Ckpt , Start ret timer , 
-                                                  broadcast to all CPNDs */
-                                               memset(&send_evt, 0, 
sizeof(CPSV_EVT));
-                                               send_evt.type = 
CPSV_EVT_TYPE_CPND;
-                                               send_evt.info.cpnd.type = 
CPND_EVT_D2ND_CKPT_RDSET;
-                                               
send_evt.info.cpnd.info.rdset.ckpt_id = ckpt_node->ckpt_id;
-                                               
send_evt.info.cpnd.info.rdset.type = CPSV_CKPT_RDSET_START;
-                                               (void)cpd_mds_bcast_send(cb, 
&send_evt, NCSMDS_SVC_ID_CPND);
+                                       /* Zero Clients for  non-collocated 
Ckpt , Start ret timer , 
+                                          broadcast to all CPNDs */
+                                       memset(&send_evt, 0, sizeof(CPSV_EVT));
+                                       send_evt.type = CPSV_EVT_TYPE_CPND;
+                                       send_evt.info.cpnd.type = 
CPND_EVT_D2ND_CKPT_RDSET;
+                                       send_evt.info.cpnd.info.rdset.ckpt_id = 
ckpt_node->ckpt_id;
+                                       send_evt.info.cpnd.info.rdset.type = 
CPSV_CKPT_RDSET_START;
+                                       (void)cpd_mds_bcast_send(cb, &send_evt, 
NCSMDS_SVC_ID_CPND);
 
-                                               TRACE_4("cpd ckpt rdset success 
for ckpt_id:%llx,active dest:%"PRIu64,
-                                                       ckpt_node->ckpt_id, 
ckpt_node->active_dest);
+                                       TRACE_4("cpd ckpt rdset success for 
ckpt_id:%llx,active dest:%"PRIu64,
+                                               ckpt_node->ckpt_id, 
ckpt_node->active_dest);
 
-                                       }
                                }
                                /* This is to delete the node from reploc_tree 
*/
                                cpd_ckpt_reploc_get(&cb->ckpt_reploc_tree, 
&key_info, &rep_info);

------------------------------------------------------------------------------
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=267308311&iu=/4140
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to