You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by si...@apache.org on 2018/04/09 23:01:35 UTC

[bookkeeper] branch master updated: Improve "Failed to resolve network location" logging

This is an automated email from the ASF dual-hosted git repository.

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new 71901bc  Improve "Failed to resolve network location" logging
71901bc is described below

commit 71901bcd8bb27257b8ef574353d6a851ff6e56f7
Author: Sijie Guo <si...@apache.org>
AuthorDate: Mon Apr 9 16:01:23 2018 -0700

    Improve "Failed to resolve network location" logging
    
    Descriptions of the changes in this PR:
    
    *Problem*
    
    Rackware/Region-Aware is using a script based DNS resolver for resolving network topology. If the network topology script is not configured, the DNS resolver will return `null` as network location. It results in using `default-rack` as the network location and log "Failed to resolve network location" for each resolution.
    
    *Solution*
    
    If a script file is not provided, throw a runtime exception. So the rackaware/region-aware placement policy can fallback to use the default-rack resolver. It would avoid the logging flood.
    
    *Result*
    
    Before this change, it will log following statement for each DNS resolution:
    
    "Failed to resolve network location".
    
    After this change, it will only log following statement during initialization:
    
    ```
    INFO  - [Time-limited test:RackawareEnsemblePlacementPolicyImpl313] - Failed to initialize DNS Resolver org.apache.bookkeeper.net.ScriptBasedMapping, used default subnet resolver.
    java.lang.RuntimeException: No network topology script is found when using script based DNS resolver.
    	at org.apache.bookkeeper.net.ScriptBasedMapping$RawScriptBasedMapping.setConf(ScriptBasedMapping.java:150)
    	at org.apache.bookkeeper.net.ScriptBasedMapping.setConf(ScriptBasedMapping.java:122)
    	at org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl.initialize(RackawareEnsemblePlacementPolicyImpl.java:306)
    	at org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl.initialize(RackawareEnsemblePlacementPolicyImpl.java:75)
    	at org.apache.bookkeeper.client.BookKeeper.initializeEnsemblePlacementPolicy(BookKeeper.java:598)
    	at org.apache.bookkeeper.client.BookKeeper.<init>(BookKeeper.java:490)
    ```
    
    Author: Sijie Guo <si...@apache.org>
    
    Reviewers: Yiming Zang <yz...@gmail.com>, Enrico Olivelli <eo...@gmail.com>
    
    This closes #1323 from sijie/improve_dns_resolver_logging
---
 .../src/main/java/org/apache/bookkeeper/net/BookieSocketAddress.java  | 3 ++-
 .../src/main/java/org/apache/bookkeeper/net/ScriptBasedMapping.java   | 4 ++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/net/BookieSocketAddress.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/net/BookieSocketAddress.java
index e7f9804..4e8f324 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/net/BookieSocketAddress.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/net/BookieSocketAddress.java
@@ -81,7 +81,8 @@ public class BookieSocketAddress {
      * Maps the socketAddress to a "local" address.
      */
     public LocalAddress getLocalAddress() {
-        return new LocalAddress(socketAddress.toString());
+        // for local address, we just need "port" to differentiate different addresses.
+        return new LocalAddress("" + port);
     }
 
     // Return the String "serialized" version of this object.
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/net/ScriptBasedMapping.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/net/ScriptBasedMapping.java
index 49f3c9a..8c8350c 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/net/ScriptBasedMapping.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/net/ScriptBasedMapping.java
@@ -145,6 +145,10 @@ public final class ScriptBasedMapping extends CachedDNSToSwitchMapping {
                 scriptName = null;
                 maxArgs = 0;
             }
+
+            if (null == scriptName) {
+                throw new RuntimeException("No network topology script is found when using script based DNS resolver.");
+            }
         }
 
         /**

-- 
To stop receiving notification emails like this one, please contact
sijie@apache.org.