[
https://issues.apache.org/jira/browse/HDFS-16831?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17630555#comment-17630555
]
ASF GitHub Bot commented on HDFS-16831:
---------------------------------------
goiri commented on code in PR #5098:
URL: https://github.com/apache/hadoop/pull/5098#discussion_r1016957155
##########
hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/MembershipNamenodeResolver.java:
##########
@@ -189,13 +189,45 @@ private void updateNameNodeState(final String nsId,
}
}
+ private <T extends FederationNamenodeContext> List<T> shuffleObserverNN(
+ List<T> inputNameNodes, boolean listObserversFirst) {
+ if (!listObserversFirst) {
+ return inputNameNodes;
+ }
+ // Get Observers first.
+ List<T> observerList = new ArrayList<>();
+ for (T t : inputNameNodes) {
+ if (t.getState() == OBSERVER) {
+ observerList.add(t);
+ } else {
+ // The inputNameNodes are already sorted, so it can break
Review Comment:
Can we make this assumption?
##########
hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/resolver/MembershipNamenodeResolver.java:
##########
@@ -189,13 +189,45 @@ private void updateNameNodeState(final String nsId,
}
}
+ private <T extends FederationNamenodeContext> List<T> shuffleObserverNN(
Review Comment:
javadoc with purpose and general approach
> [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]