Hi Hoang, The CPD_CPND_DOWN_RETENTION is to recognize, ether CPND temporarily down or permanently down, this is started a CPND is down and based on cpd_evt_proc_timer_expiry(), cpd recognize that the CPND is complete down and do cleanup, else cpnd rejoined with in CPD_CPND_DOWN_RETENTION_TIME , the CPD_CPND_DOWN_RETENTION is stoped.
If we stop CPD_CPND_DOWN_RETENTION timer in cpd_process_cpnd_dow(), do cpd recognize the CPD permanently down, the cpd_process_cpnd_dow() being called in multiple flows, can you please check all the flows, is stopping CPD_CPND_DOWN_RETENTION timer has any impact ? -AVM On 2/9/2017 1:35 PM, Hoang Vo wrote: > src/ckpt/ckptd/cpd_proc.c | 11 ++++++++++- > 1 files changed, 10 insertions(+), 1 deletions(-) > > > problem: > In case failover multiple times, the cpnd is down for a moment so there is no > cpnd opening specific checkpoint. This lead to retention timer is trigger. > When cpnd is up again but has different pid so retention timer is not stoped. > Repica is deleted at retention while its information still be in ckpt > database. > That cause problem > > Fix: > - Stop timer of removed node. > - Update data in patricia trees (for retention value consistence). > > diff --git a/src/ckpt/ckptd/cpd_proc.c b/src/ckpt/ckptd/cpd_proc.c > --- a/src/ckpt/ckptd/cpd_proc.c > +++ b/src/ckpt/ckptd/cpd_proc.c > @@ -679,7 +679,8 @@ uint32_t cpd_process_cpnd_down(CPD_CB *c > cpd_cpnd_info_node_find_add(&cb->cpnd_tree, cpnd_dest, &cpnd_info, > &add_flag); > if (!cpnd_info) > return NCSCC_RC_SUCCESS; > - > + /* Stop timer before processing down */ > + cpd_tmr_stop(&cpnd_info->cpnd_ret_timer); > cref_info = cpnd_info->ckpt_ref_list; > > while (cref_info) { > @@ -989,6 +990,14 @@ uint32_t cpd_proc_retention_set(CPD_CB * > > /* Update the retention Time */ > (*ckpt_node)->ret_time = reten_time; > + (*ckpt_node)->attributes.retentionDuration = reten_time; > + > + /* Update the related patricia tree */ > + CPD_CKPT_MAP_INFO *map_info = NULL; > + cpd_ckpt_map_node_get(&cb->ckpt_map_tree, (*ckpt_node)->ckpt_name, > &map_info); > + if (map_info) { > + map_info->attributes.retentionDuration = reten_time; > + } > return rc; > } > ------------------------------------------------------------------------------ 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