[
https://issues.apache.org/jira/browse/HBASE-5976?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13272635#comment-13272635
]
Matt Corgan commented on HBASE-5976:
------------------------------------
{quote}I think its going to be harder than we think to pull server classes
out{quote}
Trying to understand what you mean here Jesse. I think i would agree with that
statement, so I was suggesting pulling things like KeyValue, Bytes, from
hbase-server up to hbase-common.
The key benefit of the modules is to restrict the dependencies between modules
with the goal of preventing big hairballs. It's very similar to the motivation
for interfaces and public/private/protected scopes in java - tools for strongly
enforcing that classes don't directly depend on things they shouldn't.
To think a little further down the line: after pulling "up" common classes like
KeyValue, we could then pull "up" an hbase-memstore module that depended on
hbase-common but could not see what is going on down in hbase-server. Then
pull "up" an hbase-wal module. Then hbase-region. When we pull up these
modules, we try to bring their unit tests up with them (unit tests that don't
need a whole cluster).
Every time we pull one of these modules and its tests "up" out of hbase-server,
it shrinks and simplifies the code in the hbase-server module. Just as
importantly, it also reduces the quantity of tests in hbase-server because
modules like hbase-common, hbase-memstore, and hbase-wal each have unit tests
that prove their correctness, so they can be treated like black boxes by
hbase-server. Just like the current project assumes that Guava classes are
already well tested, the hbase-server module could now assume that the memstore
internals are well tested.
Just food for thought since we still have a couple weeks to discuss =). We
used a pulling "up" methodology at HotPads a few years back and it's worked
really well for us. Starting with a single "site" project, we first pulled up
static utils, then services, then pulled out a complex indexing data-structure,
etc, etc
> Initial module naming
> ---------------------
>
> Key: HBASE-5976
> URL: https://issues.apache.org/jira/browse/HBASE-5976
> Project: HBase
> Issue Type: Brainstorming
> Components: build
> Affects Versions: 0.96.0
> Reporter: Jesse Yates
> Original Estimate: 336h
> Remaining Estimate: 336h
>
> There is currently a lot of discussion around the 'right' name for the
> initial module that will host all the code in the primary modularization of
> hbase. The current contenders are:
> * hbase-core
> * hbase-common
> * hbase-server
> * hbase-bucket
> * hbase-hbase
> Let's duke it out and pick the best, while keeping in mind that this module
> will *not* remain the sole module going forward, but is merely the precursor
> Timeline to close this issue is the day before the code gets committed.
> Source:
> http://search-hadoop.com/m/pwi1t1e9K0R/modularizing+trunk&subj=modularizing+trunk
--
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