[
https://issues.apache.org/jira/browse/HBASE-8626?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13669113#comment-13669113
]
Vinod commented on HBASE-8626:
------------------------------
I think this becomes relevant when I want to remove all columns in a column
family followed by adding some new columns to the same column family atomically.
Here is my original use-case which lead to this, please suggest how else I can
achieve the same?
I have a HBase (v0.94.7) table with a single column family and columns are
added to it over time. These columns are named as the timestamp they were
created, so unless I query the row I do not know what all columns it has.
Now given a row, I want to _atomically_ remove all the existing columns of this
column family and add a new set of columns and values.
So I thought of using HBase's RowMutations like:
--------------
RowMutations mutations = new RowMutations(row);
//delete the column family
Delete delete = new Delete(row);
delete.deleteFamily(cf);
//add new columns
Put put = new Put(row);
put.add(cf, col1, v1);
put.add(cf, col2, v2);
//delete column family and add new columns to same family
mutations.add(delete);
mutations.add(put);
table.mutateRow(mutations);
--------------
But what this code ends up doing is just deleting the column family, it does
not add the new columns to the column family.
> RowMutations fail when Delete and Put on same columnFamily/column/row
> ---------------------------------------------------------------------
>
> Key: HBASE-8626
> URL: https://issues.apache.org/jira/browse/HBASE-8626
> Project: HBase
> Issue Type: Bug
> Components: regionserver
> Affects Versions: 0.94.7, 0.95.0
> Environment: Ubuntu 12.04, HBase 0.94.7
> Reporter: Vinod
> Assignee: Ted Yu
> Fix For: 0.94.7, 0.95.1
>
> Attachments: 8626-v1.txt, TestRowMutations.java,
> tests_for_row_mutations1.patch
>
>
> When RowMutations have a Delete followed by Put to same column family or
> columns or rows, only the Delete is happening while the Put is ignored so
> atomicity of RowMutations is broken for such cases.
> Attached is a unit test where the following tests are failing:
> - testDeleteCFThenPutInSameCF: Delete a column family and then Put to same
> column family.
> - testDeleteColumnThenPutSameColumn: Delete a column and then Put to same
> column.
> - testDeleteRowThenPutSameRow: Delete a row and then Put to same row
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira