[
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