Description
tablesByIdVV.update() inside TableManager#updateAssignments initiates async RAFT groups' start, but its future supplier returns completedFuture(null), so there is no causal dependency between completion of what update() returned and the futures that start RAFT groups; hence, there is no causal dependency between completing 'table created' future and RAFT groups start.
While updateAssignmentsInternal is fully synchronous, this is not a problem. But in IGNITE-18170 we make it async, and here the race starts manifesting itself.
Probably, update supplier should return a future depending on RAFT group start future and not just a completed future.
Attachments
Issue Links
- blocks
-
IGNITE-18170 Deadlock in TableManager#updateAssignmentInternal()
- Resolved
- links to