You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tephra.apache.org by "Poorna Chandra (JIRA)" <ji...@apache.org> on 2017/02/22 01:58:44 UTC

[jira] [Resolved] (TEPHRA-223) Transactions started after a snapshot restore can have incorrect invalid transaction list

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

Poorna Chandra resolved TEPHRA-223.
-----------------------------------
    Resolution: Fixed

> Transactions started after a snapshot restore can have incorrect invalid transaction list
> -----------------------------------------------------------------------------------------
>
>                 Key: TEPHRA-223
>                 URL: https://issues.apache.org/jira/browse/TEPHRA-223
>             Project: Tephra
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 0.5.0, 0.6.5, 0.7.0, 0.8.0-incubating, 0.9.0-incubating, 0.10.0-incubating
>            Reporter: Poorna Chandra
>            Assignee: Poorna Chandra
>             Fix For: 0.11.0-incubating
>
>
> Transaction Manager uses two datastructures to manage the invalid list - a {{List}} and an {{array}}. All updates to invalid list happen to the {{List}}, and the list is then sorted and copied over to the {{array}}. This is an optimization done so as to not sort the invalid list every time a new transaction is created.
> However during a snapshot restore after the Transaction Manager starts up, the invalid list gets correctly restored to the {{List}} but does not get copied over to the {{array}}. This will lead to transactions started right after a snapshot restore to have empty invalid list. This will make invalid data to become visible to those transactions.
> Since the {{List}} still contains the right invalid list, any update to the invalid list - like invalidating a transaction,  will restore the {{array}} back to a good state.
> Also compactions will still remove invalid data as expected since new snapshots are searialized using the {{List}}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)