Description
Some existing nodes will not participate in DDL operations. Namely:
1) Client nodes;
2) Server nodes without affected cache;
3) Nodes which joined before finish of INIT phase of particular DDL operation. At this point coordinator doesn't know whether this operation will be started or not, so information about it is not shared with joining node.
We need to inform this nodes about started DDL operations somehow, ensuring proper ordering. Custom discovery message is good candidate, but unfortunately it doesn't work for client nodes.
Possible solution:
1) Initial state is shared through custom discovery data.
2) Completed updates are broadcasted from coordinator node to all other nodes through DDL_CHANGE messages.
3) DDL_CHANGE messages must be processed in a single thread to avoid concurrency issues.
4) If DDL_CHANGE message arrived before custom discovery data (i.e. we have a race between IO and discovery flows), it's processing should be delayed until custom disco data is processed.
Attachments
Issue Links
- is duplicated by
-
IGNITE-4638 Share current DDL schema and pending DDL operations with joining nodes
- Closed