[ 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 syncclient 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)