mirror of https://github.com/schoebel/mars
marsadm: fix split brain detection
This commit is contained in:
parent
00d4713aff
commit
9e54983283
|
@ -542,7 +542,15 @@ sub _get_common_ancestor {
|
||||||
my ($p2, $nr2, $from2, $len2) = _parse_pos($pos2);
|
my ($p2, $nr2, $from2, $len2) = _parse_pos($pos2);
|
||||||
if ($p1 eq $p2) {
|
if ($p1 eq $p2) {
|
||||||
# usually no split brain here (only if both path depths are non-zero)
|
# usually no split brain here (only if both path depths are non-zero)
|
||||||
return ($p1, ($dep1 && $dep2));
|
my $split = ($dep1 && $dep2);
|
||||||
|
if (!$split) { # additionally check the corresponding version links
|
||||||
|
my $path1 = sprintf("$basedir/version-%09d-$from1", $nr1);
|
||||||
|
my $path2 = sprintf("$basedir/version-%09d-$from2", $nr2);
|
||||||
|
if (my $vers1 = get_link($path1) and my $vers2 = get_link($path2)) {
|
||||||
|
$split = 1 if $vers1 ne $vers2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ($p1, $split);
|
||||||
} elsif ($nr1 > $nr2) {
|
} elsif ($nr1 > $nr2) {
|
||||||
# just flip arguments
|
# just flip arguments
|
||||||
return _get_common_ancestor($basedir, $pos2, $host2, $dep2, $pos1, $host1, $dep1);
|
return _get_common_ancestor($basedir, $pos2, $host2, $dep2, $pos1, $host1, $dep1);
|
||||||
|
|
Loading…
Reference in New Issue