YARN-7393. RegistryDNS doesn't work in tcp channel. Contributed by Eric Yang
This commit is contained in:
parent
d2775fbcca
commit
8ec9e72cc3
|
@ -189,8 +189,7 @@ public class RegistryDNS extends AbstractService implements DNSOperations,
|
||||||
|
|
||||||
LOG.info("Opening TCP and UDP channels on {} port {}", addr, port);
|
LOG.info("Opening TCP and UDP channels on {} port {}", addr, port);
|
||||||
addNIOUDP(addr, port);
|
addNIOUDP(addr, port);
|
||||||
//TODO Fix dns lookup over TCP
|
addNIOTCP(addr, port);
|
||||||
// addNIOTCP(addr, port);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -768,7 +767,7 @@ public class RegistryDNS extends AbstractService implements DNSOperations,
|
||||||
buf.get(in, 0, messageLength);
|
buf.get(in, 0, messageLength);
|
||||||
|
|
||||||
Message query;
|
Message query;
|
||||||
byte[] response = null;
|
byte[] response;
|
||||||
try {
|
try {
|
||||||
query = new Message(in);
|
query = new Message(in);
|
||||||
LOG.info("received TCP query {}", query.getQuestion());
|
LOG.info("received TCP query {}", query.getQuestion());
|
||||||
|
@ -781,10 +780,19 @@ public class RegistryDNS extends AbstractService implements DNSOperations,
|
||||||
}
|
}
|
||||||
|
|
||||||
ByteBuffer out = ByteBuffer.allocate(response.length + 2);
|
ByteBuffer out = ByteBuffer.allocate(response.length + 2);
|
||||||
out.putShort(0, (short) (response.length & 0xffff));
|
out.clear();
|
||||||
out.put(response);
|
byte[] data = new byte[2];
|
||||||
|
|
||||||
|
data[1] = (byte)(response.length & 0xFF);
|
||||||
|
data[0] = (byte)((response.length >> 8) & 0xFF);
|
||||||
|
out.put(data);
|
||||||
|
out.put(response);
|
||||||
|
out.flip();
|
||||||
|
|
||||||
|
while(out.hasRemaining()) {
|
||||||
ch.write(out);
|
ch.write(out);
|
||||||
|
}
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw NetUtils.wrapException(ch.socket().getInetAddress().getHostName(),
|
throw NetUtils.wrapException(ch.socket().getInetAddress().getHostName(),
|
||||||
ch.socket().getPort(),
|
ch.socket().getPort(),
|
||||||
|
@ -836,6 +844,8 @@ public class RegistryDNS extends AbstractService implements DNSOperations,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Thread.sleep(500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
Loading…
Reference in New Issue