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

Josh Elser commented on HBASE-19953:
------------------------------------

Ok, this naive solution definitely doesn't work. Async is built into the 
procedure itself – this appears to be a nasty oversight on our part.

The existing semantics from branch-1 are that if the operation fails, the post 
hook is not invoked. This was easy to implement as they were synchronous calls.

I feel like to do this properly, we would need to push the post hook invocation 
down into the procedure itself so that it's automatically invoked. The downside 
of this approach is that is convolutes the Procedure implementation with the 
Observer hook logic. Maybe we can push this into the {{NonceProcedureRunnable}} 
logic instead? (in {{MasterProcedureUtil#submitProcedure()}})

> Avoid calling post* hook when procedure fails
> ---------------------------------------------
>
>                 Key: HBASE-19953
>                 URL: https://issues.apache.org/jira/browse/HBASE-19953
>             Project: HBase
>          Issue Type: Bug
>          Components: master, proc-v2
>            Reporter: Ramesh Mani
>            Assignee: Josh Elser
>            Priority: Critical
>             Fix For: 2.0.0-beta-2
>
>
> Ramesh pointed out a case where I think we're mishandling some post\* 
> MasterObserver hooks. Specifically, I'm looking at the deleteNamespace.
> We synchronously execute the DeleteNamespace procedure. When the user 
> provides a namespace that isn't empty, the procedure does a rollback (which 
> is just a no-op), but this doesn't propagate an exception up to the 
> NonceProcedureRunnable in {{HMaster#deleteNamespace}}. It took Ramesh 
> pointing it out a bit better to me that the code executes a bit differently 
> than we actually expect.
> I think we need to double-check our post hooks and make sure we aren't 
> invoking them when the procedure actually failed. cc/ [~Apache9], [~stack].



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to