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.