Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
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
-
Reviewed
-
Description
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:
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
The above prints:
Expect 5; Got Value=10
Attachments
Attachments
Issue Links
- is related to
-
HBASE-4536 Allow CF to retain deleted rows
- Closed
-
HBASE-3082 For ICV gets, first look in MemStore before reading StoreFiles
- Closed