[corosync] [PATCH 2/3] Fixed bug when corosync receive JoinMSG in OPERATIONAL state

Steven Dake sdake at redhat.com
Sat Nov 26 16:22:34 GMT 2011


Really nice catch!

I've merged this patch.
-steve

On 11/26/2011 02:42 AM, Yunkai Zhang wrote:
> Accordig the totem protocal, nodes should enter GATHER state when it
> receive JoinMSG in OPERATIONAL state. If we discard it in OPERATIONAL
> state, the nodes sending this JoinMSG could not receive the response
> untill other nodes reach token lost timeout.
> 
> This bug will cause nodes having entered GATHER state spend more time to
> rejoin the ring, and then it will make nodes reach token expired timeout
> more easily.
> 
> Signed-off-by: Yunkai Zhang <qiushu.zyk at taobao.com>
> ---
>  exec/totemsrp.c |    8 +++++---
>  1 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/exec/totemsrp.c b/exec/totemsrp.c
> index 60e5663..db4e3bb 100644
> --- a/exec/totemsrp.c
> +++ b/exec/totemsrp.c
> @@ -4054,7 +4054,7 @@ static void memb_join_process (
>  
>  			memb_state_commit_enter (instance);
>  		} else {
> -			return;
> +			goto out;
>  		}
>  	} else
>  	if (memb_set_subset (proc_list,
> @@ -4067,12 +4067,12 @@ static void memb_join_process (
>  		instance->my_failed_list,
>  		instance->my_failed_list_entries)) {
>  
> -		return;
> +		goto out;
>  	} else
>  	if (memb_set_subset (&memb_join->system_from, 1,
>  		instance->my_failed_list, instance->my_failed_list_entries)) {
>  
> -		return;
> +		goto out;
>  	} else {
>  		memb_set_merge (proc_list,
>  			memb_join->proc_list_entries,
> @@ -4117,6 +4117,8 @@ static void memb_join_process (
>  		memb_state_gather_enter (instance, 11);
>  		gather_entered = 1;
>  	}
> +
> +out:
>  	if (gather_entered == 0 &&
>  		instance->memb_state == MEMB_STATE_OPERATIONAL) {
>  



More information about the discuss mailing list