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

[jira] [Comment Edited] (IGNITE-16985) Design table management flow (part 1)

    [ https://issues.apache.org/jira/browse/IGNITE-16985?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17707222#comment-17707222 ] 

Denis Chudov edited comment on IGNITE-16985 at 4/3/23 8:06 AM:
---------------------------------------------------------------

Things that require attention:

1. The contract of #update(token, updater) is violated in createTableLocally and updateAssignmentsInternal: update operation in updateAssignmentsInternal is not commutative
2. PartitionReplicaListener should be created by ReplicaManager. In TableManager it is created only to pass to #startReplica method, meanwhile it requires additional fields and thread pools in TableManager.
3. tableManager.tableAsync in tablesVv.update in SqlSchemaManager: possibly should be replaced to #get(token). 
   Also, it leads to possible race with table creation: API future is done before calciteSchemaVv is completed.
4. tablesByIdVv.get(evt.revision()) : potential OutdatedTokenException in case when metastorage watch processing gets significantly behind configuration updates.

 


was (Author: denis chudov):
Things that require attention:

1. The contract of #update(token, updater) is violated in createTableLocally and updateAssignmentsInternal: update operation in updateAssignmentsInternal is not commutative
2. PartitionReplicaListener should be created by ReplicaManager. In TableManager it is created only to pass to to #startReplica method, meanwhile it requires additional fields and thread pools in TableManager.
3. tableManager.tableAsync in tablesVv.update in SqlSchemaManager: possibly should be replaced to #get(token). 
   Also, it leads to possible race with table creation: API future is done before calciteSchemaVv is completed.
4. tablesByIdVv.get(evt.revision()) : potential OutdatedTokenException in case when metastorage watch processing gets significantly behind configuration updates.

 

> Design table management flow (part 1)
> -------------------------------------
>
>                 Key: IGNITE-16985
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16985
>             Project: Ignite
>          Issue Type: Task
>            Reporter: Alexander Lapin
>            Assignee: Denis Chudov
>            Priority: Major
>              Labels: ignite-3
>         Attachments: VersionedValuesUpdates.svg, VersionedValuesUpdates.yuml, onTableCreate.svg, onTableCreate.yuml, onTableDrop.svg, onTableDrop.yuml, table.svg, table.yuml
>
>
> As a part of the issue planed:
>  # Draw a time diagram of all operations: createTable(), dropTable(), table(), tables().
>  # Emphases of correctness work of causality tokens: tablesByIdVv.
>  # Reflect cross components interactions. Components: Schema manager, SQL manager (SqlQueryProcessor), Affinity manager (it is not dedicated for now).
>  
> The task for this ticket is to make a detailed diagram of the current flow, to ease the design itself.
> Definition of done:
> We have detailed and clear description of table manager flows and the ticket IGNITE-18989 is enriched with details about the flaws we want to fix.
>  



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