Roman Puchkovskiy created IGNITE-19400:
------------------------------------------

             Summary: Design Schema Synchronization relation with transactional 
DDL
                 Key: IGNITE-19400
                 URL: https://issues.apache.org/jira/browse/IGNITE-19400
             Project: Ignite
          Issue Type: Task
            Reporter: Roman Puchkovskiy


Currently, DDL is not transactional by design (meaning that a DDL command is 
not added to a transaction scope if run inside an explicit transaction: it is 
either forbidden in such context, or it becomes visible to other transactions 
immediately and is not rolled back when its transction gets aborted), but it is 
possible that it will be made transactional later.

The idea is that, if a DDL is transactional, we install the corresponding 
update as usual (assigning it some activation moment Tu in the future), but we 
also assign a transaction ID to it.
 # If a transaction sees such an update that has not yet activated, it ignores 
it
 # If a transaction sees such an update, and the update has already activated, 
and the tx corresponding to the schema update is finished, then the current 
transction either treats the update as installed and active or ignores it, 
depending on whether the update's transaction has been committed or aborted
 # If a transaction T sees such an update, and the update activation moment has 
passed, but the tx of the update is not yet finished, then the update is still 
pending, and
 ## If the InitialSchema of T is compatible with the pending update schema, 
then T goes on ignoring the pending update (as the pending update activation 
would not influence the outcome of T)
 ## If the InitialSchema of T is not compatible with the pending update schema, 
then we can
 ### abort T immediately
 ### wait till update's tx finishes and only abort T if tx commits, otherwise 
just ignore the update
 ### wait for some bounded time and abort either if the update's tx commits or 
if it does not finish in time



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

Reply via email to