Repository: incubator-impala
Updated Branches:
  refs/heads/master 64ffbc4b5 -> 0c874189e


IMPALA-3949: Log the error message in FileSystemUtil.copyToLocal()

To improve supportability, this commit logs the actual error stack trace
that can cause FileSystemUtil.copyToLocal() to fail. Additionaly this
also cleans up FileSystemUtil.isPathReachable() method to throw an
exception on failures rather than returning false and then returning
the error message as a string to callers.

Change-Id: I5664a75aa837951de1d5dcc90e43bd8f313736b8
Reviewed-on: http://gerrit.cloudera.org:8080/4125
Reviewed-by: Bharath Vissapragada <[email protected]>
Tested-by: Internal Jenkins


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

Branch: refs/heads/master
Commit: 6c446b35b951ba27b4a458c23f408379495f85ff
Parents: 64ffbc4
Author: Bharath Vissapragada <[email protected]>
Authored: Thu Aug 25 12:45:31 2016 -0700
Committer: Internal Jenkins <[email protected]>
Committed: Tue Sep 13 21:36:28 2016 +0000

----------------------------------------------------------------------
 .../com/cloudera/impala/analysis/HdfsUri.java   |  9 +++++-
 .../impala/catalog/CatalogServiceCatalog.java   |  6 ++--
 .../cloudera/impala/common/FileSystemUtil.java  | 32 +++-----------------
 .../cloudera/impala/util/AvroSchemaUtils.java   |  5 ++-
 4 files changed, 19 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/6c446b35/fe/src/main/java/com/cloudera/impala/analysis/HdfsUri.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/analysis/HdfsUri.java 
b/fe/src/main/java/com/cloudera/impala/analysis/HdfsUri.java
index 77c0369..9fbe467 100644
--- a/fe/src/main/java/com/cloudera/impala/analysis/HdfsUri.java
+++ b/fe/src/main/java/com/cloudera/impala/analysis/HdfsUri.java
@@ -88,8 +88,15 @@ public class HdfsUri {
     Path parentPath = uriPath_.getParent();
     try {
       FileSystem fs = 
uriPath_.getFileSystem(FileSystemUtil.getConfiguration());
+      boolean pathExists = false;
       StringBuilder errorMsg = new StringBuilder();
-      if (!FileSystemUtil.isPathReachable(parentPath, fs, errorMsg)) {
+      try {
+        pathExists = fs.exists(parentPath);
+        if (!pathExists) errorMsg.append("Path does not exist.");
+      } catch (Exception e) {
+        errorMsg.append(e.getMessage());
+      }
+      if (!pathExists) {
         analyzer.addWarning(String.format("Path '%s' cannot be reached: %s",
             parentPath, errorMsg.toString()));
       } else if (perm != FsAction.NONE) {

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/6c446b35/fe/src/main/java/com/cloudera/impala/catalog/CatalogServiceCatalog.java
----------------------------------------------------------------------
diff --git 
a/fe/src/main/java/com/cloudera/impala/catalog/CatalogServiceCatalog.java 
b/fe/src/main/java/com/cloudera/impala/catalog/CatalogServiceCatalog.java
index f43938b..27d25e1 100644
--- a/fe/src/main/java/com/cloudera/impala/catalog/CatalogServiceCatalog.java
+++ b/fe/src/main/java/com/cloudera/impala/catalog/CatalogServiceCatalog.java
@@ -458,11 +458,13 @@ public class CatalogServiceCatalog extends Catalog {
     try {
       Path localJarPath = new Path(LOCAL_LIBRARY_PATH,
           UUID.randomUUID().toString() + ".jar");
-      if (!FileSystemUtil.copyToLocal(new Path(jarUri), localJarPath)) {
+      try {
+        FileSystemUtil.copyToLocal(new Path(jarUri), localJarPath);
+      } catch (IOException e) {
         String errorMsg = "Error loading Java function: " + db + "." +
             function.getFunctionName() + ". Couldn't copy " + jarUri +
             " to local path: " + localJarPath.toString();
-        LOG.error(errorMsg);
+        LOG.error(errorMsg, e);
         throw new ImpalaRuntimeException(errorMsg);
       }
       URL[] classLoaderUrls = new URL[] {new URL(localJarPath.toString())};

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/6c446b35/fe/src/main/java/com/cloudera/impala/common/FileSystemUtil.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/common/FileSystemUtil.java 
b/fe/src/main/java/com/cloudera/impala/common/FileSystemUtil.java
index b0771e0..2239853 100644
--- a/fe/src/main/java/com/cloudera/impala/common/FileSystemUtil.java
+++ b/fe/src/main/java/com/cloudera/impala/common/FileSystemUtil.java
@@ -371,34 +371,12 @@ public class FileSystemUtil {
   }
 
   /**
-   * Copies the source file to a destination path on the local filesystem and 
returns true
-   * if successful.
+   * Copies the source file to a destination path on the local filesystem.
+   * Throws IOException on failure.
    */
-   public static boolean copyToLocal(Path source, Path dest) {
-     try {
-       FileSystem fs = source.getFileSystem(CONF);
-       fs.copyToLocalFile(source, dest);
-     } catch (IOException e) {
-       return false;
-     }
-     return true;
-   }
-
-  /**
-   * Return true if the path can be reached, false for all other cases
-   * File doesn't exist, cannot access the FileSystem, etc.
-   */
-  public static boolean isPathReachable(Path path, FileSystem fs, 
StringBuilder error_msg) {
-    try {
-      if (fs.exists(path)) {
-        return true;
-      } else {
-        error_msg.append("Path does not exist.");
-      }
-    } catch (Exception e) {
-      error_msg.append(e.getMessage());
-    }
-    return false;
+  public static void copyToLocal(Path source, Path dest) throws IOException {
+    FileSystem fs = source.getFileSystem(CONF);
+    fs.copyToLocalFile(source, dest);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/6c446b35/fe/src/main/java/com/cloudera/impala/util/AvroSchemaUtils.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/util/AvroSchemaUtils.java 
b/fe/src/main/java/com/cloudera/impala/util/AvroSchemaUtils.java
index b1e7910..f86c347 100644
--- a/fe/src/main/java/com/cloudera/impala/util/AvroSchemaUtils.java
+++ b/fe/src/main/java/com/cloudera/impala/util/AvroSchemaUtils.java
@@ -83,10 +83,9 @@ public class AvroSchemaUtils {
         Path path = new Path(url);
         FileSystem fs = null;
         fs = path.getFileSystem(FileSystemUtil.getConfiguration());
-        StringBuilder errorMsg = new StringBuilder();
-        if (!FileSystemUtil.isPathReachable(path, fs, errorMsg)) {
+        if (!fs.exists(path)) {
           throw new AnalysisException(String.format(
-              "Invalid avro.schema.url: %s. %s", url, errorMsg));
+              "Invalid avro.schema.url: %s. Path does not exist.", url));
         }
         schema = FileSystemUtil.readFile(path);
       }

Reply via email to