[
https://issues.apache.org/jira/browse/IGNITE-11173?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Igor Seliverstov updated IGNITE-11173:
--------------------------------------
Fix Version/s: 2.8
> MVCC TX: Acquire write version if coordinator changed in the middle of tx.
> --------------------------------------------------------------------------
>
> Key: IGNITE-11173
> URL: https://issues.apache.org/jira/browse/IGNITE-11173
> Project: Ignite
> Issue Type: New Feature
> Components: mvcc
> Reporter: Igor Seliverstov
> Priority: Major
> Fix For: 2.8
>
>
> Current implementation suppose all transactions on previous coordinator were
> finished before new coordinator has been initialized, but there is a case
> when it isn't true.
> A tx which hasn't obtained a topology lock (hasn't done any updates) doesn't
> prevent a topology change, this way nothing prevent new transactions start.
> All newly created txs suppose all updates on previous coordinator are
> finished - this mean a possible update of mapped on previous coordinator txs
> is considered as stale regardless the tx is still active. We make such txs
> readonly to not break the visibility checking logic (see IGNITE-8841).
> There are two possible ways to allow writes after coordinator is changed:
> * collect active txs and their dependencies and populate the active txs list
> with them during a new coordinator initialization - this approach is quite
> complex and have obvious issues like necessity of using full tx versions in a
> snapshot
> * acquire a new version right after topology locked for writes using
> previously acquired "read" version for possible write conflicts detecting and
> visibility checking.
> I would prefer the second option as fully understandable and relatively easy
> to implement.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)