[ 
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)

Reply via email to