ICV optimization to look in memstore first and then store files (HBASE-3082) 
does not work when deletes are in the mix
----------------------------------------------------------------------------------------------------------------------

                 Key: HBASE-3443
                 URL: https://issues.apache.org/jira/browse/HBASE-3443
             Project: HBase
          Issue Type: Bug
            Reporter: Kannan Muthukkaruppan


For incrementColumnValue() HBASE-3082 adds an optimization to check memstores 
first, and only if not present in the memstore then check the store files. In 
the presence of deletes, the above optimization is not reliable.

If the column is marked as deleted in the memstore, one should not look further 
into the store files. But currently, the code does so.

Sample test code outline:

{code}
admin.createTable(desc)

table = HTable.new(conf, tableName)

table.incrementColumnValue(Bytes.toBytes("row"), cf1name, 
Bytes.toBytes("column"), 5);

admin.flush(tableName)
sleep(2)

del = Delete.new(Bytes.toBytes("row"))
table.delete(del)

table.incrementColumnValue(Bytes.toBytes("row"), cf1name, 
Bytes.toBytes("column"), 5);

get = Get.new(Bytes.toBytes("row"))
keyValues = table.get(get).raw()
keyValues.each do |keyValue|
  puts "Expect 5; Got Value=#{Bytes.toLong(keyValue.getValue())}";
end
{code}

The above prints:
{code}
Expect 5; Got Value=10
{code}


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to