[
https://issues.apache.org/jira/browse/HBASE-10803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13944407#comment-13944407
]
LiJianyin commented on HBASE-10803:
-----------------------------------
Thanks, Lars Hofhansl, stack. I'll try to write a unit tests.
in addition:
two column family: CF1, CF0
addOrUpdate: put->CF1 with the timestamp
delete(mutateRow): delete->CF1(deleteColumns) and put->CF0 with the
same timestamp
all timestamps are from client (System.currentTimeMillis())
so, if delete(mutateRow) success, the CF0 must have value. but the
result is not so.
for example: (rowkey+qualifier only in DEL_SUCCESS_LOG)
in the DEL_SUCCESS_LOG:
timestamp:1394601911543 rowkey:361523835735633
qualifier:3670583952628921 value:0
--result: there is no value in CF0 with the rowkey+qualifier
another example: (the same rowkey+qualifier are both in
DEL_SUCCESS_LOG and PUT_SUCCESS_LOG)
in the PUT_SUCCESS_LOG:
timestamp:1394601634849 rowkey:213772920506212
qualifier:3687288854440310 value:0
in the DEL_SUCCESS_LOG:
timestamp:1394601913327 rowkey:213772920506212
qualifier:3687288854440310 value:0
--result: CF1 with the rowkey+qualifier+timestamp 1394601634849
has the value, but no value in CF0 with the rowkey+qualifier
> "mutateRow" maybe fail when Region Server restarted(or killed) or Region
> Balance
> --------------------------------------------------------------------------------
>
> Key: HBASE-10803
> URL: https://issues.apache.org/jira/browse/HBASE-10803
> Project: HBase
> Issue Type: Bug
> Affects Versions: 0.96.1.1
> Environment: hbase0.96.1.1
> hadoop2.2
> jdk1.7
> 5 Region Server
> Reporter: LiJianyin
>
> found that the operation "mutateRow" maybe fail if Region Server
> restarted(or killed) or Region Balance, but the java client didnot throw
> exceptions and there was no exception in the server's log either.
> the client code :
> HTableInterface table = connection.getTable(TABLE_NAME);
> Delete d = new Delete(Bytes.toBytes(rowkey), time);
> d.deleteColumns(FAMILY, Bytes.toBytes(id), time);
> Put p = new Put(Bytes.toBytes(rowkey));
> p.add(FAMILY_DEL, Bytes.toBytes(id), time,
> Bytes.toBytes(value));
> RowMutations rm = new
> RowMutations(Bytes.toBytes(rowkey));
> rm.add(d);
> rm.add(p);
> table.mutateRow(rm);
> table.close();
> the test data:
> Operator Type: put; mutateRow(delete+put)
> Operator Total Count:202194822 put:160866148 mutateRow:41328674
> All put correct, but 161 mutateRow incorrect (161 data was not
> mutateRowed in fact).
> then we checked log when the time mutateRow failed, NO EXCEPTION
> THROWED, found that as follow:
>
> 39 failed hbase auto region-balance
> 44 failed hbase region server killed
> 59 failed hbase region server restart
> 19 failed hadoop datanode restart
--
This message was sent by Atlassian JIRA
(v6.2#6252)