YARN-8365.  Set DNS query type according to client request.
            Contributed by Shane Kumpf

(cherry picked from commit 5889a3c0f931ebe1a9e6b8023c0557922b7d9e49)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9dd79d1d
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9dd79d1d
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9dd79d1d

Branch: refs/remotes/origin/branch-3.1
Commit: 9dd79d1dcd46a96ada8ea560d20334b2f7a6b247
Parents: 93d6ed8
Author: Eric Yang <ey...@apache.org>
Authored: Mon Jun 4 19:01:17 2018 -0400
Committer: Eric Yang <ey...@apache.org>
Committed: Mon Jun 4 19:03:07 2018 -0400

----------------------------------------------------------------------
 .../org/apache/hadoop/registry/server/dns/RegistryDNS.java  | 9 +++++----
 .../apache/hadoop/registry/server/dns/TestRegistryDNS.java  | 9 ++-------
 2 files changed, 7 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/9dd79d1d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/dns/RegistryDNS.java
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/dns/RegistryDNS.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/dns/RegistryDNS.java
index c322023..5e994fb 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/dns/RegistryDNS.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/main/java/org/apache/hadoop/registry/server/dns/RegistryDNS.java
@@ -1106,7 +1106,7 @@ public class RegistryDNS extends AbstractService 
implements DNSOperations,
     LOG.debug("calling addAnswer");
     byte rcode = addAnswer(response, name, type, dclass, 0, flags);
     if (rcode != Rcode.NOERROR) {
-      rcode = remoteLookup(response, name, 0);
+      rcode = remoteLookup(response, name, type, 0);
       response.getHeader().setRcode(rcode);
     }
     addAdditional(response, flags);
@@ -1124,9 +1124,10 @@ public class RegistryDNS extends AbstractService 
implements DNSOperations,
   /**
    * Lookup record from upstream DNS servers.
    */
-  private byte remoteLookup(Message response, Name name, int iterations) {
+  private byte remoteLookup(Message response, Name name, int type,
+      int iterations) {
     // Forward lookup to primary DNS servers
-    Record[] answers = getRecords(name, Type.ANY);
+    Record[] answers = getRecords(name, type);
     try {
       for (Record r : answers) {
         if (r.getType() == Type.SOA) {
@@ -1137,7 +1138,7 @@ public class RegistryDNS extends AbstractService 
implements DNSOperations,
         if (r.getType() == Type.CNAME) {
           Name cname = ((CNAMERecord) r).getAlias();
           if (iterations < 6) {
-            remoteLookup(response, cname, iterations + 1);
+            remoteLookup(response, cname, Type.CNAME, iterations + 1);
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/9dd79d1d/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/test/java/org/apache/hadoop/registry/server/dns/TestRegistryDNS.java
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/test/java/org/apache/hadoop/registry/server/dns/TestRegistryDNS.java
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/test/java/org/apache/hadoop/registry/server/dns/TestRegistryDNS.java
index 01adc45..6ba58dd 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/test/java/org/apache/hadoop/registry/server/dns/TestRegistryDNS.java
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-registry/src/test/java/org/apache/hadoop/registry/server/dns/TestRegistryDNS.java
@@ -424,13 +424,8 @@ public class TestRegistryDNS extends Assert {
     assertEquals("Questions do not match", query.getQuestion(),
         response.getQuestion());
     Record[] recs = response.getSectionArray(Section.ANSWER);
-    boolean found = false;
-    for (Record r : recs) {
-      if (r.getType()==Type.A) {
-        found = true;
-      }
-    }
-    assertTrue("No A records in answer", found);
+    assertEquals(1, recs.length);
+    assertEquals(recs[0].getType(), type);
     return recs;
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to