[
https://issues.apache.org/jira/browse/HBASE-3443?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13253629#comment-13253629
]
Hudson commented on HBASE-3443:
-------------------------------
Integrated in HBase-0.94-security #9 (See
[https://builds.apache.org/job/HBase-0.94-security/9/])
HBASE-3443 ICV optimization to look in memstore first and then store files
(HBASE-3082) does not work when deletes are in the mix (Revision 1325453)
Result = SUCCESS
larsh :
Files :
*
/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
*
/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
> 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
> Components: regionserver
> Affects Versions: 0.90.0, 0.90.1, 0.90.2, 0.90.3, 0.90.4, 0.90.5, 0.90.6,
> 0.92.0, 0.92.1
> Reporter: Kannan Muthukkaruppan
> Assignee: Lars Hofhansl
> Priority: Critical
> Labels: corruption
> Fix For: 0.94.0, 0.96.0
>
> Attachments: 3443.txt
>
>
> 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