You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by ja...@apache.org on 2017/05/07 18:13:01 UTC

[12/17] eagle git commit: [EAGLE-1009] Fix `return` inside `finally` block may result in losing exception

[EAGLE-1009] Fix `return` inside `finally` block may result in losing exception

`return` inside `finally` block will result in losing exception:

* If the finally block completes abruptly for reason S, then the try statement completes abruptly for reason S (and the throw of value V is discarded and forgotten).
* If the finally block completes abruptly for reason S, then the try statement completes abruptly for reason S (and reason R is discarded).

reference:
http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.20.2
https://issues.apache.org/jira/secure/attachment/12863778/FinallyTest.java

(https://issues.apache.org/jira/browse/EAGLE-1009)

Author: asdf2014 <15...@qq.com>

Closes #920 from asdf2014/return_inside_finally.


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

Branch: refs/heads/branch-0.5
Commit: e3afe444f59d3117fbe9d778120a47c411e2aa99
Parents: b4d0711
Author: asdf2014 <15...@qq.com>
Authored: Wed Apr 19 17:00:32 2017 +0800
Committer: Zhao, Qingwen <qi...@apache.org>
Committed: Wed Apr 19 17:00:32 2017 +0800

----------------------------------------------------------------------
 .../apache/eagle/jpm/analyzer/util/Utils.java   | 53 +++++++++++---------
 .../security/hdfs/MAPRFSAuditLogParser.java     | 20 +++-----
 2 files changed, 36 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/eagle/blob/e3afe444/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/util/Utils.java
----------------------------------------------------------------------
diff --git a/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/util/Utils.java b/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/util/Utils.java
index 9c1a2c7..42a5cac 100644
--- a/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/util/Utils.java
+++ b/eagle-jpm/eagle-jpm-analyzer/src/main/java/org/apache/eagle/jpm/analyzer/util/Utils.java
@@ -26,7 +26,6 @@ import org.apache.eagle.jpm.util.resourcefetch.connection.InputStreamUtils;
 import org.codehaus.jackson.JsonParser;
 import org.codehaus.jackson.map.ObjectMapper;
 import org.codehaus.jackson.type.TypeReference;
-import org.jetbrains.annotations.NotNull;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -46,55 +45,59 @@ public class Utils {
     public static List<JobMetaEntity> getJobMeta(Config config, String siteId, String jobDefId) {
         List<JobMetaEntity> result = new ArrayList<>();
         String url = "http://"
-                + config.getString(Constants.HOST_PATH)
-                + ":"
-                + config.getInt(Constants.PORT_PATH)
-                + config.getString(Constants.CONTEXT_PATH)
-                + Constants.ANALYZER_PATH
-                + Constants.JOB_META_ROOT_PATH
-                + "/"
-                + siteId
-                + "/"
-                + URLEncoder.encode(jobDefId);
+            + config.getString(Constants.HOST_PATH)
+            + ":"
+            + config.getInt(Constants.PORT_PATH)
+            + config.getString(Constants.CONTEXT_PATH)
+            + Constants.ANALYZER_PATH
+            + Constants.JOB_META_ROOT_PATH
+            + "/"
+            + siteId
+            + "/"
+            + URLEncoder.encode(jobDefId);
 
         InputStream is = null;
         try {
             is = InputStreamUtils.getInputStream(url, null, org.apache.eagle.jpm.util.Constants.CompressionType.NONE);
             LOG.info("get job meta from {}", url);
-            result = ((RESTResponse<List<JobMetaEntity>>)OBJ_MAPPER.readValue(is, new TypeReference<RESTResponse<List<JobMetaEntity>>>(){})).getData();
+            result = ((RESTResponse<List<JobMetaEntity>>) OBJ_MAPPER.readValue(is,
+                new TypeReference<RESTResponse<List<JobMetaEntity>>>() {
+                })).getData();
         } catch (Exception e) {
             LOG.warn("failed to get job meta from {}", url, e);
         } finally {
             org.apache.eagle.jpm.util.Utils.closeInputStream(is);
-            return result;
         }
+        return result;
     }
 
     public static List<UserEmailEntity> getUserMail(Config config, String siteId, String userId) {
         List<UserEmailEntity> result = new ArrayList<>();
         String url = "http://"
-                + config.getString(Constants.HOST_PATH)
-                + ":"
-                + config.getInt(Constants.PORT_PATH)
-                + config.getString(Constants.CONTEXT_PATH)
-                + Constants.ANALYZER_PATH
-                + Constants.USER_META_ROOT_PATH
-                + "/"
-                + siteId
-                + "/"
-                + URLEncoder.encode(userId);
+            + config.getString(Constants.HOST_PATH)
+            + ":"
+            + config.getInt(Constants.PORT_PATH)
+            + config.getString(Constants.CONTEXT_PATH)
+            + Constants.ANALYZER_PATH
+            + Constants.USER_META_ROOT_PATH
+            + "/"
+            + siteId
+            + "/"
+            + URLEncoder.encode(userId);
 
         InputStream is = null;
         try {
             is = InputStreamUtils.getInputStream(url, null, org.apache.eagle.jpm.util.Constants.CompressionType.NONE);
             LOG.info("get user meta from {}", url);
-            result = ((RESTResponse<List<UserEmailEntity>>)OBJ_MAPPER.readValue(is, new TypeReference<RESTResponse<List<UserEmailEntity>>>(){})).getData();
+            result = ((RESTResponse<List<UserEmailEntity>>) OBJ_MAPPER.readValue(is,
+                new TypeReference<RESTResponse<List<UserEmailEntity>>>() {
+                })).getData();
         } catch (Exception e) {
             LOG.warn("failed to get user meta from {}", url, e);
         } finally {
             org.apache.eagle.jpm.util.Utils.closeInputStream(is);
-            return result;
         }
+        return result;
     }
 
     public static <K, V extends Comparable<? super V>> List<Map.Entry<K, V>> sortByValue(Map<K, V> map) {

http://git-wip-us.apache.org/repos/asf/eagle/blob/e3afe444/eagle-security/eagle-security-common/src/main/java/org/apache/eagle/security/hdfs/MAPRFSAuditLogParser.java
----------------------------------------------------------------------
diff --git a/eagle-security/eagle-security-common/src/main/java/org/apache/eagle/security/hdfs/MAPRFSAuditLogParser.java b/eagle-security/eagle-security-common/src/main/java/org/apache/eagle/security/hdfs/MAPRFSAuditLogParser.java
index 1dd2c78..30804a3 100644
--- a/eagle-security/eagle-security-common/src/main/java/org/apache/eagle/security/hdfs/MAPRFSAuditLogParser.java
+++ b/eagle-security/eagle-security-common/src/main/java/org/apache/eagle/security/hdfs/MAPRFSAuditLogParser.java
@@ -22,19 +22,16 @@ import org.codehaus.jettison.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.text.ParseException;
-
-
 public final class MAPRFSAuditLogParser {
     private final static Logger LOG = LoggerFactory.getLogger(MAPRFSAuditLogParser.class);
 
-    public MAPRFSAuditLogParser(){
+    public MAPRFSAuditLogParser() {
     }
 
     public MAPRFSAuditLogObject parse(String log) throws JSONException {
         JSONObject jsonObject = new JSONObject(log);
         MAPRFSAuditLogObject entity = new MAPRFSAuditLogObject();
-        try{
+        try {
             String timestamp = jsonObject.getJSONObject("timestamp").getString("$date");
             String cmd = jsonObject.getString("operation");
             String user = jsonObject.getString("uid");
@@ -43,15 +40,15 @@ public final class MAPRFSAuditLogParser {
             String volumeID = jsonObject.getString("volumeId");
             String src;
             String dst;
-            if(jsonObject.has("srcFid")){
+            if (jsonObject.has("srcFid")) {
                 src = jsonObject.getString("srcFid");
-            }else{
+            } else {
                 src = "null";
             }
 
-            if(jsonObject.has("dstFid")){
+            if (jsonObject.has("dstFid")) {
                 dst = jsonObject.getString("dstFid");
-            }else{
+            } else {
                 dst = "null";
             }
             entity.user = user;
@@ -62,10 +59,9 @@ public final class MAPRFSAuditLogParser {
             entity.status = status;
             entity.volume = volumeID;
             entity.timestamp = DateTimeUtil.maprhumanDateToMilliseconds(timestamp);
-        } catch (Exception e){
+        } catch (Exception e) {
             LOG.error("Failed to parse mapr audit log message", e);
-        } finally {
-            return entity;
         }
+        return entity;
     }
 }