You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Andrew Purtell (JIRA)" <ji...@apache.org> on 2016/11/15 04:31:58 UTC

[jira] [Commented] (HBASE-17096) checkAndMutateApi doesn't work correctly on 0.98.23

    [ https://issues.apache.org/jira/browse/HBASE-17096?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15666037#comment-15666037 ] 

Andrew Purtell commented on HBASE-17096:
----------------------------------------

Ok. Tomorrow we will find the commit that changed this behavior and go from there. [~samarth.jain@gmail.com]  [~giacomotaylor] [~lhofhansl] 

> checkAndMutateApi doesn't work correctly on 0.98.23
> ---------------------------------------------------
>
>                 Key: HBASE-17096
>                 URL: https://issues.apache.org/jira/browse/HBASE-17096
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Samarth Jain
>
> Below is the test case. It uses some Phoenix APIs for getting hold of admin and HConnection but should be easily adopted for an HBase IT test. The second checkAndMutate should return false but it is returning true. This test fails with HBase-0.98.23 and works fine with HBase-0.98.17
> {code}
> @Test
>     public void testCheckAndMutateApi() throws Exception {
>         byte[] row = Bytes.toBytes("ROW");
>         byte[] tableNameBytes = Bytes.toBytes(generateUniqueName());
>         byte[] family = Bytes.toBytes(generateUniqueName());
>         byte[] qualifier = Bytes.toBytes("QUALIFIER");
>         byte[] oldValue = null;
>         byte[] newValue = Bytes.toBytes("VALUE");
>         Put put = new Put(row);
>         put.add(family, qualifier, newValue);
>         try (Connection conn = DriverManager.getConnection(getUrl())) {
>             PhoenixConnection phxConn = conn.unwrap(PhoenixConnection.class);
>             try (HBaseAdmin admin = phxConn.getQueryServices().getAdmin()) {
>                 HTableDescriptor tableDesc = new HTableDescriptor(
>                         TableName.valueOf(tableNameBytes));
>                 HColumnDescriptor columnDesc = new HColumnDescriptor(family);
>                 columnDesc.setTimeToLive(120);
>                 tableDesc.addFamily(columnDesc);
>                 admin.createTable(tableDesc);
>                 HTableInterface tableDescriptor = admin.getConnection().getTable(tableNameBytes);
>                 assertTrue(tableDescriptor.checkAndPut(row, family, qualifier, oldValue, put));
>                 Delete delete = new Delete(row);
>                 RowMutations mutations = new RowMutations(row);
>                 mutations.add(delete);
>                 assertTrue(tableDescriptor.checkAndMutate(row, family, qualifier, CompareOp.EQUAL, newValue, mutations));
>                 assertFalse(tableDescriptor.checkAndMutate(row, family, qualifier, CompareOp.EQUAL, newValue, mutations));
>             }
>         }
>     }
> {code}
> FYI, [~apurtell], [~jamestaylor], [~lhofhansl]. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)