Samarth Jain created HBASE-17096:
------------------------------------

             Summary: 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)

Reply via email to