[ 
https://issues.apache.org/jira/browse/TEPHRA-257?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andreas Neumann resolved TEPHRA-257.
------------------------------------
    Resolution: Won't Fix

> If start() encounters an RPC timeout, an invalid transaction is left behind
> ---------------------------------------------------------------------------
>
>                 Key: TEPHRA-257
>                 URL: https://issues.apache.org/jira/browse/TEPHRA-257
>             Project: Tephra
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 0.13.0-incubating
>            Reporter: Andreas Neumann
>            Assignee: Poorna Chandra
>
> Suppose the following scenario: 
> - a thrift client starts a transaction
> - the server responds, but for whatever reason it is slow 
> - by the time the response is sent, the client has timed out the connection
> - now the server has started a transaction, but the client has no knowledge 
> of it
> - that transaction will never be committed or aborted and eventually times out
> - it becomes an invalid transaction
> This is a common scenario when HDFS is slow and the write load is high. This 
> means, a lot of change ids have to be written to a slow transaction log. Now 
> we will generate invalid transactions systematically, which eventually 
> degrades the performance of the entire system.
> It would be good if the server could detect this situation and abort the 
> transaction immediately. This is safe to do whenever sending of the response 
> fails, because we know that the client did not receive it, and hence it will 
> not generate data with that transaction id. 
> This is a tricky change, though: Thrift does not give us a way to intercept 
> exceptions from socket failures. We would have to copy a Thrift class 
> (ProcessFunction) and change it to handle exceptions that occur during the 
> write of the response. 



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

Reply via email to