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.