[ 
https://issues.apache.org/jira/browse/HBASE-12439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14301894#comment-14301894
 ] 

Matteo Bertozzi commented on HBASE-12439:
-----------------------------------------

{quote}The API is Admin.doOperation(). Should it be Admin.doProcedure? (In 
doc., you start talking about 'operations' when you were talking about 
'procedures' up to this).{quote}
No, Procedure is the internal name for "I'm doing something".
Example: "delete table" maps to a procedure but "snapshot" may map to multiple 
procedures (depending on how you view the execution it may be the master part + 
the RS subprocs or it may be just the "snapshot namespace" with the table 
snapshots as subprocedures).
another example is create table, if you see "create table operation" as "create 
procedure" + "assignment procedure". more in general I use "operation" because 
there may be more work than just call the procedure.

{quote}"If the master does not receve a response within a timeout, or the 
region was reassigned, it will resend the execution request.", master will just 
retry for ever?{quote}
It depends, e.g. if the procedure is "assignment" yes. if the procedure is 
"snapshot" it will timeout after Nsec.

{quote}For the TwoPhaseProcedure, would be good to draw out the steps as you 
have done for the OnePhaseProcedure procedure. Would help me figure if I get 
how this 'staging' stuff works.{quote}
sure, still in progress

{quote}What is this? "(The sync­client implementation can be done for the 2.0 
branch, but we can’t backport that to
keep the compatibility. New client methods can be added using the 
procedure)"{quote}
our Admin is not really sync, for example create table and similar depends on 
the order of the operation master-side. so if you change the code of the 
handler but not the client, the client will be async since the operation server 
side may not be completed.
With the procedure you are waiting on the proc to be completed, so you can 
change the server side as much as you want and the client don't care about it. 
and you also get the master failover for free. e.g. In the middle of Create 
Table the master goes down, the client is spinning on isDone(createProcId) the 
backup master complete the create table and the client receive the isDone() = 
true.

> Procedure V2
> ------------
>
>                 Key: HBASE-12439
>                 URL: https://issues.apache.org/jira/browse/HBASE-12439
>             Project: HBase
>          Issue Type: New Feature
>          Components: master
>    Affects Versions: 2.0.0
>            Reporter: Matteo Bertozzi
>            Assignee: Matteo Bertozzi
>            Priority: Minor
>         Attachments: ProcedureV2.pdf, Procedurev2Notification-Bus.pdf
>
>
> Procedure v2 (aka Notification Bus) aims to provide a unified way to build:
> * multi-steps procedure with a rollback/rollforward ability in case of 
> failure (e.g. create/delete table)
> ** HBASE-12070
> * notifications across multiple machines (e.g. ACLs/Labels/Quotas cache 
> updates)
> ** Make sure that every machine has the grant/revoke/label
> ** Enforce "space limit" quota across the namespace
> ** HBASE-10295 eliminate permanent replication zk node
> * procedures across multiple machines (e.g. Snapshots)
> * coordinated long-running procedures (e.g. compactions, splits, ...)
> * Synchronous calls, with the ability to see the state/result in case of 
> failure.
> ** HBASE-11608 sync split
> still work in progress/initial prototype: https://reviews.apache.org/r/27703/



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to