Author: rkanter
Date: Wed Jan 16 17:12:23 2013
New Revision: 1434044

URL: http://svn.apache.org/viewvc?rev=1434044&view=rev
Log:
OOZIE-1171 HostnameFilter should handle hostname resolution failures and 
continue processing (tucu via rkanter)

Modified:
    oozie/trunk/core/src/main/java/org/apache/oozie/servlet/HostnameFilter.java
    
oozie/trunk/core/src/test/java/org/apache/oozie/servlet/TestHostnameFilter.java
    oozie/trunk/release-log.txt

Modified: 
oozie/trunk/core/src/main/java/org/apache/oozie/servlet/HostnameFilter.java
URL: 
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/servlet/HostnameFilter.java?rev=1434044&r1=1434043&r2=1434044&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/servlet/HostnameFilter.java 
(original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/servlet/HostnameFilter.java 
Wed Jan 16 17:12:23 2013
@@ -18,6 +18,8 @@
 
 package org.apache.oozie.servlet;
 
+import org.apache.oozie.util.XLog;
+
 import javax.servlet.Filter;
 import javax.servlet.FilterChain;
 import javax.servlet.FilterConfig;
@@ -31,6 +33,8 @@ import java.net.InetAddress;
  * Filter that resolves the requester hostname.
  */
 public class HostnameFilter implements Filter {
+    private static final XLog LOG = XLog.getLog(HostnameFilter.class);
+
     static final ThreadLocal<String> HOSTNAME_TL = new ThreadLocal<String>();
 
     /**
@@ -62,7 +66,19 @@ public class HostnameFilter implements F
     public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain)
         throws IOException, ServletException {
         try {
-            String hostname = 
InetAddress.getByName(request.getRemoteAddr()).getCanonicalHostName();
+            String hostname;
+            try {
+                String address = request.getRemoteAddr();
+                if (address != null) {
+                    hostname = 
InetAddress.getByName(address).getCanonicalHostName();
+                } else {
+                    LOG.warn("Request remote address is NULL");
+                    hostname = "???";
+                }
+            } catch (Exception ex) {
+                LOG.warn("Request remote address could not be resolved, {0}", 
ex.toString(), ex);
+                hostname = "???";
+            }
             HOSTNAME_TL.set(hostname);
             chain.doFilter(request, response);
         }

Modified: 
oozie/trunk/core/src/test/java/org/apache/oozie/servlet/TestHostnameFilter.java
URL: 
http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/servlet/TestHostnameFilter.java?rev=1434044&r1=1434043&r2=1434044&view=diff
==============================================================================
--- 
oozie/trunk/core/src/test/java/org/apache/oozie/servlet/TestHostnameFilter.java 
(original)
+++ 
oozie/trunk/core/src/test/java/org/apache/oozie/servlet/TestHostnameFilter.java 
Wed Jan 16 17:12:23 2013
@@ -59,4 +59,30 @@ public class TestHostnameFilter extends 
         filter.destroy();
     }
 
+  public void testMissingHostname() throws Exception {
+    ServletRequest request = Mockito.mock(ServletRequest.class);
+    Mockito.when(request.getRemoteAddr()).thenReturn(null);
+
+    ServletResponse response = Mockito.mock(ServletResponse.class);
+
+    final AtomicBoolean invoked = new AtomicBoolean();
+
+    FilterChain chain = new FilterChain() {
+      @Override
+      public void doFilter(ServletRequest servletRequest, ServletResponse 
servletResponse)
+        throws IOException, ServletException {
+        Assert.assertTrue(HostnameFilter.get().contains("???"));
+        invoked.set(true);
+      }
+    };
+
+    Filter filter = new HostnameFilter();
+    filter.init(null);
+    Assert.assertNull(HostnameFilter.get());
+    filter.doFilter(request, response, chain);
+    Assert.assertTrue(invoked.get());
+    Assert.assertNull(HostnameFilter.get());
+    filter.destroy();
+  }
+
 }

Modified: oozie/trunk/release-log.txt
URL: 
http://svn.apache.org/viewvc/oozie/trunk/release-log.txt?rev=1434044&r1=1434043&r2=1434044&view=diff
==============================================================================
--- oozie/trunk/release-log.txt (original)
+++ oozie/trunk/release-log.txt Wed Jan 16 17:12:23 2013
@@ -1,5 +1,6 @@
 -- Oozie 3.4.0 release (trunk - unreleased)
 
+OOZIE-1171 HostnameFilter should handle hostname resolution failures and 
continue processing (tucu via rkanter)
 OOZIE-1053 Oozie Web-console clicking on Bundle's coord jobs does not open 
them up (ryota via mona)
 OOZIE-1166 Print a more helpful message when ProxyUserService is configured 
wrong (rkanter)
 OOZIE-1136 Fix MiniOozie (rkanter)


Reply via email to