[ 
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

Reply via email to