Below is what CPD done. It can be easily see that it does not inform other cpnd:
-------------------
uint32_t cpd_proc_active_set(CPD_CB *cb, SaCkptCheckpointHandleT ckpt_id, 
MDS_DEST mds_dest,
                          CPD_CKPT_INFO_NODE **ckpt_node)
{
        SaAisErrorT rc = SA_AIS_OK;
        CPD_REP_KEY_INFO key_info;
        CPD_CKPT_REPLOC_INFO *rep_info = NULL;
        CPD_CPND_INFO_NODE *cpnd_info_node;
        SaNameT node_name;

        memset(&node_name, 0, sizeof(SaNameT));
        memset(&key_info, 0, sizeof(CPD_REP_KEY_INFO));

        cpd_ckpt_node_get(&cb->ckpt_tree, &ckpt_id, ckpt_node);
        if ((*ckpt_node) == NULL) {
                TRACE_4("cpd ckpt info node get failed for 
ckpt_id:%llx",ckpt_id);

                return SA_AIS_ERR_NOT_EXIST;
        }
/* Update the Active Replica Info */

        if ((*ckpt_node)->is_active_exists) {
                if (((*ckpt_node)->active_dest) != mds_dest) {
                        cpd_cpnd_info_node_get(&cb->cpnd_tree, 
&((*ckpt_node)->active_dest), &cpnd_info_node);
                        if (cpnd_info_node) {
                                key_info.ckpt_name = (*ckpt_node)->ckpt_name;
                                key_info.node_name = cpnd_info_node->node_name;
                                cpd_ckpt_reploc_get(&cb->ckpt_reploc_tree, 
&key_info, &rep_info);
                                if (rep_info) {
                                        rep_info->rep_type = 2;
                                }
                                memset(&key_info, 0, sizeof(CPD_REP_KEY_INFO));
                        }
                }
        }

        (*ckpt_node)->is_active_exists = true;
        (*ckpt_node)->active_dest = mds_dest;

        if (mds_dest) {
                cpd_cpnd_info_node_get(&cb->cpnd_tree, &mds_dest, 
&cpnd_info_node);
                if (!cpnd_info_node) {
                        TRACE_4("cpd cpnd node does not exit for 
mds_dest:%"PRIu64,mds_dest);
                        TRACE_LEAVE();
                        return rc;
                }
                key_info.ckpt_name = (*ckpt_node)->ckpt_name;
                key_info.node_name = cpnd_info_node->node_name;
                /*  key_info.node_name.length = 
m_NCS_OS_NTOHS(cpnd_info_node->node_name.length); */
                cpd_ckpt_reploc_get(&cb->ckpt_reploc_tree, &key_info, 
&rep_info);
                if (rep_info) {
                        rep_info->rep_type = 1;
                }
        }
        TRACE_LEAVE();
        return rc;
}
------------------------------------

Br,

Ted

-----Original Message-----
From: Yao Cheng LIANG 
Sent: Tuesday, October 13, 2015 1:13 PM
To: 'A V Mahesh'; [email protected]
Cc: Yao Cheng LIANG
Subject: RE: issue with Checkpint when setting active replica

Dear AVM,

It does not need a test application. If you go through the processing of 
Activating Replica, it is easy to find what I have said. Code review is another 
approach of finding issues? Isn't it?

Br,

Ted

-----Original Message-----
From: A V Mahesh [mailto:[email protected]] 
Sent: Tuesday, October 13, 2015 12:10 PM
To: Yao Cheng LIANG; [email protected]
Subject: Re: issue with Checkpint when setting active replica

Hi Ted,

Please raise a ticket by attaching the test application and reproducible steps.

-AVM


On 10/13/2015 9:17 AM, Yao Cheng LIANG wrote:
> Dear all,
>
> I am reading 4.6.0 checkpoint service code, and found a possible bug when 
> setting active replica. The current implementation only works first time a 
> replica is set active, as it only update the relevant data structure in cpd 
> and this cpnd, but does not inform other cpnd which has cpa opened the 
> checkpoint. Suppose there are multiple cpnd  have opened a checkpoint, say 
> they are a, b, c, d, ..., now "a" is active, so "b", "c", "d" all know that 
> "a" is "active". Now suppose "b" call "saCkptActiveReplicaSet", the 4.6.0 
> implementation only update the cpd of the new "active" replica, but cpd does 
> not inform "a", "c", "d", so "a", "c", "d" still think "a" is active, this is 
> apparently wrong.
>
> Br,
>
> Ted

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

Reply via email to