Class QuorumHierarchical
- java.lang.Object
 - 
- org.apache.zookeeper.server.quorum.flexible.QuorumHierarchical
 
 
- 
- All Implemented Interfaces:
 QuorumVerifier
public class QuorumHierarchical extends Object implements QuorumVerifier
This class implements a validator for hierarchical quorums. With this construction, zookeeper servers are split into disjoint groups, and each server has a weight. We obtain a quorum if we get more than half of the total weight of a group for a majority of groups. The configuration of quorums uses two parameters: group and weight. Groups are sets of ZooKeeper servers, and we set a group by passing a colon-separated list of server ids. It is also necessary to assign weights to server. Here is an example of a configuration that creates three groups and assigns a weight of 1 to each server: group.1=1:2:3 group.2=4:5:6 group.3=7:8:9 weight.1=1 weight.2=1 weight.3=1 weight.4=1 weight.5=1 weight.6=1 weight.7=1 weight.8=1 weight.9=1 Note that it is still necessary to define peers using the server keyword. 
- 
- 
Constructor Summary
Constructors Constructor Description QuorumHierarchical(String filename)This constructor requires the quorum configuration to be declared in a separate file, and it takes the file as an input parameter.QuorumHierarchical(Properties qp)This constructor takes a set of properties. 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancontainsQuorum(Set<Long> set)Verifies if a given set is a quorum.booleanequals(Object o)Map<Long,QuorumPeer.QuorumServer>getAllMembers()Map<Long,QuorumPeer.QuorumServer>getObservingMembers()longgetVersion()Map<Long,QuorumPeer.QuorumServer>getVotingMembers()longgetWeight(long id)Returns the weight of a server.inthashCode()voidsetVersion(long ver)StringtoString()- 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait 
- 
Methods inherited from interface org.apache.zookeeper.server.quorum.flexible.QuorumVerifier
askOracle, getNeedOracle, getOraclePath, overrideQuorumDecision, revalidateOutstandingProp, revalidateVoteset, updateNeedOracle 
 - 
 
 - 
 
- 
- 
Constructor Detail
- 
QuorumHierarchical
public QuorumHierarchical(String filename) throws QuorumPeerConfig.ConfigException
This constructor requires the quorum configuration to be declared in a separate file, and it takes the file as an input parameter.- Throws:
 QuorumPeerConfig.ConfigException
 
- 
QuorumHierarchical
public QuorumHierarchical(Properties qp) throws QuorumPeerConfig.ConfigException
This constructor takes a set of properties. We use it in the unit test for this feature.- Throws:
 QuorumPeerConfig.ConfigException
 
 - 
 
- 
Method Detail
- 
equals
public boolean equals(Object o)
- Specified by:
 equalsin interfaceQuorumVerifier- Overrides:
 equalsin classObject
 
- 
getWeight
public long getWeight(long id)
Returns the weight of a server.- Specified by:
 getWeightin interfaceQuorumVerifier- Parameters:
 id-
 
- 
getAllMembers
public Map<Long,QuorumPeer.QuorumServer> getAllMembers()
- Specified by:
 getAllMembersin interfaceQuorumVerifier
 
- 
toString
public String toString()
- Specified by:
 toStringin interfaceQuorumVerifier- Overrides:
 toStringin classObject
 
- 
containsQuorum
public boolean containsQuorum(Set<Long> set)
Verifies if a given set is a quorum.- Specified by:
 containsQuorumin interfaceQuorumVerifier
 
- 
getVotingMembers
public Map<Long,QuorumPeer.QuorumServer> getVotingMembers()
- Specified by:
 getVotingMembersin interfaceQuorumVerifier
 
- 
getObservingMembers
public Map<Long,QuorumPeer.QuorumServer> getObservingMembers()
- Specified by:
 getObservingMembersin interfaceQuorumVerifier
 
- 
getVersion
public long getVersion()
- Specified by:
 getVersionin interfaceQuorumVerifier
 
- 
setVersion
public void setVersion(long ver)
- Specified by:
 setVersionin interfaceQuorumVerifier
 
 - 
 
 -