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

Matteo Bertozzi commented on HBASE-13759:
-----------------------------------------

{quote}nit: Is state superfluous in below? Doesn't the executor know the 
'state' already{quote}
you mean Procedure instead of Executor?
the idea is this: the executor executes one step, and then asks. "do you want 
me to execute you again or do you want someone else to run?"

for the StateMachineProcedure instead of the 
isYieldAfterExecutionStep(fTEnvironment) from the base procedure you can have 
more information. so the executor calls 
isYieldBeforeExecuteFromState(TEnvironment, TState) asking you if you want to 
yield before executing "state". the StateMachineProcedure in theory should not 
store the state, you can grab it from getCurrentState(), but as mirror of 
executeFromState(TEnvironment, TState) you don't have to know anything about 
the class below, and you just have to implement execute/rollback/yield for that 
particular state that the framework is telling you to execute.

> Improve procedure yielding
> --------------------------
>
>                 Key: HBASE-13759
>                 URL: https://issues.apache.org/jira/browse/HBASE-13759
>             Project: HBase
>          Issue Type: Sub-task
>          Components: proc-v2
>    Affects Versions: 2.0.0, 1.2.0
>            Reporter: Matteo Bertozzi
>            Assignee: Matteo Bertozzi
>            Priority: Trivial
>             Fix For: 2.0.0, 1.2.0
>
>         Attachments: HBASE-13759-v0.patch, HBASE-13759-v1.patch
>
>
> Adds the ability to yield the procedure every execution step.
> by default, a procedure will try to go begin to end without stopping.
> This allows procedures to be nice to other procedures.
> one usage example is ServerShutdownHandler where we want everyone to make 
> some progress.
> Allows procedure to throw InterruptedException, the default handling will be:
> "ask the master if there is an abort of stop. If there is, stop executions 
> and exit. Else, clear the IE and carryon executing. the interruted procedure 
> will retry".
> If the procedure implementor wants a different behavior, the IE can be 
> catched and custom handling can be performed.



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

Reply via email to