[ 
https://issues.apache.org/jira/browse/HBASE-4336?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13169801#comment-13169801
 ] 

Jesse Yates commented on HBASE-4336:
------------------------------------

I've been struggling with how to setup each of the packages, and I think 
creating an hbase-client module is part of the solution.

A large problem comes from the fact that there are a lot of classes that are 
used across packages. In some cases, its as simple as abstracting out some 
constant,  putting it into HConstants, and then having each class just 
reference that new constant. 

However, there are other things like the MiniCluster (as associated classes) 
that actually use stuff both in core and in server, leading me to want to move 
a lot of the tests to something like an hbase-test module. There are a lot of 
tests in core and server that depend on the minicluster, and I feel like it 
would bad to have a lot of the client tests in the server module. 

Another alternative would be to have a module hbase-core that has dependencies 
on hbase-client and hbase-server. hbase-core then also puts out a tests jar 
that is picked up by hbase-client-test and hbase-server-test for doing the 
minicluster tests. 

Its feeling like its leading to a _lot_ of modules. However, the best thing I 
can see is doing the hbase-core module with the highly dependent classes, e.g. 
MiniCluster, then have the hbase-it turn into hbase-test where it has all the 
minicluster based tests as well as the api-level tests discussed here: 
http://search-hadoop.com/m/q41O6YiyfN
                
> Convert source tree into maven modules
> --------------------------------------
>
>                 Key: HBASE-4336
>                 URL: https://issues.apache.org/jira/browse/HBASE-4336
>             Project: HBase
>          Issue Type: Task
>          Components: build
>            Reporter: Gary Helmling
>            Priority: Critical
>             Fix For: 0.94.0
>
>
> When we originally converted the build to maven we had a single "core" module 
> defined, but later reverted this to a module-less build for the sake of 
> simplicity.
> It now looks like it's time to re-address this, as we have an actual need for 
> modules to:
> * provide a trimmed down "client" library that applications can make use of
> * more cleanly support building against different versions of Hadoop, in 
> place of some of the reflection machinations currently required
> * incorporate the secure RPC engine that depends on some secure Hadoop classes
> I propose we start simply by refactoring into two initial modules:
> * core - common classes and utilities, and client-side code and interfaces
> * server - master and region server implementations and supporting code
> This would also lay the groundwork for incorporating the HBase security 
> features that have been developed.  Once the module structure is in place, 
> security-related features could then be incorporated into a third module -- 
> "security" -- after normal review and approval.  The security module could 
> then depend on secure Hadoop, without modifying the dependencies of the rest 
> of the HBase code.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to