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

Andrew Purtell commented on HBASE-5827:
---------------------------------------

I don't want to hijack this discussion but when you say:
{quote}
Conceptually, the success/failure handlers could be bound via a 
Callback<success, failure> on the actual operation.
{quote}

this brings me back to an early thought I had about Coprocessors: that there 
would be a number of onThis and onThat style callbacks and the callback code 
(lambdas) would be "submitted" in client side APIs, and shipped to the server 
to execute. No need to install server side extensions at all. But for a variety 
of reasons we went instead with a server side upcall model, and that's what we 
have now.
                
> [Coprocessors] Observer notifications on exceptions
> ---------------------------------------------------
>
>                 Key: HBASE-5827
>                 URL: https://issues.apache.org/jira/browse/HBASE-5827
>             Project: HBase
>          Issue Type: Improvement
>          Components: coprocessors
>            Reporter: Andrew Purtell
>            Assignee: Andrew Purtell
>
> Benjamin Busjaeger wrote on dev@:
> {quote}
> Is there a reason that RegionObservers are not notified when a get/put/delete 
> fails? Suppose I maintain some (transient) state in my Coprocessor that is 
> created during preGet and discarded during postGet. If the get fails, postGet 
> is not invoked, so I cannot remove the state.
> If there is a good reason, is there any other way to achieve the same thing? 
> If not, would  it be possible to add something the snippet below to the code 
> base?
> {code}
>     // pre-get CP hook
>     if (withCoprocessor && (coprocessorHost != null)) {
>       if (coprocessorHost.preGet(get, results)) {
>         return results;
>       }
>     }
> +    try{
>     ...
> +    } catch (Throwable t) {
> +        // failed-get CP hook
> +        if (withCoprocessor && (coprocessorHost != null)) {
> +          coprocessorHost.failedGet(get, results);
> +        }
> +        rethrow t;
> +    }
>     // post-get CP hook
>     if (withCoprocessor && (coprocessorHost != null)) {
>       coprocessorHost.postGet(get, results);
>     }
> {code}
> {quote}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to