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

ASF GitHub Bot commented on OMID-84:
------------------------------------

Github user ebortnikov commented on a diff in the pull request:

    https://github.com/apache/incubator-omid/pull/19#discussion_r166405171
  
    --- Diff: 
hbase-client/src/main/java/org/apache/omid/transaction/HBaseTransaction.java ---
    @@ -31,25 +31,31 @@
     public class HBaseTransaction extends AbstractTransaction<HBaseCellId> {
         private static final Logger LOG = 
LoggerFactory.getLogger(HBaseTransaction.class);
     
    -    public HBaseTransaction(long transactionId, long epoch, 
Set<HBaseCellId> writeSet, AbstractTransactionManager tm) {
    -        super(transactionId, epoch, writeSet, tm);
    +    public HBaseTransaction(long transactionId, long epoch, 
Set<HBaseCellId> writeSet, Set<HBaseCellId> conflictFreeWriteSet, 
AbstractTransactionManager tm) {
    +        super(transactionId, epoch, writeSet, conflictFreeWriteSet, tm);
         }
     
    -    public HBaseTransaction(long transactionId, long readTimestamp, 
VisibilityLevel visibilityLevel, long epoch, Set<HBaseCellId> writeSet, 
AbstractTransactionManager tm) {
    -        super(transactionId, readTimestamp, visibilityLevel, epoch, 
writeSet, tm);
    +    public HBaseTransaction(long transactionId, long readTimestamp, 
VisibilityLevel visibilityLevel, long epoch, Set<HBaseCellId> writeSet, 
Set<HBaseCellId> conflictFreeWriteSet, AbstractTransactionManager tm) {
    +        super(transactionId, readTimestamp, visibilityLevel, epoch, 
writeSet, conflictFreeWriteSet, tm);
         }
     
    +    private void cleanCell(HBaseCellId cell) {
    +        Delete delete = new Delete(cell.getRow());
    +        delete.deleteColumn(cell.getFamily(), cell.getQualifier(), 
cell.getTimestamp());
    +        try {
    +            cell.getTable().delete(delete);
    +        } catch (IOException e) {
    +            LOG.warn("Failed cleanup cell {} for Tx {}. This issue has 
been ignored", cell, getTransactionId(), e);
    +        }
    +    }
         @Override
         public void cleanup() {
    -        Set<HBaseCellId> writeSet = getWriteSet();
    -        for (final HBaseCellId cell : writeSet) {
    -            Delete delete = new Delete(cell.getRow());
    -            delete.deleteColumn(cell.getFamily(), cell.getQualifier(), 
cell.getTimestamp());
    -            try {
    -                cell.getTable().delete(delete);
    -            } catch (IOException e) {
    -                LOG.warn("Failed cleanup cell {} for Tx {}. This issue has 
been ignored", cell, getTransactionId(), e);
    -            }
    +        for (final HBaseCellId cell : getWriteSet()) {
    +            cleanCell(cell);
    +        }
    +
    +        for (final HBaseCellId cell : getConflictFreeWriteSet()) {
    --- End diff --
    
    Are conflict free writes applicable to Delete? 


> Conflict free writes
> --------------------
>
>                 Key: OMID-84
>                 URL: https://issues.apache.org/jira/browse/OMID-84
>             Project: Apache Omid
>          Issue Type: Sub-task
>            Reporter: Ohad Shacham
>            Assignee: Ohad Shacham
>            Priority: Major
>
> Today, all the writes done by a transaction are taking part in conflict 
> analysis. The purpose of this feature is to let the user decide for each 
> write, whether it should take part in the conflict analysis. 
> The motivation infers from Apache Phoenix that utilizes this feature when 
> writing to the secondary index and also when writing to the data table for 
> immutable tables (each key is added once and is not modified).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to