Yep... It's up to implementer of the RegionObserver to avoid deadlocks (lock 
ordering, two phase locking if needed, etc).
As long as only a single lock is taken (and released) there can be no deadlock.


More rope for a Coprocessor implementer to hang him/her self :)
Since Coprocessor are there to extend HBase without the need to subclass - say 
- HRegionServer or HRegion this is OK (IMHO).

-- Lars


----- Original Message -----
From: Michael Segel <[email protected]>
To: [email protected]; lars hofhansl <[email protected]>
Cc: 
Sent: Tuesday, August 7, 2012 6:25 PM
Subject: Re: CheckAndAppend Feature

Hi Lars, 

To be honest its just an initial gut feel. 
I haven't thought the issue through and I wonder if there are any downsides 
like dead locks or if some code goes awry how to recover. 

I understand that its on the server side, and that's why I'm a little 
concerned. 


On Aug 7, 2012, at 8:05 PM, lars hofhansl <[email protected]> wrote:

> Hi Mike,
> 
> do you have a specific downside in mind?The built-in checkAndSet type 
> operations do the same.
> Coprocessors are an extension mechanism for HBase, not to be compared with 
> (say) server side stored procedures in relational databases.
> 
> (the canonical example is that nothing stops a RegionObserver implementation 
> from calling System.exit(), taking the RegionServer with it).
> 
> 
> -- Lars
> 
> 
> 
> ----- Original Message -----
> From: Michael Segel <[email protected]>
> To: [email protected]; lars hofhansl <[email protected]>
> Cc: 
> Sent: Tuesday, August 7, 2012 5:54 PM
> Subject: Re: CheckAndAppend Feature
> 
> While this may be a trivial fix, have you considered possible down sides to 
> the implementation?
> 
> I'm not sure its a bad idea, but one that could have some potential issues 
> when put into practice. 
> 
> -Mike
> 
> On Aug 7, 2012, at 7:30 PM, lars hofhansl <[email protected]> wrote:
> 
>> I filed HBASE-6522. It is a trivial change to make locks and leases 
>> available to coprocessors.
>> So checkAndSet type operations can then be implemented via coprocessor 
>> endpoints: lock row, check, fail or update, unlock row.
>> 
>> Since the patch is so simple I'll commit that soon (to 0.94.2 and 0.96)
>> 
>> 
>> -- Lars
>> 
>> ________________________________
>> From: lars hofhansl <[email protected]>
>> To: "[email protected]" <[email protected]> 
>> Sent: Tuesday, August 7, 2012 8:55 AM
>> Subject: Re: CheckAndAppend Feature
>> 
>> There is no such functionality currently, and there is no good way to 
>> simulate that.
>> 
>> Currently that cannot even be done with a coprocessor endpoint, because 
>> region coprocessors have no way to create a region lock (just checked the 
>> code).
>> (That is something we have to change I think - I will create an issue once 
>> the Jira system is back from the walk in the park).
>> 
>> -- Lars
>> 
>> 
>> ----- Original Message -----
>> From: Jerry Lam <[email protected]>
>> To: user <[email protected]>
>> Cc: 
>> Sent: Tuesday, August 7, 2012 8:22 AM
>> Subject: CheckAndAppend Feature
>> 
>> Hi HBase community:
>> 
>> I checked the HTable API, it has checkAndPut and checkAndDelete but I'm
>> looking for checkAndAppend. Is there a way to simulate similarly?
>> For instance, I want to check the last 32 bytes of a value (let assume that
>> it has 128 bytes in total) in a column before appending atomically some
>> values into it.
>> 
>> Thanks!
>> 
>> Jerry
>> 
> 

Reply via email to