-
Notifications
You must be signed in to change notification settings - Fork 336
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix: libpacemaker: Don't shuffle anonymous clone instances
Currently, anonymous clone instances may be shuffled under certain conditions, causing an unnecessary resource downtime when an instance is moved away from its current running node. For example, this can happen when a stopped promotable instance is scheduled to promote and the stickiness is lower than the promotion score (see the promotable-anon-recover-promoted test). Instance 0 gets allocated first and goes to the node that will be promoted, causing it to relocate if it's already running somewhere else. There are also some other corner cases that can trigger shuffling, like the one in the clone-anon-no-shuffle-constraints test. The fix is to wait until all instance allocations are finished, and then to swap allocations to keep as many instances as possible on their current running nodes. This commit also updates several tests that contain unnecessary instance moves. Resolves: RHBZ#1931023 Signed-off-by: Reid Wahl <nrwahl@protonmail.com>
- Loading branch information
Showing
15 changed files
with
573 additions
and
1,270 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,19 @@ | ||
digraph "g" { | ||
"stateful-clone_promote_0" -> "stateful_promote_0 node2" [ style = bold] | ||
"stateful-clone_promote_0" -> "stateful:2_promote_0 node2" [ style = bold] | ||
"stateful-clone_promote_0" [ style=bold color="green" fontcolor="orange"] | ||
"stateful-clone_promoted_0" [ style=bold color="green" fontcolor="orange"] | ||
"stateful-clone_running_0" -> "stateful-clone_promote_0" [ style = bold] | ||
"stateful-clone_running_0" [ style=bold color="green" fontcolor="orange"] | ||
"stateful-clone_start_0" -> "stateful-clone_running_0" [ style = bold] | ||
"stateful-clone_start_0" -> "stateful:2_start_0 node1" [ style = bold] | ||
"stateful-clone_start_0" -> "stateful_start_0 node2" [ style = bold] | ||
"stateful-clone_start_0" -> "stateful:2_start_0 node2" [ style = bold] | ||
"stateful-clone_start_0" [ style=bold color="green" fontcolor="orange"] | ||
"stateful-clone_stop_0" -> "stateful-clone_stopped_0" [ style = bold] | ||
"stateful-clone_stop_0" -> "stateful_stop_0 node1" [ style = bold] | ||
"stateful-clone_stop_0" [ style=bold color="green" fontcolor="orange"] | ||
"stateful-clone_stopped_0" -> "stateful-clone_promote_0" [ style = bold] | ||
"stateful-clone_stopped_0" -> "stateful-clone_start_0" [ style = bold] | ||
"stateful-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] | ||
"stateful:2_monitor_11000 node1" [ style=bold color="green" fontcolor="black"] | ||
"stateful:2_start_0 node1" -> "stateful-clone_running_0" [ style = bold] | ||
"stateful:2_start_0 node1" -> "stateful:2_monitor_11000 node1" [ style = bold] | ||
"stateful:2_start_0 node1" [ style=bold color="green" fontcolor="black"] | ||
"stateful_monitor_10000 node2" [ style=bold color="green" fontcolor="black"] | ||
"stateful:2_monitor_10000 node2" [ style=bold color="green" fontcolor="black"] | ||
"stateful:2_promote_0 node2" -> "stateful-clone_promoted_0" [ style = bold] | ||
"stateful:2_promote_0 node2" -> "stateful:2_monitor_10000 node2" [ style = bold] | ||
"stateful:2_promote_0 node2" [ style=bold color="green" fontcolor="black"] | ||
"stateful:2_start_0 node2" -> "stateful-clone_running_0" [ style = bold] | ||
"stateful:2_start_0 node2" -> "stateful:2_monitor_10000 node2" [ style = bold] | ||
"stateful:2_start_0 node2" -> "stateful:2_promote_0 node2" [ style = bold] | ||
"stateful:2_start_0 node2" [ style=bold color="green" fontcolor="black"] | ||
"stateful_monitor_11000 node3-rem" [ style=bold color="green" fontcolor="black"] | ||
"stateful_promote_0 node2" -> "stateful-clone_promoted_0" [ style = bold] | ||
"stateful_promote_0 node2" -> "stateful_monitor_10000 node2" [ style = bold] | ||
"stateful_promote_0 node2" [ style=bold color="green" fontcolor="black"] | ||
"stateful_start_0 node2" -> "stateful-clone_running_0" [ style = bold] | ||
"stateful_start_0 node2" -> "stateful_monitor_10000 node2" [ style = bold] | ||
"stateful_start_0 node2" -> "stateful_promote_0 node2" [ style = bold] | ||
"stateful_start_0 node2" [ style=bold color="green" fontcolor="black"] | ||
"stateful_stop_0 node1" -> "stateful-clone_stopped_0" [ style = bold] | ||
"stateful_stop_0 node1" -> "stateful_start_0 node2" [ style = bold] | ||
"stateful_stop_0 node1" [ style=bold color="green" fontcolor="black"] | ||
} |
Oops, something went wrong.