From 0b16ff0fad5ddb7c47e5ab9526a94949b55366ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristinn=20Sigur=C3=B0sson?= Date: Fri, 3 Oct 2014 11:30:38 +0000 Subject: [PATCH] Fix for HER-2074 https://webarchive.jira.com/browse/HER-2074 --- .../deciderules/IpAddressSetDecideRule.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/modules/src/main/java/org/archive/modules/deciderules/IpAddressSetDecideRule.java b/modules/src/main/java/org/archive/modules/deciderules/IpAddressSetDecideRule.java index 8d51fbd5..f416e64f 100644 --- a/modules/src/main/java/org/archive/modules/deciderules/IpAddressSetDecideRule.java +++ b/modules/src/main/java/org/archive/modules/deciderules/IpAddressSetDecideRule.java @@ -5,6 +5,8 @@ import static org.archive.modules.CoreAttributeConstants.A_DNS_SERVER_IP_LABEL; import java.net.InetAddress; import java.util.Collections; import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; import org.archive.modules.CrawlURI; import org.archive.modules.net.CrawlHost; @@ -34,7 +36,8 @@ import org.springframework.beans.factory.annotation.Autowired; public class IpAddressSetDecideRule extends PredicatedDecideRule { -// private static final Logger LOGGER = Logger.getLogger(IpAddressSetDecideRule.class.getCanonicalName()); + private static final Logger logger = Logger.getLogger(IpAddressSetDecideRule.class.getName()); + private static final long serialVersionUID = -3670434739183271441L; private Set ipAddresses; @@ -72,7 +75,7 @@ public class IpAddressSetDecideRule extends PredicatedDecideRule { * from WriterPoolProcessor * * @param curi CrawlURI - * @return String of IP address + * @return String of IP address or null if unable to determine IP address */ protected String getHostAddress(CrawlURI curi) { // special handling for DNS URIs: want address of DNS server @@ -82,14 +85,21 @@ public class IpAddressSetDecideRule extends PredicatedDecideRule { // otherwise, host referenced in URI // TODO:FIXME: have fetcher insert exact IP contacted into curi, // use that rather than inferred by CrawlHost lookup - CrawlHost crlh = getServerCache().getHostFor(curi.getUURI()); - if (crlh == null) { - return null; + String addr = null; + try { + CrawlHost crlh = getServerCache().getHostFor(curi.getUURI()); + if (crlh == null) { + return null; + } + InetAddress inetadd = crlh.getIP(); + if (inetadd == null) { + return null; + } + addr = inetadd.getHostAddress(); + } catch (Exception e) { + // Log error and continue (return null) + logger.log(Level.WARNING, "Error looking up IP for URI "+curi.getURI(), e); } - InetAddress inetadd = crlh.getIP(); - if (inetadd == null) { - return null; - } - return inetadd.getHostAddress(); + return addr; } }