[
https://issues.apache.org/jira/browse/HBASE-11073?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mikhail Antonov reassigned HBASE-11073:
---------------------------------------
Assignee: Mikhail Antonov
> Hide ZooKeeperWatcher and dependent ZK Listeners inside of a consensus impl
> ---------------------------------------------------------------------------
>
> Key: HBASE-11073
> URL: https://issues.apache.org/jira/browse/HBASE-11073
> Project: HBase
> Issue Type: Sub-task
> Components: Consensus, Zookeeper
> Affects Versions: 0.99.0
> Reporter: Mikhail Antonov
> Assignee: Mikhail Antonov
>
> (copied from the design doc):
> Redesign ZooKeeperListeners to abstract them from ZooKeeper API.
> Current design:
> The ZooKeeperListener interface is implemented by a number of classes and has
> 4 low-level API methods
> nodeCreated(), nodeDeleted(), nodeDataChanged(), nodeChildrenChanged()
> ZooKeeperWatcher maintains list of listeners and upon receiving ZK event
> calls all registered listeners and passes them affected znode’s path.
>
> Proposed design:
> Create new interface ConsensusHandler that contains a single method,
> handle(Agreement agreement).
> Modify the classes currently implementing the ZooKeeperListener interface so
> they implement the new ConsensusHandler interface. In their handle(...)
> method they will typecast the agreement instance to specific type (like
> AssignmentAgreement), extract the information encoded in it, and do their work
> Create an interface called AgreementLearner which will maintain a list of all
> ConsensusHandlers as a map of znode prefixes to handler instance. The ZK
> implementation, ZkAgreementLearner, will be used to dispatch events to the
> appropriate namespaces in the ZooKeeperWatcher by parsing the znodes-level
> event, constructing Agreement objects of proper type and dispatching them to
> appropriate ConsensusHandlers.
> Modify ZooKeeperWatcher:
> remove the internal collection of ZooKeeperListeners
> move znode prefixes to ZkAgreementLearner class
> in the handle(...) method pass the event to ZkAgreementLearner for further
> dispatching and execution.
> The following is a list of listeners to take care of (some are described in
> the items above already):
> ZKLeaderManager
> ZooKeeperNodeTracker
> TableHFileArchiveTracker
> ActiveMasterManager
> AssignmentManager
> SplitLogManager
> ZKProcedureUtil
> SplitLogWorker
> ZKPermissionWatcher
> ZKSecretWatcher
> ZKNamespaceManager
> DeletionListener
> DrainingServerTracker
> RecoveringRegionWatcher
> RegionServerTracker
> ReplicationPeer
> MasterAddressTracker
> MetaRegionTracker
> ClusterStatusTracker
> LoadBalancerTracker
--
This message was sent by Atlassian JIRA
(v6.2#6252)