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