[ 
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)

Reply via email to