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

Roman Puchkovskiy updated IGNITE-21316:
---------------------------------------
    Description: 
When executing an DDL operation on one node and then executing another 
operation (depending on the first operation to finish) on another node, the 
second operation might not see the first operation results.

For example, if we create a zone via node A, wait for the DDL future to 
complete and then we try to create a table using that new zone via node B, the 
table creation might fail because node B does not see the newly-created zone 
yet.

This is because the zone creation future only makes us wait for all activation 
timestamp to become non-future on all clocks on the cluster, but when this 
happens, there is no guarantee that all nodes actually received the new catalog 
version.

To fix this, we need to do a schema sync for timestamp equal to 'now' before 
doing any DDL operation.

This should probably be done in the DDL handler (but maybe it makes sense to do 
it in the `execute()` method of the CatalogManager).

> Do schema sync before executing a DDL operation
> -----------------------------------------------
>
>                 Key: IGNITE-21316
>                 URL: https://issues.apache.org/jira/browse/IGNITE-21316
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-beta2
>
>
> When executing an DDL operation on one node and then executing another 
> operation (depending on the first operation to finish) on another node, the 
> second operation might not see the first operation results.
> For example, if we create a zone via node A, wait for the DDL future to 
> complete and then we try to create a table using that new zone via node B, 
> the table creation might fail because node B does not see the newly-created 
> zone yet.
> This is because the zone creation future only makes us wait for all 
> activation timestamp to become non-future on all clocks on the cluster, but 
> when this happens, there is no guarantee that all nodes actually received the 
> new catalog version.
> To fix this, we need to do a schema sync for timestamp equal to 'now' before 
> doing any DDL operation.
> This should probably be done in the DDL handler (but maybe it makes sense to 
> do it in the `execute()` method of the CatalogManager).



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

Reply via email to