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

ramkrishna.s.vasudevan commented on HBASE-18572:
------------------------------------------------

I think the patch makes sense. 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.
Is all test cases in 'TestVisibilityLabelsWithDeletes' passing after this 
change? 



> 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