[ https://issues.apache.org/jira/browse/HBASE-5977?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Matt Corgan updated HBASE-5977: ------------------------------- Attachment: Potential-HBase-Module-Descriptions-v1.pdf Potential-HBase-Modules-v1.pdf Jesse, Stack and I have discussed this from a few different angles to try to identify some of the reasons for creating modules. The main benefit of modules is to isolate complex implementations behind simple interfaces. The main drawback is that modules add overhead in the form of more things to open in eclipse and more jar files in the build. Pasting from HBASE-5720 some arguments for creating a "codec" module that contains wrapper classes for individual HFile block types: * make it more testable, like a normal in-memory data structure without having to set up heavyweight testing environments * separate the encoding concerns from IO concerns. after the checksum happens, encoders/decoders should not even know what an IOException is * strongly discourage people from modifying anything in the codec packages without knowing what they're getting into * ensure the main project code only references the interfaces and not any codec internals (see if main project compiles without codecs in classpath) * make it easier for contributors to develop and profile the codecs without having to become experts in all aspects of hbase * help to simplify the main project. imagine if the gzip or snappy internals were sprinkled throughout the regionserver code. yikes. Attaching Potential-HBase-Modules-v1.pdf and Potential-HBaseModule-Descriptions-v1.pdf to illustrate a possible roadmap for extracting modules. We currently have hbase-server, and first going to "pull up" some files into hbase-common. Eventually we may "push down" an integration-test module. Extracting these modules can't really be done all at once, so this is just a roadmap meant to start discussion. For example, there's probably an opportunity to isolate some of regionserver and master code, but they also share a lot. This v1 doc shows a push down of master code out of the server module, but we probably need to think through that in more detail. * Link to dependency chart: https://docs.google.com/presentation/d/16Kf9FAFjtneWwCnpy9Bql4QhXmORf7U9uJLoRobePHQ/edit * Link to description doc: https://docs.google.com/document/d/1RHrUa9qWGvIR6ZmqVYP17rS7JTPSzCFCPKNjTo-XY38/edit > Usage of modules > ----------------- > > Key: HBASE-5977 > URL: https://issues.apache.org/jira/browse/HBASE-5977 > Project: HBase > Issue Type: Brainstorming > Components: build > Affects Versions: 0.96.0 > Reporter: Jesse Yates > Attachments: Potential-HBase-Module-Descriptions-v1.pdf, > Potential-HBase-Modules-v1.pdf > > Original Estimate: 336h > Remaining Estimate: 336h > > With HBASE-4336, HBase will have the ability to add multiple modules for > different aspects of the codebase (less tests, see HBASE-4336 for details). > We need to set a policy for when modules should be used versus putting the > code into a single existing module or dispersed across modules. -- 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