[ 
https://issues.apache.org/jira/browse/HBASE-18572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16125665#comment-16125665
 ] 

Chia-Ping Tsai commented on HBASE-18572:
----------------------------------------

bq.   So the delete should delete only the puts that are having corresponding 
Vis labels. If the put is not havin any such vis label the delete should not be 
marking it as deleted.
So do I. 

bq. Is all test cases in 'TestVisibilityLabelsWithDeletes' passing after this 
change?
yes. It passes locally, and QA looks good.



> Delete#addColumn can't remove the cell which has no visibility label
> --------------------------------------------------------------------
>
>                 Key: HBASE-18572
>                 URL: https://issues.apache.org/jira/browse/HBASE-18572
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Chia-Ping Tsai
>            Assignee: Chia-Ping Tsai
>         Attachments: HBASE-18572.ut.patch, HBASE-18572.v0.patch, 
> HBASE-18572.v0.patch
>
>
> {code:title=DefaultVisibilityLabelServiceImpl.java}
>   @Override
>   public boolean matchVisibility(List<Tag> putVisTags, Byte putTagsFormat, 
> List<Tag> deleteVisTags,
>       Byte deleteTagsFormat) throws IOException {
>     if ((deleteTagsFormat != null && deleteTagsFormat == 
> SORTED_ORDINAL_SERIALIZATION_FORMAT)
>         && (putTagsFormat == null || putTagsFormat == 
> SORTED_ORDINAL_SERIALIZATION_FORMAT)) {
>       if (putVisTags.isEmpty()) {
>         // Early out if there are no tags in the cell
>         return false;
>       }
>       if (putTagsFormat == null) {
>         return matchUnSortedVisibilityTags(putVisTags, deleteVisTags);
>       } else {
>         return matchOrdinalSortedVisibilityTags(putVisTags, deleteVisTags);
>       }
>     }
>     throw new IOException("Unexpected tag format passed for comparison, 
> deleteTagsFormat : "
>         + deleteTagsFormat + ", putTagsFormat : " + putTagsFormat);
>   }
> {code}
> If the putVisTags is empty, it will return the false directly. Hence, the 
> Delete#addColumn can't "see" the cell as well as deleting it. The 
> Delete#addColumns, by contrast, doesn't invoke the 
> cp#prePrepareTimeStampForDeleteVersion so it can remove the cell.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to