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

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

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

    https://github.com/apache/incubator-omid/pull/46#discussion_r223989230
  
    --- Diff: 
transaction-client/src/main/java/org/apache/omid/transaction/AbstractTransactionManager.java
 ---
    @@ -350,6 +356,43 @@ private void 
markReadOnlyTransaction(AbstractTransaction<? extends CellId> readO
     
         }
     
    +    private void commitLowLatencyTransaction(AbstractTransaction<? extends 
CellId> tx)
    +            throws RollbackException, TransactionException {
    +        try {
    +
    +            long commitTs = tsoClient.commit(tx.getStartTimestamp(), 
tx.getWriteSet(), tx.getConflictFreeWriteSet()).get();
    +            boolean committed = 
commitTableWriter.atomicAddCommittedTransaction(tx.getStartTimestamp(),commitTs);
    +            if (!committed) {
    +                // Transaction has been invalidated by other client
    +                rollback(tx);
    +                
commitTableClient.completeTransaction(tx.getStartTimestamp());
    +                rolledbackTxsCounter.inc();
    +                throw new RollbackException("Transaction " + 
tx.getTransactionId() + " got invalidated");
    +            }
    +            certifyCommitForTx(tx, commitTs);
    +            updateShadowCellsAndRemoveCommitTableEntry(tx, postCommitter);
    +
    +        } catch (ExecutionException e) {
    +            if (e.getCause() instanceof AbortException) { // TSO reports 
Tx conflicts as AbortExceptions in the future
    +                rollback(tx);
    +                rolledbackTxsCounter.inc();
    +                throw new RollbackException("Conflicts detected in tx 
writeset", e.getCause());
    +            }
    +
    +            if (e.getCause() instanceof ServiceUnavailableException || 
e.getCause() instanceof ConnectionException) {
    +                errorTxsCounter.inc();
    +                rollback(tx); // Rollback proactively cause it's likely 
that a new TSOServer is now master
    --- End diff --
    
    the leader


> Reducing begin/commit latency by distributing the write to the commit table
> ---------------------------------------------------------------------------
>
>                 Key: OMID-90
>                 URL: https://issues.apache.org/jira/browse/OMID-90
>             Project: Apache Omid
>          Issue Type: Sub-task
>            Reporter: Ohad Shacham
>            Assignee: Yonatan Gottesman
>            Priority: Major
>         Attachments: OmidCloud-VLDB.pdf, omid90.patch
>
>
> Today, Omid's commits are done by the transaction manager. In order to 
> efficiently write to the commit table, the transaction manager batches these 
> writes. This optimization, even thought reduces the write time to HBase, 
> significantly increases the begin and commit latency. The commit latency 
> increases since a commit operation returns only after its commit timestamp 
> was persisted in the commit table. And the begin latency increases since 
> begin returns a transaction id that is also used by the transaction to 
> identify its snapshot and therefore, begin returns only after all commits 
> with commit id smaller than the begin id was persisted in the commit table. 
> This is crucial, since a snapshot change during a transaction run may violate 
> snapshot isolation. 
>  
> The idea of this feature is to distribute the commit by moving the write to 
> the commit table from the server to the client. The transaction manager does 
> conflict analysis and returns a commit timestamp. While the client atomically 
> persists this commit in the commit table.
> This significantly reduces the begin and commit latency, since batching is 
> not required anymore. A begin operation can immediately returns and a commit 
> operation returns after conflict detection. 
> This can introduce snapshot isolation violation since a slow client can 
> commit and change other transaction's snapsho. Therefore, we use an 
> invalidation technique which is similar to the one Omid uses today to 
> maintain snapshot isolation in high availability mode.



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

Reply via email to