[ https://issues.apache.org/jira/browse/IGNITE-13577?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ivan Daschinskiy updated IGNITE-13577: -------------------------------------- Description: Proposed design: *LN* -- node that performs graceful shutdown *CRD* -- Leader (coordinator) of Ignite cluster *N* -- Other nodes of Ignite cluster. # *LN* create EPHEMERAL *latch* znode with path /<root>/nl/<node_id> and set watcher on it # *LN* delete own znode in /<root>/n as usual. # *LN* blocks with timeout stop until *latch* exists. # *CRD* receives notification and check if exists *latch* for this node # *CRD* generate NODE_LEFT event with flag fail=false, otherwise fail=true # *N* acks events. # *CRD* on receiving all acks remove *latch* for leaving node if exists. # *LN* receives notification and proceed with node stop. was: Proposed design: *LN* -- node that performs graceful shutdown *CRD* -- Leader (coordinator) of Ignite cluster *N* -- Other nodes of Ignite cluster. # While elected, *CRD* set watches on /<root>/ns # *LN* create EPHEMERAL znode on /<root>/ns # *LN* blocks stop until receive NODE_LEFT event. # *CRD* receives notification and reset watches on /<root>/ns # *CRD* generate NODE_LEFT event. # *LN* receives events and continue stop process # *N* acks message and remove node from local node map. # *CRD* on receiving all acks checks that there is no nodes on /<root>/ns and /<root>/n related to *LN* and remove them if they presents. > Add support to graceful shutdown for ZookeeperDiscoverySpi > ---------------------------------------------------------- > > Key: IGNITE-13577 > URL: https://issues.apache.org/jira/browse/IGNITE-13577 > Project: Ignite > Issue Type: Improvement > Reporter: Ivan Daschinskiy > Assignee: Ivan Daschinskiy > Priority: Major > Time Spent: 10m > Remaining Estimate: 0h > > Proposed design: > *LN* -- node that performs graceful shutdown > *CRD* -- Leader (coordinator) of Ignite cluster > *N* -- Other nodes of Ignite cluster. > # *LN* create EPHEMERAL *latch* znode with path /<root>/nl/<node_id> and set > watcher on it > # *LN* delete own znode in /<root>/n as usual. > # *LN* blocks with timeout stop until *latch* exists. > # *CRD* receives notification and check if exists *latch* for this node > # *CRD* generate NODE_LEFT event with flag fail=false, otherwise fail=true > # *N* acks events. > # *CRD* on receiving all acks remove *latch* for leaving node if exists. > # *LN* receives notification and proceed with node stop. -- This message was sent by Atlassian Jira (v8.3.4#803005)