bob-barrett commented on a change in pull request #9902:
URL: https://github.com/apache/kafka/pull/9902#discussion_r569992543



##########
File path: clients/src/main/java/org/apache/kafka/clients/ClientUtils.java
##########
@@ -106,8 +106,9 @@ public static ChannelBuilder 
createChannelBuilder(AbstractConfig config, Time ti
                 clientSaslMechanism, time, true, logContext);
     }
 
-    static List<InetAddress> resolve(String host, ClientDnsLookup 
clientDnsLookup) throws UnknownHostException {
-        InetAddress[] addresses = InetAddress.getAllByName(host);
+    static List<InetAddress> resolve(String host, ClientDnsLookup 
clientDnsLookup,
+                                     HostResolver hostResolver) throws 
UnknownHostException {

Review comment:
       @dajac I started making this change, and I don't think I like requiring 
the `HostResolver` to understand the `client.dns.lookup` config. In the same 
way that `MockTime` is only used to mock Java built-in methods, I think the 
`HostResolver` should only be responsible for the DNS resolution (either real 
or mocked), and that `ClientUtils` should be responsible for understanding the 
Kafka application behavior. That way, tests that mock DNS still test the actual 
`ClientDnsLookup` behavior, rather than relying on both the default resolver 
and any mocked resolvers handle it correctly. It also means that if we ever add 
an option for `ClientDnsLookup` or change its behavior, we don't need to 
remember to update all `HostResolver` implementations. 

##########
File path: clients/src/main/java/org/apache/kafka/clients/ClientUtils.java
##########
@@ -106,8 +106,9 @@ public static ChannelBuilder 
createChannelBuilder(AbstractConfig config, Time ti
                 clientSaslMechanism, time, true, logContext);
     }
 
-    static List<InetAddress> resolve(String host, ClientDnsLookup 
clientDnsLookup) throws UnknownHostException {
-        InetAddress[] addresses = InetAddress.getAllByName(host);
+    static List<InetAddress> resolve(String host, ClientDnsLookup 
clientDnsLookup,
+                                     HostResolver hostResolver) throws 
UnknownHostException {

Review comment:
       @dajac I started making this change, but while working on it, I realized 
that I don't think I like requiring the `HostResolver` to understand the 
`client.dns.lookup` config. In the same way that `MockTime` is only used to 
mock Java built-in methods, I think the `HostResolver` should only be 
responsible for the DNS resolution (either real or mocked), and that 
`ClientUtils` should be responsible for understanding the Kafka application 
behavior. That way, tests that mock DNS still test the actual `ClientDnsLookup` 
behavior, rather than relying on both the default resolver and any mocked 
resolvers handle it correctly. It also means that if we ever add an option for 
`ClientDnsLookup` or change its behavior, we don't need to remember to update 
all `HostResolver` implementations. 

##########
File path: clients/src/test/java/org/apache/kafka/clients/NetworkClientTest.java
##########
@@ -81,6 +85,19 @@
     private final NetworkClient clientWithNoExponentialBackoff = 
createNetworkClient(reconnectBackoffMsTest);
     private final NetworkClient clientWithStaticNodes = 
createNetworkClientWithStaticNodes();
     private final NetworkClient clientWithNoVersionDiscovery = 
createNetworkClientWithNoVersionDiscovery();
+    private ArrayList<InetAddress> initialAddresses = new 
ArrayList<>(Arrays.asList(

Review comment:
       Catching the `UnknownHostException` makes it a bit annoying, I threw it 
in a static block to make the compiler happy. Let me know if you think there's 
something neater.

##########
File path: clients/src/test/java/org/apache/kafka/clients/NetworkClientTest.java
##########
@@ -81,6 +85,19 @@
     private final NetworkClient clientWithNoExponentialBackoff = 
createNetworkClient(reconnectBackoffMsTest);
     private final NetworkClient clientWithStaticNodes = 
createNetworkClientWithStaticNodes();
     private final NetworkClient clientWithNoVersionDiscovery = 
createNetworkClientWithNoVersionDiscovery();
+    private ArrayList<InetAddress> initialAddresses = new 
ArrayList<>(Arrays.asList(

Review comment:
       Catching the `UnknownHostException` makes it a bit annoying, I threw it 
in a static block to make the compiler happy. Let me know if you think there's 
something cleaner.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to