Ivan Andika created HDDS-14769:
----------------------------------
Summary: Suggested leader mechanism does not work
Key: HDDS-14769
URL: https://issues.apache.org/jira/browse/HDDS-14769
Project: Apache Ozone
Issue Type: Bug
Reporter: Ivan Andika
When trying to improve testFailoverWithSuggestedLeader to validate whether the
failover proxy actually failover directly to the suggested, I found suggested
leader mechanism does not work (the test does not validate any client failover
behavior). The client-side OMNotLeaderException leaderPeerId and leaderAddress
are null even when the OM throws OMNotLeaderException with non-null
leaderPeerId and leaderAddress.
The issue is that currently RemoteException only supports "Exception(String)"
constructor. See RemoteException#instantiateException used in
RemoteException#unwrapRemoteException
{code:java}
private IOException instantiateException(Class<? extends IOException> cls)
throws Exception {
Constructor<? extends IOException> cn = cls.getConstructor(String.class);
cn.setAccessible(true);
IOException ex = cn.newInstance(this.getMessage());
ex.initCause(this);
return ex;
} {code}
This means the client always receives OMNotLeaderException without the
suggested leader info.
HADOOP-18816 attempted to introduce a way to reconstruct the actual exception
which might be able to support suggested leader mechanism, but it has not moved
forward for a long time.
Alternatively, we can use some kind of regex to get the leader peer ID and
leader address on the leader exception string. However, this can be fragile
unless it's tested.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]