[ 
https://issues.apache.org/jira/browse/HBASE-11073?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mikhail Antonov updated HBASE-11073:
------------------------------------

    Issue Type: Improvement  (was: Sub-task)
        Parent:     (was: HBASE-10909)

> 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: Improvement
>          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