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

Reply via email to