hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ramkrishna.S.Vasudevan" <ramkrishna.vasude...@huawei.com>
Subject RE: checkAndPut, checkAndDelete
Date Mon, 02 Jul 2012 14:23:44 GMT
Hi Dishant

In my first point the check on the client side what I meant is
{code}
    if (!Bytes.equals(row, r.getRow())) { 
      throw new DoNotRetryIOException("Action's getRow must match the passed
row"); 
    }
{code}
Currently there is a check happening in server side before even we get the
lock.  I thought this check can be moved to client because the row passed in
the param and the one in 
Delete/Put are expected to be same.

But seeing the code I felt like we are trying to check the same row only.  I
did not mean to compare the family and qualifier, the row is expected to be
same as per the above code.
So I meant that the row need not be passed explicity.

Regards
Ram

> -----Original Message-----
> From: Dishant A [mailto:hbase.project@gmail.com]
> Sent: Monday, July 02, 2012 7:34 PM
> To: dev@hbase.apache.org
> Subject: Re: checkAndPut, checkAndDelete
> 
> Hi Ram,
> 
> 1) Can you do this check on client side?
> You can't, because this operation is supposed to be atomic and if you
> do a
> get and the value changes on server side in the meantime, you will be
> doing
> it wrong.
> 
> 
> 2) Can we just use the row that is stuffed inside the Put/Delete?
> (Anyway this change will be an api change).
> 
> This lose the case when you want to check the value of column A and
> based
> on it change the value of column B. So again we can't.
> 
> Hope this helps.
> 
> Thanks,
> Dishant
> 
> On Mon, Jul 2, 2012 at 4:44 AM, Ramkrishna.S.Vasudevan <
> ramkrishna.vasudevan@huawei.com> wrote:
> 
> > Hi Devs
> >
> >
> >
> > Currently the checkAndPut, checkAndDelete these api currently accept
> the
> > row
> > that needs to be checked and the Delete/Put also along with it.
> >
> >
> >
> > Again internally in the code HRegion.checkAndMutate() there is a
> > verification to find if the row passed and the one inside the
> > Mutate(Put/Delete) object are same.  If not throw an exception.
> >
> >
> >
> > 1)      Can we do this check on the client side itself?
> >
> > 2)      Can we just use the row that is stuffed inside the
> Put/Delete?
> > (Anyway this change will be an api change).
> >
> >
> >
> > Pls correct me if am missing something here.
> >
> >
> >
> > Regards
> >
> > Ram
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >


Mime
View raw message