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

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

After sitting with stack on this and looking through the restructure101 stuff, 
doing the modularization first really isn't going to help anything here. What 
we need to do first is 'detangle' hbase - remove a lot of the dependencies 
between classes/packages that really shouldn't exist. This is going to mean a 
whole bunch of smaller tickets, doing piecemeal refactorings. Once we actually 
have the project nicely decoupled, then the modularization will actually make 
sense and go rather smoothly (as opposed to the mess it was the first time 
around). 

This is further accentuated by the fact that on 'finishing' the modularization, 
we had a bunch of classes split between client and shared, but basically 
nothing in the server or core modules because the server stuff was too tightly 
coupled to the client to be in its own, distinct module.

I'm going to start working through some of the pieces and just link the tickets 
back here for the refactorings. After it starts to look clean (arbitrarily 
defined), then we should go back to the modularization.
                
> 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