[
https://issues.apache.org/jira/browse/HBASE-21596?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16741471#comment-16741471
]
Wellington Chevreuil commented on HBASE-21596:
----------------------------------------------
Thanks for pointing out HBASE-18142, [~busbey]. This is a different problem,
though. HBASE-18142 only changed behaviour of hbase shell delete command. Prior
to HBASE-18142, specifying a timestamp to delete command would cause all
versions older than this timestamp to be deleted. For example, if a cell had 3
versions, say T1, T2 and T3, then triggering a delete specifying timestamp T1,
would all cause all 3 versions to be deleted. If T2 was specified, then T2 and
T3 versions would be deleted. Now, only the specified version is actually
deleted.
This jira (HBASE-21596) deals with a different problem noticed on current
master branch. Problem here is that if a given cell had extrapolated its CF max
versions, then when one of these versions deleted while all versions are still
in memstore, the extra value is shown again by get/deletes. For example, say a
CF whose VERSIONS => 3. Adding versions T1, T2, T3 and T4 for a given cell, a
scan/get with VERSIONS => 10, for example will show T4, T3 and T2, which is
correct. If one of this versions is deleted, say T3, then same scan/get is ran,
results show now are T4, T2 and T1, which is not correct, as T1 should had
already been gone when T4 was inserted. This behaviour is inconsistent as well,
because if memstore had been flushed prior to the delete, the scan/get result
would correctly return only T4 and T2, as the extra cell was filtered out while
flushing.
> HBase Shell "delete" command can cause older versions to be shown even if
> VERSIONS is configured as 1
> -----------------------------------------------------------------------------------------------------
>
> Key: HBASE-21596
> URL: https://issues.apache.org/jira/browse/HBASE-21596
> Project: HBase
> Issue Type: Bug
> Reporter: Wellington Chevreuil
> Assignee: Wellington Chevreuil
> Priority: Minor
> Attachments: HBASE-21596-master.001.patch, initial-patch.txt
>
>
> HBase Shell delete command is supposed to operate over an specific TS. If no
> TS is informed, it will assume the latest TS for the cell and put delete
> marker for it.
> However, for a CF with VERSIONS => 1, if multiple puts were performed for
> same cell, there may be multiple cell versions on the memstore, so delete
> would only be "delete marking" one of those, and causing the most recent no
> marked one to be shown on gets/scans, which then contradicts the CF "VERSIONS
> => 1" configuration.
> This issue is not seen with deleteall command or using Delete operation from
> Java API.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)