[Linux-cluster] Possible cman init script race condition
David Teigland
teigland at redhat.com
Fri Sep 28 16:45:47 UTC 2007
On Fri, Sep 28, 2007 at 09:58:18AM -0500, David Teigland wrote:
> On Fri, Sep 28, 2007 at 04:48:18PM +0200, Borgstr?m Jonas wrote:
> > I must have misunderstood you or something, but didn't I already include
> > that info in the message I sent a few days ago?
> >
> > http://permalink.gmane.org/gmane.linux.redhat.cluster/9999
> >
> > (The archive inlines the "group_tool dump" output making it a bit hard
> > to read, but hopefully your email client shows them as attachments).
>
> I missed that, I'll take a look, thanks.
You've hit a known bug that's been fixed:
https://bugzilla.redhat.com/show_bug.cgi?id=251966
We may have to move up the release of that fix since people are seeing the
problem. Be careful when reading that bz because there's a lot of
incorrect diagnosis that was recorded before we figured out what the real
bug was. Here's the problem, it's very complex:
1. when the nodes start up, they each form a 1-node openais cluster
independent of the other
[This shouldn't really happen, but in reality we can't prevent it
100% of the time. We try to make it rare, and then deal with it
sensibly on the rare occasion when it does happen. You've hit
the "rare" occasion -- if you're actually seeing this regularly
then we probably need to fix or adjust something at the openais
level to make it less common.]
2. fence_tool join is run on each node which creates group state in both
clusters
3. The two clusters then merge together. We could handle this merging
*if* there had been no group activity yet (in this case from fenced).
But, in this case, divergent group state exists in the two clusters
that we can't combine. Cman (above openais) should recognize this [*]
and continue to treat the nodes separately, even though openais has
merged them together.
[*] In RHEL5.0, cman/groupd are *not* smart enough to recognize this.
The fix in bz 251966 makes cman/groupd recognize this condition by
introducing a "dirty flag". What you observe, is groupd trying to
merge the divergent state, getting confused and stuck.
After the bug is fixed, what you should observe is the two nodes will
stay separate (in cman) and will try to fence each other. One will
win the fencing race and reboot the other. When the rebooted node
returns, it should properly join the existing cluster.
Dave
More information about the Linux-cluster
mailing list