[
https://issues.apache.org/jira/browse/IGNITE-23780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mirza Aliev updated IGNITE-23780:
---------------------------------
Description:
h1. Action table
|| # || stable || pending || in S || in P || in both || action ||
| 1 | empty | empty | no | no | no | nothing |
| 2 | empty | exists | no | no | no | nothing |
| 3 | empty | forced | no | no | no | nothing |
| 4 | exists | empty | yes | no | no | nothing |
| 5 | exists | exists | yes | no | no | nothing |
| 6 | exists | forced | yes | no | no | nothing |
| 7 | empty | empty | no | no | no | nothing |
| 8 | empty | exists | no | yes | no | start |
| 9 | empty | forced | no | yes | no | start |
| 10 | exists | empty | no | no | no | stop |
| 11 | exists | exists | no | yes | no | start |
| 12 | exists | forced | no | yes | no | start |
| 13 | empty | empty | no | no | no | nothing |
| 14 | empty | exists | no | no | no | nothing |
| 15 | empty | forced | no | no | no | nothing |
| 16 | exists | empty | no | no | no | nothing |
| 17 | exists | exists | yes | yes | yes | nothing |
| 18 | exists | forced | yes | yes | yes | nothing |
| 19 | empty | empty | no | no | no | nothing |
| 20 | empty | exists | no | no | no | nothing |
| 21 | empty | forced | no | no | no | nothing |
| 22 | exists | empty | no | no | no | nothing |
| 23 | exists | exists | no | no | no | stop |
| 24 | exists | forced | no | no | no | stop |
h1. Reasons
# NIA
# NIA
# NIA
# already should be started
# already started and in use now
# -Will be rewritten after force reset => stop- already started and in use now
# NIA
# Wasn't started before => start
# Wasn't started before => start
#
# Wasn't started before => start
# Wasn't started before => start
# NIA
# NIA
# NIA
# NIA
# already should be started
# already should be started
# NIA
# NIA
# NIA
#
#
h1. Abbreviations
* *NS*: Node start
* *NIA*: Not in assignments
h1. Improved table
|| # || stable || pending || in stable || in pending || in both || on restart ||
| 1 | empty | empty | no | no | no | nothing |
| 2 | empty | exists | no | no | no | nothing |
| 3 | empty | forced | no | no | no | nothing |
| 4 | exists | empty | yes | no | no | start |
| 5 | exists | exists | yes | no | no | start |
| 6 | exists | forced | yes | no | no | nothing |
| 7 | empty | exists | no | yes | no | start |
| 8 | empty | forced | no | yes | no | start |
| 9 | exists | empty | no | no | no | nothing |
| 10 | exists | exists | no | yes | no | start |
| 11 | exists | forced | no | yes | no | start |
| 12 | exists | exists | yes | yes | yes | start |
| 13 | exists | forced | yes | yes | yes | start |
| 14 | exists | exists | no | no | no | nothing |
| 15 | exists | forced | no | no | no | nothing |
{quote}
If the node is in a stable, but not in a forced pending, it should not be
started.
if ( (stable.contains(node) && !(force && pending.contains(node))) ||
pending.contains(node) ) \{ // node should be started }
if (stable.contains(node) && force && !pending.contains(node)) \{ // node
should not be started }
!(stable.contains(node) && force && !pending.contains(node)) ==
!stable.contains(node) || !force || pending.contains(node)
{quote}
|| # || A=inStable || B=inPending || C=isForce || start? || STMT ||
| 1 | F | F | F | F | - |
| 2 | F | F | F | F | - |
| 3 | F | F | T | F | - |
| 4 | T | F | F | T | A * !B * !C |
| 5 | T | F | F | T | the same as 4 |
| 6 | T | F | T | F | - |
| 8 | F | T | F | T | !A * B * !C |
| 9 | F | T | T | T | !A * B * C |
| 10 | F | F | F | F | - |
| 11 | F | T | F | T | the same as 8 |
| 12 | F | T | T | T | the same as 9 |
| 17 | T | T | F | T | A * B * !C |
| 18 | T | T | T | T | A * B * C |
| 23 | F | F | F | F | - |
| 24 | F | F | T | F | - |
A * !B * !C + !A * B * !C + !A * B * C + A * B * !C + A * B * C = = A * !B *
!C + !A * B * (!C + C) + A * B * (!C + C) = = A * !B * !C + !A * B + A * B = =
A * !B * !C + B * (!A + A) = = A * !B * !C + B = = A * !(B + C) + B = =
stable.contains(node) && !(pending.contains(node) || peinding.isForce())
| | pending.contains(node) |
A * B * C + A * !C + B
A * !C {{= A * !B * !C + !A * B * !C + !A * B * C + A * B * !C = A * !C + !A
* B * !C + !A * B * C = A * !C + !A * B =}} A * !B * !C
1 == !A * B + !B A = T B = T
> Node restart behaviour for HA mode
> ----------------------------------
>
> Key: IGNITE-23780
> URL: https://issues.apache.org/jira/browse/IGNITE-23780
> Project: Ignite
> Issue Type: Improvement
> Reporter: Mirza Aliev
> Priority: Major
> Labels: ignite-3
>
> h1. Action table
> || # || stable || pending || in S || in P || in both || action ||
> | 1 | empty | empty | no | no | no | nothing |
> | 2 | empty | exists | no | no | no | nothing |
> | 3 | empty | forced | no | no | no | nothing |
> | 4 | exists | empty | yes | no | no | nothing |
> | 5 | exists | exists | yes | no | no | nothing |
> | 6 | exists | forced | yes | no | no | nothing |
> | 7 | empty | empty | no | no | no | nothing |
> | 8 | empty | exists | no | yes | no | start |
> | 9 | empty | forced | no | yes | no | start |
> | 10 | exists | empty | no | no | no | stop |
> | 11 | exists | exists | no | yes | no | start |
> | 12 | exists | forced | no | yes | no | start |
> | 13 | empty | empty | no | no | no | nothing |
> | 14 | empty | exists | no | no | no | nothing |
> | 15 | empty | forced | no | no | no | nothing |
> | 16 | exists | empty | no | no | no | nothing |
> | 17 | exists | exists | yes | yes | yes | nothing |
> | 18 | exists | forced | yes | yes | yes | nothing |
> | 19 | empty | empty | no | no | no | nothing |
> | 20 | empty | exists | no | no | no | nothing |
> | 21 | empty | forced | no | no | no | nothing |
> | 22 | exists | empty | no | no | no | nothing |
> | 23 | exists | exists | no | no | no | stop |
> | 24 | exists | forced | no | no | no | stop |
> h1. Reasons
> # NIA
> # NIA
> # NIA
> # already should be started
> # already started and in use now
> # -Will be rewritten after force reset => stop- already started and in use now
> # NIA
> # Wasn't started before => start
> # Wasn't started before => start
> #
> # Wasn't started before => start
> # Wasn't started before => start
> # NIA
> # NIA
> # NIA
> # NIA
> # already should be started
> # already should be started
> # NIA
> # NIA
> # NIA
> #
> #
> h1. Abbreviations
> * *NS*: Node start
> * *NIA*: Not in assignments
> h1. Improved table
> || # || stable || pending || in stable || in pending || in both || on restart
> ||
> | 1 | empty | empty | no | no | no | nothing |
> | 2 | empty | exists | no | no | no | nothing |
> | 3 | empty | forced | no | no | no | nothing |
> | 4 | exists | empty | yes | no | no | start |
> | 5 | exists | exists | yes | no | no | start |
> | 6 | exists | forced | yes | no | no | nothing |
> | 7 | empty | exists | no | yes | no | start |
> | 8 | empty | forced | no | yes | no | start |
> | 9 | exists | empty | no | no | no | nothing |
> | 10 | exists | exists | no | yes | no | start |
> | 11 | exists | forced | no | yes | no | start |
> | 12 | exists | exists | yes | yes | yes | start |
> | 13 | exists | forced | yes | yes | yes | start |
> | 14 | exists | exists | no | no | no | nothing |
> | 15 | exists | forced | no | no | no | nothing |
> {quote}
> If the node is in a stable, but not in a forced pending, it should not be
> started.
> if ( (stable.contains(node) && !(force && pending.contains(node))) ||
> pending.contains(node) ) \{ // node should be started }
> if (stable.contains(node) && force && !pending.contains(node)) \{ //
> node should not be started }
> !(stable.contains(node) && force && !pending.contains(node)) ==
> !stable.contains(node) || !force || pending.contains(node)
> {quote}
> || # || A=inStable || B=inPending || C=isForce || start? || STMT ||
> | 1 | F | F | F | F | - |
> | 2 | F | F | F | F | - |
> | 3 | F | F | T | F | - |
> | 4 | T | F | F | T | A * !B * !C |
> | 5 | T | F | F | T | the same as 4 |
> | 6 | T | F | T | F | - |
> | 8 | F | T | F | T | !A * B * !C |
> | 9 | F | T | T | T | !A * B * C |
> | 10 | F | F | F | F | - |
> | 11 | F | T | F | T | the same as 8 |
> | 12 | F | T | T | T | the same as 9 |
> | 17 | T | T | F | T | A * B * !C |
> | 18 | T | T | T | T | A * B * C |
> | 23 | F | F | F | F | - |
> | 24 | F | F | T | F | - |
> A * !B * !C + !A * B * !C + !A * B * C + A * B * !C + A * B * C = = A * !B
> * !C + !A * B * (!C + C) + A * B * (!C + C) = = A * !B * !C + !A * B + A * B
> = = A * !B * !C + B * (!A + A) = = A * !B * !C + B = = A * !(B + C) + B = =
> stable.contains(node) && !(pending.contains(node) || peinding.isForce())
> | | pending.contains(node) |
> A * B * C + A * !C + B
> A * !C {{= A * !B * !C + !A * B * !C + !A * B * C + A * B * !C = A * !C +
> !A * B * !C + !A * B * C = A * !C + !A * B =}} A * !B * !C
> 1 == !A * B + !B A = T B = T
--
This message was sent by Atlassian Jira
(v8.20.10#820010)