You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Todd Lipcon (JIRA)" <ji...@apache.org> on 2010/09/14 03:35:33 UTC

[jira] Created: (HBASE-2993) Refactor servers to use a common lifecycle interface

Refactor servers to use a common lifecycle interface
----------------------------------------------------

                 Key: HBASE-2993
                 URL: https://issues.apache.org/jira/browse/HBASE-2993
             Project: HBase
          Issue Type: Improvement
          Components: master, regionserver
    Affects Versions: 0.90.0
            Reporter: Todd Lipcon
            Assignee: Todd Lipcon


In current trunk, the region server is a Runnable and the Master is a thread. We have all kinds of weird wrappers like JVMClusterUtil to try to work around this. It would be nice if they both implemented the same interface - LocalHBaseCluster and the MiniCluster would be a lot easier to understand as well, and we could share some more code between them.

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


[jira] Commented: (HBASE-2993) Refactor servers to use a common lifecycle interface

Posted by "HBase Review Board (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HBASE-2993?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12909091#action_12909091 ] 

HBase Review Board commented on HBASE-2993:
-------------------------------------------

Message from: "Jonathan Gray" <jg...@apache.org>

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://review.cloudera.org/r/829/#review1173
-----------------------------------------------------------


I like this.  Naming seems fine to me.  We're making great strides in cleaning these things up, great stuff Todd.

I guess we're in need of standardizing the methods in HM and HRS like toString, get*Name, etc...


src/main/java/org/apache/hadoop/hbase/master/HMaster.java
<http://review.cloudera.org/r/829/#comment4026>

    The toString() is supposed to give a unique name for the instance, especially useful in unit tests with multiple masters and such.  Not sure where all we're using getServerName but might make sense for these to be the same.


- Jonathan





> Refactor servers to use a common lifecycle interface
> ----------------------------------------------------
>
>                 Key: HBASE-2993
>                 URL: https://issues.apache.org/jira/browse/HBASE-2993
>             Project: HBase
>          Issue Type: Improvement
>          Components: master, regionserver
>    Affects Versions: 0.90.0
>            Reporter: Todd Lipcon
>            Assignee: Todd Lipcon
>
> In current trunk, the region server is a Runnable and the Master is a thread. We have all kinds of weird wrappers like JVMClusterUtil to try to work around this. It would be nice if they both implemented the same interface - LocalHBaseCluster and the MiniCluster would be a lot easier to understand as well, and we could share some more code between them.

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


[jira] Commented: (HBASE-2993) Refactor servers to use a common lifecycle interface

Posted by "HBase Review Board (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HBASE-2993?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12909089#action_12909089 ] 

HBase Review Board commented on HBASE-2993:
-------------------------------------------

Message from: "Todd Lipcon" <to...@cloudera.com>

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://review.cloudera.org/r/829/
-----------------------------------------------------------

Review request for hbase, stack and Jonathan Gray.


Summary
-------

This isn't really cleaned up, but wanted to gather opinions before I put in more effort. Does this kind of refactor seem good? Is the Guava "Service" class what we want to use or should we just write our own similar interface?


This addresses bug HBASE-2993.
    http://issues.apache.org/jira/browse/HBASE-2993


Diffs
-----

  src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java bc0a62f 
  src/main/java/org/apache/hadoop/hbase/master/HMaster.java bc21a1e 
  src/main/java/org/apache/hadoop/hbase/master/HMasterCommandLine.java c675db9 
  src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java bba7b67 
  src/main/java/org/apache/hadoop/hbase/service/ServiceUtils.java PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/service/ServiceWithMainThread.java PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java 4a9f1c3 
  src/test/java/org/apache/hadoop/hbase/HBaseClusterTestCase.java b7abb51 
  src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java 9cc1168 
  src/test/java/org/apache/hadoop/hbase/MiniHBaseCluster.java 9407c1e 
  src/test/java/org/apache/hadoop/hbase/TestHBaseTestingUtility.java 1cd88d3 
  src/test/java/org/apache/hadoop/hbase/TestInfoServers.java daffe02 
  src/test/java/org/apache/hadoop/hbase/TestRegionRebalancing.java 6908111 
  src/test/java/org/apache/hadoop/hbase/master/TestKillingServersFromMaster.java f5fd243 
  src/test/java/org/apache/hadoop/hbase/master/TestZKBasedOpenCloseRegion.java a172e2c 
  src/test/java/org/apache/hadoop/hbase/regionserver/DisabledTestRegionServerExit.java 5b8b464 
  src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRolling.java 287f1fb 

