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