Mahadev konar commented on ZOOKEEPER-549:

 good to see this. This is much needed refactoring. Some comments/questions-

 - +1 on flavio's suggestion. I couldnt find a better name then Peer though :). 
We do have to keep the Followers as Followers because that we use for the ones 
that have a say in the proposals!

 - there is an unwanted import in Follower.java and more in other classes like 
FollowerZooKeepeerServer and maybe others.
  import org.apache.zookeeper.txn.TxnHeader;

- downcast operations in Follower.java for downcasting to 
FollowerZooKeeperServer. Its done on each and every read of packet and 
processing. There is some cost to it.

  Downcast operations (also called narrowing conversions in the Java Language 
Specification) convert an ancestor class reference to a subclass reference. 
This casting operation creates execution overhead, since Java requires that the 
cast be checked at runtime to make sure that it's valid.
 from javaworld.
 I think you should be able to downcast once and use that object from then on?

-  other then that, we might want to consider refactoring all the classes into 
subpackages like flavio suggested

- also, we should make sure we do enough testing because this is a lot of 

> Refactor Followers and related classes into a Peer->Follower hierarchy in 
> preparation for Observers
> ---------------------------------------------------------------------------------------------------
>                 Key: ZOOKEEPER-549
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-549
>             Project: Zookeeper
>          Issue Type: Improvement
>          Components: quorum, server
>    Affects Versions: 3.2.1
>            Reporter: Henry Robinson
>            Assignee: Henry Robinson
>             Fix For: 3.3.0
>         Attachments: ZOOKEEPER-549.patch, ZOOKEEPER-549.patch
> For the Observers patch (ZOOKEEPER-368), a lot of functionality is shared 
> between Followers and Observers. To avoid copying code, it makes sense to 
> push the common code into a parent Peer class and specialise it for Followers 
> and Observers. At the same time, some of the lengthier methods in Follower 
> can be broken up to make the code more readable. 

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

Reply via email to