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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel