[ https://issues.apache.org/jira/browse/HBASE-6055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13500491#comment-13500491 ]
Jonathan Hsieh commented on HBASE-6055: --------------------------------------- I've reached a pretty decent point on this branch now refactoring and simplifying the online snapshot code. Most of the work is in the plumbing, and most of the complexity remains in the plumbing. Here is a link https://github.com/jmhsieh/hbase/commits/snapshot-dev? It isn't worth looking at the individual patches -- if interested take a look at the code generally one package at a time. I'd suggest starting from errorhandling, then procedures since this work is fairly isolated and stable now. The will likely affect existing code, and online may change significantly during the merge process. Error handling: o.a.h.h.errorhandling.* * Added concept of ExternalException (an exception from an separate thread or process). * Removing generics by funneling everything through an ExternalException * Simplified Exception Propagation by only having a Dispatcher, Listener, and Checker. (No Visitors, Orchestrators, some Factories) * Made Exception Serialization static so that instances don't need to be passed around. * Added more meaningful usage and motivation documentation. Procedure framework: o.a.h.h.procedure.* * Separated Coordinator side from Member side * Reduced the number of constructors (and fewer objects threaded throughout). * Added concept of Procedure and Subprocedure -- these maintain state on each host. (this replaces just using strings everywhere). * Folded several threads that used latch ping-pong into single threads. * Renamed methods from 2pc nomenclature to barrier nomenclature. * Added more meaningful usage and motivation documentation. Online Snapshots: o.a.h.h.snapshot.* * Converted per regionserver only Procedures to simpler Callable/Future fork join implementation. * Removed different *ErrorHandlers and moved into Subprocedures. (this may be further eliminated) * Each Procedure contains an ExternalExceptionDispatcher * ExternalExceptions go to the SnapshotManager to abort the Procedure. I'm in process of merging code into the offline snapshot branch. It isn't clean but I'll be working on that for the next few days. (Clashes with updates in offline snapshot). Once I get the snapshot branch compiling again, I'll start posting the External Exception and Procedure stuff as a series of patches. My suggestion for the overall effort is to get the main offline snapshot branch code committed to the branch and then start looking into merging with trunk and 0.94. The online work I feel should remain a branch until its pieces are fleshed out. > Snapshots in HBase 0.96 > ----------------------- > > Key: HBASE-6055 > URL: https://issues.apache.org/jira/browse/HBASE-6055 > Project: HBase > Issue Type: New Feature > Components: Client, master, regionserver, snapshots, Zookeeper > Reporter: Jesse Yates > Assignee: Jesse Yates > Fix For: hbase-6055, 0.96.0 > > Attachments: Snapshots in HBase.docx > > > Continuation of HBASE-50 for the current trunk. Since the implementation has > drastically changed, opening as a new ticket. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira