06-08-2016 12:38 AM
We are using cell store multiple as defined in the HBase REST document to POST multiple rows (as JSON body) to Hbase and its working well.
The behaviour is if insert of all rows are successful we get a success message 200 even if insert of one row fails we get error and none of the rows are inserted ... this is a multi-row transaction.
Somewere else in Hbase documentation ( https://hbase.apache.org/acid-semantics.html) it is mehtioned that Hbase doesn't support transactions across multiple rows that means if you put multiple rows some might fail and some might succeed there is no guarentee that all will fail or all will succeed... but the above behaviour through REST API using Cell Store (Multiple) contradicts this statement.
Was there a patch to fix this ? am I missing something?
06-16-2016 08:42 AM
I'm not intimately familiar with the HBase code, so take this thought for what it's worth,
I re-read the ACID statement because I agree, what i had always assumed was that you would get partial successes all the time.
If i interpret it correctly, the point they are making is that it "may" return back which ones succeeded and which ones failed, but I do know there has been steady effort to get more and more ACID compliant to make HBase more friendly, so it's not outside the realm of possibility that they try and avoid doing partial multi mutates if at all possible.
If i had to guess, if your multi spanned only one regionserver, they could return an all fail, but if you hit multiple regionservers with your multi that they could not and you would get a partial sucess. The sucesses would come from the regionserver with no errors, and the failures would be all of updates for the regionserver that had the one row fail.
06-16-2016 11:04 AM