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

Mohammadhani Fouladgar updated HDDS-16300:
------------------------------------------
    Description: 
HDDS-13890 made DataNodes refresh their SCM connections without a restart, but 
it only touched the DataNode heartbeat/registration path 
({{{}SCMConnectionManager{}}} + {{{}StateContext{}}} endpoints). The OM reaches 
SCM through a different mechanism: the {{SCMFailoverProxyProvider}} family, 
which loads the SCM list once at startup via 
{{SCMNodeInfo.buildNodeInfo(conf)}} ({{SCMFailoverProxyProviderBase}}) and 
never reloads. The OM does not register {{ozone.scm.nodes}} as reconfigurable, 
and the proxy providers have no reload hook.

Consequence: when a new SCM is added, the OM does not learn about it. While the 
new SCM stays a follower this is harmless -- the OM still reaches the leader 
via the existing configured SCMs. But once leadership moves to the new SCM, the 
OM cannot route to a leader that is not in its static config and requests fail 
(the same failover-to-unconfigured-leader outage as the leadership-transfer 
scenario). So the OM must eventually learn the new SCM -- and the only 
alternative today is an OM restart, which violates the restart-free requirement.

*Proposed change:*
* Register {{ozone.scm.nodes.<svc>}} (and the address keys) as reconfigurable 
on the OM, implemented in the {{SCMFailoverProxyProviderBase}} reload path.
* On reconfiguration, reload the SCM list from config and rebuild the SCM 
failover proxy set (add SCM proxies) -- the client-side counterpart to 
HDDS-13890.

*Acceptance criteria:*
* With the OM running, updating the SCM node config and invoking 
reconfiguration makes it aware of a newly added SCM without a restart.
* After reconfiguration, the OM can reach the new SCM when it becomes leader.
* Covers the SCM proxy providers the OM actually uses: block-location and 
container-location.

  was:
HDDS-13890 made DataNodes refresh their SCM connections without a restart, but 
it only touched the DataNode heartbeat/registration path 
({{{}SCMConnectionManager{}}} + {{{}StateContext{}}} endpoints). The OM reaches 
SCM through a different mechanism: the {{SCMFailoverProxyProvider}} family, 
which loads the SCM list once at startup via 
{{SCMNodeInfo.buildNodeInfo(conf)}} ({{SCMFailoverProxyProviderBase}}) and 
never reloads. The OM does not register {{ozone.scm.nodes}} as reconfigurable, 
and the proxy providers have no reload hook.

Consequence: when a new SCM is added, the OM does not learn about it. While the 
new SCM stays a follower this is harmless -- the OM still reaches the leader 
via the existing configured SCMs. But once leadership moves to the new SCM, the 
OM cannot route to a leader that is not in its static config and requests fail 
(the same failover-to-unconfigured-leader outage as the leadership-transfer 
scenario). So the OM must eventually learn the new SCM -- and the only 
alternative today is an OM restart, which violates the restart-free requirement.

Proposed change:
* Register {{ozone.scm.nodes.<svc>}} (and the address keys) as reconfigurable 
on the OM, implemented in the {{SCMFailoverProxyProviderBase}} reload path.
* On reconfiguration, reload the SCM list from config and rebuild the SCM 
failover proxy set (add SCM proxies) -- the client-side counterpart to 
HDDS-13890.

Acceptance criteria:
* With the OM running, updating the SCM node config and invoking 
reconfiguration makes it aware of a newly added SCM without a restart.
* After reconfiguration, the OM can reach the new SCM when it becomes leader.
* Covers the SCM proxy providers the OM actually uses: block-location and 
container-location.


> Allow the Ozone Manager to dynamically reconfigure its SCM node list 
> (ozone.scm.nodes / ozone.scm.address) without a restart
> ----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HDDS-16300
>                 URL: https://issues.apache.org/jira/browse/HDDS-16300
>             Project: Apache Ozone
>          Issue Type: New Feature
>            Reporter: Mohammadhani Fouladgar
>            Assignee: Mohammadhani Fouladgar
>            Priority: Major
>
> HDDS-13890 made DataNodes refresh their SCM connections without a restart, 
> but it only touched the DataNode heartbeat/registration path 
> ({{{}SCMConnectionManager{}}} + {{{}StateContext{}}} endpoints). The OM 
> reaches SCM through a different mechanism: the {{SCMFailoverProxyProvider}} 
> family, which loads the SCM list once at startup via 
> {{SCMNodeInfo.buildNodeInfo(conf)}} ({{SCMFailoverProxyProviderBase}}) and 
> never reloads. The OM does not register {{ozone.scm.nodes}} as 
> reconfigurable, and the proxy providers have no reload hook.
> Consequence: when a new SCM is added, the OM does not learn about it. While 
> the new SCM stays a follower this is harmless -- the OM still reaches the 
> leader via the existing configured SCMs. But once leadership moves to the new 
> SCM, the OM cannot route to a leader that is not in its static config and 
> requests fail (the same failover-to-unconfigured-leader outage as the 
> leadership-transfer scenario). So the OM must eventually learn the new SCM -- 
> and the only alternative today is an OM restart, which violates the 
> restart-free requirement.
> *Proposed change:*
> * Register {{ozone.scm.nodes.<svc>}} (and the address keys) as reconfigurable 
> on the OM, implemented in the {{SCMFailoverProxyProviderBase}} reload path.
> * On reconfiguration, reload the SCM list from config and rebuild the SCM 
> failover proxy set (add SCM proxies) -- the client-side counterpart to 
> HDDS-13890.
> *Acceptance criteria:*
> * With the OM running, updating the SCM node config and invoking 
> reconfiguration makes it aware of a newly added SCM without a restart.
> * After reconfiguration, the OM can reach the new SCM when it becomes leader.
> * Covers the SCM proxy providers the OM actually uses: block-location and 
> container-location.



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