hbase-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Marc Spaggiari <jean-m...@spaggiari.org>
Subject Re: Batch returned value and exception handling.
Date Thu, 14 Mar 2013 18:55:07 GMT
Amit, do it that way:

      Object[] res = new Object[batch.size()];
      try {
        table.batch(batch, res);

Then res will contain the result, and the exception even if you will
catch a RetriesExhaustedWithDetailsException because your batch got
one.

JM

2013/3/14 Jean-Marc Spaggiari <jean-marc@spaggiari.org>:
> Can you paste the compelte stacktrace here with the causes too?
>
> I will try you piece of code locally to try to reproduce.
>
> JM
>
> 2013/3/14 Amit Sela <amits@infolinks.com>:
>> I did look at HConnectionManager and that is the reason I expected the
>> scenario you just described but running the test I ran from the development
>> environment (IntelliJ IDEA) I did not get any returned value, instead the
>> exception is thrown and after I catch it the result is null...
>>
>> Object[] res = null;
>> try {
>>       res = table.batch(batch);
>> } catch (RetriesExhaustedWithDetailsException
>> retriesExhaustedWithDetailsException) {
>>       retriesExhaustedWithDetailsException.printStackTrace();
>> }
>> if (res == null) {
>> System.out.println("No results - returned null.");
>> return;
>> }
>>
>>
>>
>> On Thu, Mar 14, 2013 at 7:52 PM, Jean-Marc Spaggiari <
>> jean-marc@spaggiari.org> wrote:
>>
>>> Hi Amit,
>>>
>>> Just take a look at the processBatchCallback method in HConnectionManager.
>>>
>>> There you will see how the result is populated, and when an exception
>>> is returned.
>>>
>>> In your example below, if you look at the content of the returned
>>> array, you should see one cell with the result of the increment, and
>>> one cell with a Throwable into it.
>>>
>>> JM
>>>
>>> 2013/3/14 Amit Sela <amits@infolinks.com>:
>>> > Hi all,
>>> >
>>> > I did some testing with HTableInterface#batch() for batching Increments
>>> and
>>> > I was wondering about the returned value Object[].
>>> >
>>> > As I understand (or would expect), the returned value would be:
>>> >
>>> > null - all batch of increments failed.
>>> > An object in the array is null / is Exception - that increment has
>>> failed.
>>> >
>>> > So I ran some tests and executed a batch of two Increment Objects on two
>>> > different row keys, where one of them is valid and the other one has a
>>> > family that does not exist.
>>> > When calling HTableInterface#batch() I
>>> > get RetriesExhaustedWithDetailsException but looking at the counter in
>>> > HBase it looks like the valid increment was executed.
>>> >
>>> > Shouldn't I get an Object[2] where one of the objects is null
>>> > / RetriesExhaustedWithDetailsException ?
>>> >
>>> > How can I know # of success/failures in the batch ? What is the
>>> "contract"
>>> > here ?
>>> >
>>> > Thanks,
>>> >
>>> > Amit.
>>>

Mime
View raw message