[ https://issues.apache.org/jira/browse/HBASE-3443?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13128530#comment-13128530 ]
Ted Yu commented on HBASE-3443: ------------------------------- +1 on the proposal. > 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. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira