[
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.
> 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]