[sheepdog] [PATCH v2 04/11] sheep: don't check nodes information for joined nodes
Liu Yuan
namei.unix at gmail.com
Fri Sep 20 18:39:31 CEST 2013
On Sat, Sep 21, 2013 at 01:22:46AM +0900, MORITA Kazutaka wrote:
> At Thu, 19 Sep 2013 17:08:08 +0800,
> Liu Yuan wrote:
> >
> > On Thu, Sep 19, 2013 at 02:42:54AM +0900, MORITA Kazutaka wrote:
> > > At Sat, 14 Sep 2013 18:34:24 +0800,
> > > Liu Yuan wrote:
> > > >
> > > > cluster_join_check is basically used to check newly joining node. But the old
> > > > code also check the nodes states passed by cinfo with sys->cinfo. After we have
> > > > struct rb_node rb in the sd_node, we'll never have this check passed.
> > > >
> > > > Instead of doing the check with more complex code, this patch simply remove the
> > > > check since nodes states in the joined nodes are always the same.
> > >
> > > Is it true? E.g. if network partition happens and two subclusters are
> > > merged, the state of the joining node doesn't match. The current code
> > > can detect it, but this patch removes the check?
> > >
> >
> > why we don't allow nodes that are network partitioned to join back? Users asks
> > to join the node, I think we should allow the node to join back, no?
>
> We cannot allow rejoin after network partition happens. E.g.
>
> 1. Sheepdog is running with nodes {A, B, C, D, E} at epoch 1.
> 2. The cluster is splitted into {A, B, C} and {D, E}. Both are at
> epoch 2.
> 3. The node A fails. Then {B, C} is at epoch 3, and {D, E} is at
> epoch 2.
> 4. If the two cluster is merged, their epoch numbers are not
> consistent.
>
> I think we should at least keep the epoch number check.
>
I don't think we can do epoch check either. Suppose
{A, B, C} at epoch 1
C goes down, then {A, B} with epoch = 2
when we add C back with epoch 1, C should joins the cluster.
Thanks
Yuan
More information about the sheepdog
mailing list