[ 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)