[
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)