[
https://issues.apache.org/jira/browse/HDFS-16831?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17627965#comment-17627965
]
ASF GitHub Bot commented on HDFS-16831:
---------------------------------------
goiri commented on code in PR #5098:
URL: https://github.com/apache/hadoop/pull/5098#discussion_r1012254353
##########
hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/MembershipNamenodeResolver.java:
##########
@@ -189,13 +190,43 @@ private void updateNameNodeState(final String nsId,
}
}
+ @VisibleForTesting
+ public <T extends FederationNamenodeContext> List<T> shuffleObserverNN(
+ List<T> inputNameNodes, boolean listObserversFirst) {
+ if (!listObserversFirst) {
+ return inputNameNodes;
+ } else {
+ List<T> observerNNList = new ArrayList<>();
+ List<T> activeAndStandbyList = new ArrayList<>();
+ for (T t : inputNameNodes) {
+ if (t.getState() == OBSERVER) {
+ observerNNList.add(t);
+ } else {
+ activeAndStandbyList.add(t);
+ }
+ }
+
+ if (observerNNList.size() <= 1) {
Review Comment:
We could've done this check earlier.
##########
hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/MembershipNamenodeResolver.java:
##########
@@ -189,13 +190,43 @@ private void updateNameNodeState(final String nsId,
}
}
+ @VisibleForTesting
+ public <T extends FederationNamenodeContext> List<T> shuffleObserverNN(
+ List<T> inputNameNodes, boolean listObserversFirst) {
+ if (!listObserversFirst) {
+ return inputNameNodes;
+ } else {
Review Comment:
No ned for elses when we do the return.
> [RBF SBN] GetNamenodesForNameserviceId should shuffle Observer NameNodes
> every time
> -----------------------------------------------------------------------------------
>
> Key: HDFS-16831
> URL: https://issues.apache.org/jira/browse/HDFS-16831
> Project: Hadoop HDFS
> Issue Type: Bug
> Reporter: ZanderXu
> Assignee: ZanderXu
> Priority: Major
> Labels: pull-request-available
>
> The method getNamenodesForNameserviceId in MembershipNamenodeResolver.class
> should shuffle Observer NameNodes every time. The current logic will return
> the cached list and will caused all of read requests are forwarding to the
> first observer namenode.
>
> The related code as bellow:
> {code:java}
> @Override
> public List<? extends FederationNamenodeContext> getNamenodesForNameserviceId(
> final String nsId, boolean listObserversFirst) throws IOException {
> List<? extends FederationNamenodeContext> ret = cacheNS.get(Pair.of(nsId,
> listObserversFirst));
> if (ret != null) {
> return ret;
> }
> ...
> }{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]