[ 
https://issues.apache.org/jira/browse/HDDS-16284?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aryan Gupta updated HDDS-16284:
-------------------------------
    Description: 
{{ozone admin scm transfer --new-leader-id}} now accepts either SCM UUID 
(raftPeerId) or SCM nodeId.
 However, nodeId-based resolution relies on {{SCMHANodeDetails}} loaded at 
startup.
 When a new SCM is added via {{ozone scm --bootstrap}} and leader SCM is not 
restarted, the new node may exist in Ratis group but not in leader’s in-memory 
{{{}SCMHANodeDetails{}}}. In that case, transfer by nodeId fails, while 
transfer by UUID still works.

Current Behavior
 * UUID/raftPeerId path works for all members present in current Raft group.
 * nodeId path works only for SCMs known in leader’s startup HA metadata/config 
snapshot.
 * For unknown/unresolved IDs, existing {{Target ... not found in group [...]}} 
behavior is preserved.

Expected Behavior
 After SCM membership changes (add/remove), leader should refresh node metadata 
used for nodeId resolution, so nodeId-based transfer works for newly 
bootstrapped SCMs without SCM restart (provided config metadata is available).

Proposed Approach
 # Use {{SCMStateMachine.notifyConfigurationChanged(...)}} as the trigger point 
for membership updates.
 # Introduce/extend a mutable SCM HA peer metadata registry (local + peers) 
used by transfer resolution and related components.
 # On reconfiguration event, reconcile current Raft peers with SCM metadata:
 ** add newly discovered peers,
 ** remove decommissioned peers,
 ** refresh nodeId/address mapping from config (and/or available runtime 
source).
 # Keep backward-compatible fallback:
 ** if nodeId cannot be resolved, pass ID through so existing Ratis error 
remains unchanged.
 # Update dependent components that currently hold startup-only peer maps (e.g. 
snapshot provider paths) to consume refreshed metadata.

Acceptance Criteria
 * After {{{}ozone scm --bootstrap{}}}(without leader restart), leadership 
transfer by {{-new-leader-id <nodeId>}} succeeds for the new SCM when metadata 
is resolvable.
 * Transfer by UUID continues to work unchanged.
 * Unknown ID behavior remains unchanged ({{{}Target ... not found in group 
[...]{}}}).
 * Add/remove peer reconfiguration does not regress existing HA behavior.

  was:
{{ozone admin scm transfer --new-leader-id}} now accepts either SCM UUID 
(raftPeerId) or SCM nodeId.
 However, nodeId-based resolution relies on {{SCMHANodeDetails}} loaded at 
startup.
 When a new SCM is added via {{ozone scm --bootstrap}} and leader SCM is not 
restarted, the new node may exist in Ratis group but not in leader’s in-memory 
{{{}SCMHANodeDetails{}}}. In that case, transfer by nodeId fails, while 
transfer by UUID still works.

Current Behavior
 * UUID/raftPeerId path works for all members present in current Raft group.
 * nodeId path works only for SCMs known in leader’s startup HA metadata/config 
snapshot.
 * For unknown/unresolved IDs, existing {{Target ... not found in group [...]}} 
behavior is preserved.

Expected Behavior
 After SCM membership changes (add/remove), leader should refresh node metadata 
used for nodeId resolution, so nodeId-based transfer works for newly 
bootstrapped SCMs without SCM restart (provided config metadata is available).

Proposed Approach
 # Use {{SCMStateMachine.notifyConfigurationChanged(...)}} as the trigger point 
for membership updates.
 # Introduce/extend a mutable SCM HA peer metadata registry (local + peers) 
used by transfer resolution and related components.
 # On reconfiguration event, reconcile current Raft peers with SCM metadata:
 ** add newly discovered peers,
 ** remove decommissioned peers,
 ** refresh nodeId/address mapping from config (and/or available runtime 
source).
 # Keep backward-compatible fallback:
 ** if nodeId cannot be resolved, pass ID through so existing Ratis error 
remains unchanged.
 # Update dependent components that currently hold startup-only peer maps (e.g. 
snapshot provider paths) to consume refreshed metadata.

Acceptance Criteria
 * After {{ozone scm --bootstrap}} (without leader restart), leadership 
transfer by {{--new-leader-id <nodeId>}} succeeds for the new SCM when metadata 
is resolvable.
 * Transfer by UUID continues to work unchanged.
 * Unknown ID behavior remains unchanged ({{{}Target ... not found in group 
[...]{}}}).
 * Add/remove peer reconfiguration does not regress existing HA behavior.


> Make SCM nodeId -> raftPeerId resolution dynamic on SCM HA reconfiguration
> --------------------------------------------------------------------------
>
>                 Key: HDDS-16284
>                 URL: https://issues.apache.org/jira/browse/HDDS-16284
>             Project: Apache Ozone
>          Issue Type: Improvement
>            Reporter: Aryan Gupta
>            Assignee: Aryan Gupta
>            Priority: Major
>
> {{ozone admin scm transfer --new-leader-id}} now accepts either SCM UUID 
> (raftPeerId) or SCM nodeId.
>  However, nodeId-based resolution relies on {{SCMHANodeDetails}} loaded at 
> startup.
>  When a new SCM is added via {{ozone scm --bootstrap}} and leader SCM is not 
> restarted, the new node may exist in Ratis group but not in leader’s 
> in-memory {{{}SCMHANodeDetails{}}}. In that case, transfer by nodeId fails, 
> while transfer by UUID still works.
> Current Behavior
>  * UUID/raftPeerId path works for all members present in current Raft group.
>  * nodeId path works only for SCMs known in leader’s startup HA 
> metadata/config snapshot.
>  * For unknown/unresolved IDs, existing {{Target ... not found in group 
> [...]}} behavior is preserved.
> Expected Behavior
>  After SCM membership changes (add/remove), leader should refresh node 
> metadata used for nodeId resolution, so nodeId-based transfer works for newly 
> bootstrapped SCMs without SCM restart (provided config metadata is available).
> Proposed Approach
>  # Use {{SCMStateMachine.notifyConfigurationChanged(...)}} as the trigger 
> point for membership updates.
>  # Introduce/extend a mutable SCM HA peer metadata registry (local + peers) 
> used by transfer resolution and related components.
>  # On reconfiguration event, reconcile current Raft peers with SCM metadata:
>  ** add newly discovered peers,
>  ** remove decommissioned peers,
>  ** refresh nodeId/address mapping from config (and/or available runtime 
> source).
>  # Keep backward-compatible fallback:
>  ** if nodeId cannot be resolved, pass ID through so existing Ratis error 
> remains unchanged.
>  # Update dependent components that currently hold startup-only peer maps 
> (e.g. snapshot provider paths) to consume refreshed metadata.
> Acceptance Criteria
>  * After {{{}ozone scm --bootstrap{}}}(without leader restart), leadership 
> transfer by {{-new-leader-id <nodeId>}} succeeds for the new SCM when 
> metadata is resolvable.
>  * Transfer by UUID continues to work unchanged.
>  * Unknown ID behavior remains unchanged ({{{}Target ... not found in group 
> [...]{}}}).
>  * Add/remove peer reconfiguration does not regress existing HA behavior.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to