FALCON-885 RequestID is coming as null for all instance API calls. Contributed 
by Venkatesh Seetharam


Project: http://git-wip-us.apache.org/repos/asf/incubator-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-falcon/commit/fc3094a8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-falcon/tree/fc3094a8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-falcon/diff/fc3094a8

Branch: refs/heads/master
Commit: fc3094a8bed22d3b28609d5c1d69cc85d9e16034
Parents: ff7b5a7
Author: Venkatesh Seetharam <venkat...@apache.org>
Authored: Thu Nov 13 18:15:48 2014 -0800
Committer: Venkatesh Seetharam <venkat...@apache.org>
Committed: Thu Nov 13 18:15:48 2014 -0800

----------------------------------------------------------------------
 CHANGES.txt                                      |  3 +++
 .../org/apache/falcon/resource/APIResult.java    | 10 +---------
 .../falcon/security/FalconAuditFilter.java       | 19 +++++++++++--------
 .../security/FalconAuthorizationFilter.java      |  2 ++
 .../java/org/apache/falcon/util/Servlets.java    |  2 ++
 5 files changed, 19 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/fc3094a8/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 9bd7d4d..443eb65 100755
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -144,6 +144,9 @@ Trunk (Unreleased)
   OPTIMIZATIONS
 
   BUG FIXES
+   FALCON-885 RequestID is coming as null for all instance API calls
+   (Venkatesh Seetharam)
+
    FALCON-880 Oozie Java actions for hive tables fail in secure mode
    (Venkatesh Seetharam)
 

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/fc3094a8/client/src/main/java/org/apache/falcon/resource/APIResult.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/falcon/resource/APIResult.java 
b/client/src/main/java/org/apache/falcon/resource/APIResult.java
index 3b89040..e67eb3a 100644
--- a/client/src/main/java/org/apache/falcon/resource/APIResult.java
+++ b/client/src/main/java/org/apache/falcon/resource/APIResult.java
@@ -18,8 +18,6 @@
 
 package org.apache.falcon.resource;
 
-import org.apache.log4j.NDC;
-
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
@@ -27,7 +25,6 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 import java.io.StringWriter;
-import java.util.UUID;
 
 /**
  * APIResult is the output returned by all the APIs; status-SUCCEEDED or FAILED
@@ -65,12 +62,7 @@ public class APIResult {
         super();
         this.status = status;
         this.message = message;
-        requestId = NDC.peek();
-        try {
-            UUID.fromString(requestId);
-        } catch (IllegalArgumentException e) {
-            requestId = null;
-        }
+        requestId = Thread.currentThread().getName();
     }
 
     protected APIResult() {

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/fc3094a8/prism/src/main/java/org/apache/falcon/security/FalconAuditFilter.java
----------------------------------------------------------------------
diff --git 
a/prism/src/main/java/org/apache/falcon/security/FalconAuditFilter.java 
b/prism/src/main/java/org/apache/falcon/security/FalconAuditFilter.java
index c1e54b8..7d40b6f 100644
--- a/prism/src/main/java/org/apache/falcon/security/FalconAuditFilter.java
+++ b/prism/src/main/java/org/apache/falcon/security/FalconAuditFilter.java
@@ -21,7 +21,6 @@ package org.apache.falcon.security;
 import org.apache.falcon.aspect.GenericAlert;
 import org.apache.falcon.entity.v0.SchemaHelper;
 import org.apache.falcon.util.Servlets;
-import org.apache.log4j.NDC;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -45,8 +44,6 @@ public class FalconAuditFilter implements Filter {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(FalconAuditFilter.class);
 
-    public static final String REQUEST_ID = "requestId";
-
     @Override
     public void init(FilterConfig filterConfig) throws ServletException {
         LOG.info("FalconAuditFilter initialization started");
@@ -57,22 +54,28 @@ public class FalconAuditFilter implements Filter {
                          ServletResponse response,
                          FilterChain filterChain) throws IOException, 
ServletException {
         final String requestTimeISO9601 = SchemaHelper.formatDateUTC(new 
Date());
-        // generate a unique id and shove it into NDC
+        final HttpServletRequest httpRequest = (HttpServletRequest) request;
         final String requestId = UUID.randomUUID().toString();
-        NDC.push(requestId);
+        final Thread currentThread = Thread.currentThread();
+        final String oldName = currentThread.getName();
 
         try {
+            currentThread.setName(formatName(oldName, requestId));
             filterChain.doFilter(request, response);
         } finally {
-            recordAudit((HttpServletRequest) request, requestTimeISO9601);
+            recordAudit(httpRequest, requestTimeISO9601);
 
             // put the request id into the response so users can trace logs 
for this request
-            ((HttpServletResponse) response).setHeader(REQUEST_ID, requestId);
-            NDC.pop();
+            ((HttpServletResponse) response).setHeader(Servlets.REQUEST_ID, 
requestId);
             CurrentUser.clear();
+            currentThread.setName(oldName);
         }
     }
 
+    private String formatName(String oldName, String requestId) {
+        return oldName + " - " + requestId;
+    }
+
     private void recordAudit(HttpServletRequest httpRequest, String 
whenISO9601) {
         final String who = getUserFromRequest(httpRequest);
         final String fromHost = httpRequest.getRemoteHost();

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/fc3094a8/prism/src/main/java/org/apache/falcon/security/FalconAuthorizationFilter.java
----------------------------------------------------------------------
diff --git 
a/prism/src/main/java/org/apache/falcon/security/FalconAuthorizationFilter.java 
b/prism/src/main/java/org/apache/falcon/security/FalconAuthorizationFilter.java
index a3b7b9c..fb30507 100644
--- 
a/prism/src/main/java/org/apache/falcon/security/FalconAuthorizationFilter.java
+++ 
b/prism/src/main/java/org/apache/falcon/security/FalconAuthorizationFilter.java
@@ -23,6 +23,7 @@ import org.apache.falcon.entity.EntityNotRegisteredException;
 import org.apache.falcon.entity.EntityUtil;
 import org.apache.falcon.entity.v0.Entity;
 import org.apache.falcon.entity.v0.EntityType;
+import org.apache.falcon.util.Servlets;
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.security.authorize.AuthorizationException;
 import org.codehaus.jettison.json.JSONException;
@@ -165,6 +166,7 @@ public class FalconAuthorizationFilter implements Filter {
             JSONObject response = new JSONObject();
             response.put("errorCode", errorCode);
             response.put("errorMessage", errorMessage);
+            response.put(Servlets.REQUEST_ID, 
Thread.currentThread().getName());
             return response.toString();
         } catch (JSONException e) {
             throw new IOException(e);

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/fc3094a8/prism/src/main/java/org/apache/falcon/util/Servlets.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/util/Servlets.java 
b/prism/src/main/java/org/apache/falcon/util/Servlets.java
index 0df2dda..37766f0 100644
--- a/prism/src/main/java/org/apache/falcon/util/Servlets.java
+++ b/prism/src/main/java/org/apache/falcon/util/Servlets.java
@@ -27,6 +27,8 @@ import javax.servlet.http.HttpServletRequest;
  */
 public final class Servlets {
 
+    public static final String REQUEST_ID = "requestId";
+
     private Servlets() {
         /* singleton */
     }

Reply via email to