Diff: http://review.cloudera.org/r/829/diff


Testing
-------

Tried to run unit tests, but plenty failed. I think they're failing on trunk, too, though. Will do more testing and another round of review before I actually claim this is ready to commit.


Thanks,

Todd




> Refactor servers to use a common lifecycle interface
> ----------------------------------------------------
>
>                 Key: HBASE-2993
>                 URL: https://issues.apache.org/jira/browse/HBASE-2993
>             Project: HBase
>          Issue Type: Improvement
>          Components: master, regionserver
>    Affects Versions: 0.90.0
>            Reporter: Todd Lipcon
>            Assignee: Todd Lipcon
>
> In current trunk, the region server is a Runnable and the Master is a thread. We have all kinds of weird wrappers like JVMClusterUtil to try to work around this. It would be nice if they both implemented the same interface - LocalHBaseCluster and the MiniCluster would be a lot easier to understand as well, and we could share some more code between them.

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


[jira] Commented: (HBASE-2993) Refactor servers to use a common lifecycle interface

Posted by "HBase Review Board (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HBASE-2993?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12909122#action_12909122 ] 

HBase Review Board commented on HBASE-2993:
-------------------------------------------

Message from: stack@duboce.net

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://review.cloudera.org/r/829/#review1176
-----------------------------------------------------------



src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java
<http://review.cloudera.org/r/829/#comment4028>

    Didn't realize one of these lifecycle things in Guava but then there's a million different versions of Lifecycle I suppose (I'm pretty sure I've written a few myself in past life).  We could write our own but, its my guess it'd not differ from what we have here much.  Then again its missing Abort.
    
    This kinda refactoring is a big improvement; we should go this way, yeah, as it takes us further down road already started where we're trying to have Servers in hbase look alike.  But I want us to be even more radical.  I want us to move up to something like Spring where implementing their container means we get a bunch of other facility for near free and where the wiring up of a regionserver or a master can be done from config with others able to provide alternate implementations if they'd like with just a config. change.  It'd encourage writing to Interfaces, etc. ( Well, maybe not Spring.  Its too heavy weight and that xml stuff makes me queasy.  There are lesser IofC containers such as pico or nano).



src/main/java/org/apache/hadoop/hbase/LocalHBaseCluster.java
<http://review.cloudera.org/r/829/#comment4029>

    This is good



src/main/java/org/apache/hadoop/hbase/master/HMaster.java
<http://review.cloudera.org/r/829/#comment4030>

    Thats a real pretty name (descriptive though I suppose)



src/main/java/org/apache/hadoop/hbase/master/HMaster.java
<http://review.cloudera.org/r/829/#comment4031>

    We had a sort of convention for naming threads in hbase where host 'server' is prefix where host includes service type and port if needed... that kinda thing.  Previous we had a naming convention per implementator... was a mess.



src/main/java/org/apache/hadoop/hbase/master/HMaster.java
<http://review.cloudera.org/r/829/#comment4032>

    I like having state in there.  I was also adding zk sessionid....



src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
<http://review.cloudera.org/r/829/#comment4033>

    good



src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
<http://review.cloudera.org/r/829/#comment4034>

    good
    



src/main/java/org/apache/hadoop/hbase/util/JVMClusterUtil.java
<http://review.cloudera.org/r/829/#comment4035>

    Good.  I think I made this class originally.  It grew into a monster.



src/test/java/org/apache/hadoop/hbase/HBaseClusterTestCase.java
<http://review.cloudera.org/r/829/#comment4036>

    Are we losing the threaddumping?  It was useful.


- stack





> Refactor servers to use a common lifecycle interface
> ----------------------------------------------------
>
>                 Key: HBASE-2993
>                 URL: https://issues.apache.org/jira/browse/HBASE-2993
>             Project: HBase
>          Issue Type: Improvement
>          Components: master, regionserver
>    Affects Versions: 0.90.0
>            Reporter: Todd Lipcon
>            Assignee: Todd Lipcon
>
> In current trunk, the region server is a Runnable and the Master is a thread. We have all kinds of weird wrappers like JVMClusterUtil to try to work around this. It would be nice if they both implemented the same interface - LocalHBaseCluster and the MiniCluster would be a lot easier to understand as well, and we could share some more code between them.

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