You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Ivan Bessonov (Jira)" <ji...@apache.org> on 2023/04/11 11:16:00 UTC

[jira] [Updated] (IGNITE-19271) Persist revision-safeTime mapping in meta-storage

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

Ivan Bessonov updated IGNITE-19271:
-----------------------------------
    Description: 
IEP-98 states:
{code:java}
When creating a message M telling the cluster about a schema update activation moment, choose the message timestamp Tm (moving safeTime forward) equal to Now, but assign Tu (activation moment) contained in that M to be Tm+DD {code}
This is hard to achieve.
h3. Problem

We need {{{}Tu==Tm+DD{}}}. Right now, with what we have in IGNITE-19028, it's not straightforward. This is because we have too many actors:
 * There's a {_}client{_}, that chooses Tu, because it's the only actor that can affect message content.
 * There's a meta-storage {_}lease-holder{_}, or {_}leader{_}, that chooses Tm.
 * There's everybody else, who expect a correspondence between Tu and Tm.

First two actors are important, because they have independent clocks, but must coordinate the same event. This is impossible with described protocol.
h3. Discussion

Let's consider these two solutions:
 # Client generates Tm.
 # Meta-storage generates Tu.

Option 1 is out of question, there must be only a single node at any given moment in time, that's responsible for the linear order of time in messages.

What about option 2? Since meta-storage doesn't know anything about commands semantics, it can't really generate any data. So this solution doesn't work either.

 

  was:
IEP-98 states:
{code:java}
When creating a message M telling the cluster about a schema update activation moment, choose the message timestamp Tm (moving safeTime forward) equal to Now, but assign Tu (activation moment) contained in that M to be Tm+DD {code}
This is hard to achieve.

 


> Persist revision-safeTime mapping in meta-storage
> -------------------------------------------------
>
>                 Key: IGNITE-19271
>                 URL: https://issues.apache.org/jira/browse/IGNITE-19271
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Ivan Bessonov
>            Priority: Major
>              Labels: ignite-3
>
> IEP-98 states:
> {code:java}
> When creating a message M telling the cluster about a schema update activation moment, choose the message timestamp Tm (moving safeTime forward) equal to Now, but assign Tu (activation moment) contained in that M to be Tm+DD {code}
> This is hard to achieve.
> h3. Problem
> We need {{{}Tu==Tm+DD{}}}. Right now, with what we have in IGNITE-19028, it's not straightforward. This is because we have too many actors:
>  * There's a {_}client{_}, that chooses Tu, because it's the only actor that can affect message content.
>  * There's a meta-storage {_}lease-holder{_}, or {_}leader{_}, that chooses Tm.
>  * There's everybody else, who expect a correspondence between Tu and Tm.
> First two actors are important, because they have independent clocks, but must coordinate the same event. This is impossible with described protocol.
> h3. Discussion
> Let's consider these two solutions:
>  # Client generates Tm.
>  # Meta-storage generates Tu.
> Option 1 is out of question, there must be only a single node at any given moment in time, that's responsible for the linear order of time in messages.
> What about option 2? Since meta-storage doesn't know anything about commands semantics, it can't really generate any data. So this solution doesn't work either.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)