The cited exists has been around a while:
https://issues.apache.org/jira/browse/HBASE-1544
You used to use this this one?
+ * @deprecated As of hbase 0.20.0, replaced by {@link #exists(Get)}
*/
public boolean exists(final byte [] row) throws IOException {
They do the same thing essentially.
The fact that we are changing the passed in Get should minimally be
documented in API. We shouldn't. Its a bug. Easy to fix. Want to file an
issue?
Thanks,
St.Ack
On Wed, Nov 5, 2014 at 7:53 AM, Gerke Ephorus <[email protected]>
wrote:
> Hi all,
>
> we are in the process of upgrading HBase from 0.92.x to 0.98.6.x and run
> into this code in the HBase-client:
> /**
> * {@inheritDoc}
> */
> @Override
> public boolean exists(final Get get) throws IOException {
> get.setCheckExistenceOnly(true);
> Result r = get(get);
> assert r.getExists() != null;
> return r.getExists();
> }
>
> We used to use this exists-call as this was way faster in case of a
> BloomFilter-miss. But maybe that has changed?
>
> The code shows that the get-object passed-in is changed. Now I understand
> that it might not make sense to re-use the get-object after the exists
> returns true, but I explained the reason for doing so anyway above.
>
> Can anyone throw some light on this, please?
>
> I was just wondering if it might make sense to add a notice in the API-doc
> that tell that the passed-in object will be changed during the call. Or
> maybe add a 'set-back-to-old-value' try-finally-construction.
>
> with kind regards,
> Gerke
>