tephra-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Neumann (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (TEPHRA-201) In-progress transactions may become visible when transactions are checkpointed
Date Thu, 08 Dec 2016 20:44:58 GMT

    [ https://issues.apache.org/jira/browse/TEPHRA-201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15733348#comment-15733348

Andreas Neumann commented on TEPHRA-201:

I posted the design approach before, but that appears to have been lost. (i have had issues
with Jira availability, too). 
So here it is again:

The existing design keeps a list of child write pointers for each in-progress tx, each representing
a checkpoint of that tx. The checkpoint transactions themselves are not in the in-progress
set. This means that whenever we create a new transaction, we have to merge all child write
pointers into the in-progress list. This is where the original bug was: it was simply appending
them, which caused the in-progress list of a tx to be out of sort order, and binary search
did not work any more. Another (so far unreported) issue with this approach was that when
a transaction times out, its child write pointers were not added to the invalid set, making
these uncommitted and invalid writes visible. 

The proposed fix is to store the checkpoint transactions also in the in-progress set. With
that, starting a new transaction only requires copying all write pointers from in-progress
(which is sorted) to the new transaction. This change will require that whenever a transaction
is committed, aborted or invalidated, all its child transactions also have to be removed from

> In-progress transactions may become visible when transactions are checkpointed
> ------------------------------------------------------------------------------
>                 Key: TEPHRA-201
>                 URL: https://issues.apache.org/jira/browse/TEPHRA-201
>             Project: Tephra
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 0.8.0-incubating, 0.9.0-incubating
>            Reporter: Poorna Chandra
>            Assignee: Poorna Chandra
>            Priority: Blocker
>             Fix For: 0.10.0-incubating
> When a transaction is created, the current in-progress list is attached to the transaction
object. This list is used to filter out in-progress transactions during read.
> The transaction object expects this list to be sorted numerically since it does a binary
search for filtering out the in-progress transactions. 
> When checkpointing feature was added in TEPHRA-96, checkpoints were also added as part
of the in-progress list since data writes from checkpoints also have to be filtered out during
reads. However adding checkpoints broke the sort order. This leads to binary search not working
as expected to filter out in-progress transactions.

This message was sent by Atlassian JIRA

View raw message