Package io.hekate.cluster.split
Class SplitBrainDetectorGroup
- java.lang.Object
-
- io.hekate.cluster.split.SplitBrainDetectorGroup
-
- All Implemented Interfaces:
SplitBrainDetector
,ConfigReportSupport
public class SplitBrainDetectorGroup extends Object implements SplitBrainDetector, ConfigReportSupport
Combination of multiple split-brain detectors.This class represents a combination of multiple
SplitBrainDetector
s. During eachisValid(ClusterNode)
call this class invokes each of itsdetectors
and uses agroup policy
to decide on whether the whole group check was successful or failed.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
SplitBrainDetectorGroup.GroupPolicy
Group policy forSplitBrainDetectorGroup
.
-
Constructor Summary
Constructors Constructor Description SplitBrainDetectorGroup()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<SplitBrainDetector>
getDetectors()
Returns the list of registered detectors (seesetDetectors(List)
).SplitBrainDetectorGroup.GroupPolicy
getGroupPolicy()
Returns the policy of this group (seesetGroupPolicy(GroupPolicy)
).boolean
isValid(ClusterNode localNode)
Performs a split-brain check and returnstrue
if local node can reach other members of the cluster.void
report(ConfigReporter report)
Report configuration.void
setDetectors(List<SplitBrainDetector> detectors)
Sets the list of detectors that should be invoked during eachisValid(ClusterNode)
check.void
setGroupPolicy(SplitBrainDetectorGroup.GroupPolicy groupPolicy)
Sets the group policy.String
toString()
SplitBrainDetectorGroup
withDetector(SplitBrainDetector detector)
Fluent-style version ofsetDetectors(List)
.SplitBrainDetectorGroup
withGroupPolicy(SplitBrainDetectorGroup.GroupPolicy groupPolicy)
Fluent-style version ofsetGroupPolicy(GroupPolicy)
.
-
-
-
Method Detail
-
isValid
public boolean isValid(ClusterNode localNode)
Description copied from interface:SplitBrainDetector
Performs a split-brain check and returnstrue
if local node can reach other members of the cluster.If this method returns
false
thenHekateFatalErrorPolicy
will be applied withClusterSplitBrainException
as a cause.- Specified by:
isValid
in interfaceSplitBrainDetector
- Parameters:
localNode
- Local node (where the check is performed).- Returns:
true
if local node can reach other members of the cluster.
-
report
public void report(ConfigReporter report)
Description copied from interface:ConfigReportSupport
Report configuration.- Specified by:
report
in interfaceConfigReportSupport
- Parameters:
report
- Reporter.
-
getDetectors
public List<SplitBrainDetector> getDetectors()
Returns the list of registered detectors (seesetDetectors(List)
).- Returns:
- Detectors.
-
setDetectors
public void setDetectors(List<SplitBrainDetector> detectors)
Sets the list of detectors that should be invoked during eachisValid(ClusterNode)
check.If the specified list is
null
or empty then allisValid(ClusterNode)
checks will always returntrue
.- Parameters:
detectors
- Detectors.
-
withDetector
public SplitBrainDetectorGroup withDetector(SplitBrainDetector detector)
Fluent-style version ofsetDetectors(List)
.- Parameters:
detector
- Detector.- Returns:
- This instance.
-
getGroupPolicy
public SplitBrainDetectorGroup.GroupPolicy getGroupPolicy()
Returns the policy of this group (seesetGroupPolicy(GroupPolicy)
).- Returns:
- Policy.
-
setGroupPolicy
public void setGroupPolicy(SplitBrainDetectorGroup.GroupPolicy groupPolicy)
Sets the group policy.This parameter is mandatory and can't be
null
. Default value isSplitBrainDetectorGroup.GroupPolicy.ANY_VALID
.- Parameters:
groupPolicy
- Group policy.
-
withGroupPolicy
public SplitBrainDetectorGroup withGroupPolicy(SplitBrainDetectorGroup.GroupPolicy groupPolicy)
Fluent-style version ofsetGroupPolicy(GroupPolicy)
.- Parameters:
groupPolicy
- Group policy.- Returns:
- This instance.
-
-