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

    https://github.com/apache/phoenix/pull/129#discussion_r45368191
  
    --- Diff: 
phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java ---
    @@ -570,6 +946,97 @@ public void rollback(PhoenixConnection connection) 
throws SQLException {
         @Override
         public void close() throws SQLException {
         }
    +
    +    private void reset() {
    +        txStarted = false;
    +        tx = null;
    +        uncommittedPhysicalNames.clear();
    +    }
    +    
    +    public void rollback() throws SQLException {
    +        clear();
    +        txAwares.clear();
    +        if (txContext != null) {
    +            try {
    +                if (txStarted) {
    +                    txContext.abort();
    +                }
    +            } catch (TransactionFailureException e) {
    +                throw new SQLException(e); // TODO: error code
    +            } finally {
    +                   reset();
    +            }
    +        }
    +    }
    +    
    +    public void commit() throws SQLException {
    +           boolean sendMutationsFailed=false;
    +        try {
    +            send();
    +        } catch (Throwable t) {
    +           sendMutationsFailed=true;
    +           throw t;
    +        } finally {
    +            txAwares.clear();
    +            if (txContext != null) {
    +                try {
    +                    if (txStarted && !sendMutationsFailed) {
    +                        txContext.finish();
    +                    }
    +                } catch (TransactionFailureException e) {
    +                    try {
    +                        txContext.abort(e);
    +                        throw TransactionUtil.getSQLException(e);
    +                    } catch (TransactionFailureException e1) {
    +                        throw TransactionUtil.getSQLException(e);
    +                    }
    +                } finally {
    +                   if (!sendMutationsFailed) {
    +                           reset();
    +                   }
    +                  }
    +            }
    +        }
    +    }
    +
    +    /**
    --- End diff --
    
    Slight tweak to this comment:
    Support read-your-own-write semantics by sending uncommitted data to HBase 
prior to running
    a query. In this way, they are visible to subsequent reads but are not 
actually committed until
    commit is called.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to