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

Roman Puchkovskiy updated IGNITE-20715:
---------------------------------------
    Description: 
When record/KV views don't get an explicit transaction, they choose 'now' to 
get schema version for tuple marshalling. Only after that they call 
InternalTable methods, and those methods actually create an implicit 
transaction; so there is a gap between the moment at which a schema was 
obtained for marshalling and the moment corresponding to the transaction start. 
From the point of view of PartitionReplicaListener, the latter is the moment 
that should be used to obtain the table schema.

As there is a gap, those schemas (for marshalling and for processing) might be 
different (if a schema change activates in between).
 # We should check that the schema version of the tuples that arrive to 
PartitionReplicaListener match the schema version corresponding to the 
transaction; if not, a special exception has to be thrown.
 # Record/KV views must retry an operation that causes such an exception.

> Check that versions of tuples sent to PartitionReplicaListener match tx-bound 
> schema version
> --------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-20715
>                 URL: https://issues.apache.org/jira/browse/IGNITE-20715
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Roman Puchkovskiy
>            Assignee: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-beta2
>
>
> When record/KV views don't get an explicit transaction, they choose 'now' to 
> get schema version for tuple marshalling. Only after that they call 
> InternalTable methods, and those methods actually create an implicit 
> transaction; so there is a gap between the moment at which a schema was 
> obtained for marshalling and the moment corresponding to the transaction 
> start. From the point of view of PartitionReplicaListener, the latter is the 
> moment that should be used to obtain the table schema.
> As there is a gap, those schemas (for marshalling and for processing) might 
> be different (if a schema change activates in between).
>  # We should check that the schema version of the tuples that arrive to 
> PartitionReplicaListener match the schema version corresponding to the 
> transaction; if not, a special exception has to be thrown.
>  # Record/KV views must retry an operation that causes such an exception.



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

Reply via email to