Sergey Chugunov created IGNITE-29282:
----------------------------------------
Summary: Control utility: add --safe-to-stop-sets command to
compute groups of nodes that can be stopped simultaneously without data loss
Key: IGNITE-29282
URL: https://issues.apache.org/jira/browse/IGNITE-29282
Project: Ignite
Issue Type: New Feature
Reporter: Sergey Chugunov
Assignee: Sergey Chugunov
h3. Motivation
If cluster maintenance operation requires stopping of nodes, the nodes are
restarted one by one, because stopping an arbitrary group may leave partitions
without a complete copy and cause data loss. Deciding which nodes may go down
together requires manual analysis of baseline, affinity and partition loss
policies.
Such a command removes that analysis and allows maintenance in batches instead
of one node at a time, making upgrades and other planned works significantly
faster while still guaranteeing no data loss.
h3. Goal
Add a read-only informational command to the control utility:
control.sh --safe-to-stop-sets
It computes and prints groups of server nodes that may be stopped simultaneously
without losing data, i.e. the required number of copies of every partition
remains
on the nodes that keep running.
h3. Proposed behaviour
* Regular management command Control Utility API.
* Read-only and advisory: no baseline, cache or cluster state changes; the
operator or
a script decides how to use the result.
* Clear message when no safe set exists (only single-node groups are safe), so
scripts
can react on the exit code.
* Must handle caches with different backup counts and partition loss policies,
nodes
not in the baseline, offline nodes, and clusters with and without native
persistence.
h3. Out of scope
* Actually stopping nodes and orchestrating the maintenance procedure (possible
follow-up).
* The precise algorithm and formal definition of a "safe" set — subject of a
separate
design/spec task; this ticket fixes the UX, the command contract and
integration points.
h3. Acceptance criteria
* --safe-to-stop-sets returns a valid result on a typical multi-node cluster
with
backups > 0 and a clear message when no safe set exists.
* Command is discoverable via --help; --host/--port/--user/--password/SSL
options work.
* Tests: unit tests for argument parsing plus integration tests with and without
persistence and with baseline auto-adjust on/off.
* Documentation: command reference updated.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)