You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2015/05/27 09:35:29 UTC

hive git commit: HIVE-10768 : In QTestGenTask.execute() we should not throw an exception right away if we are unable to clean any old files (Hari Subramaniyan, reviewed by Xuefu Zhang)

Repository: hive
Updated Branches:
  refs/heads/master 5b423a87f -> f078dd427


HIVE-10768 : In QTestGenTask.execute() we should not throw an exception right away if we are unable to clean any old files (Hari Subramaniyan, reviewed by Xuefu Zhang)


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

Branch: refs/heads/master
Commit: f078dd4272ae0e27bb118cff5a76b850045e1673
Parents: 5b423a8
Author: Hari Subramaniyan <ha...@apache.org>
Authored: Wed May 27 00:35:19 2015 -0700
Committer: Hari Subramaniyan <ha...@apache.org>
Committed: Wed May 27 00:35:19 2015 -0700

----------------------------------------------------------------------
 .../apache/hadoop/hive/ant/QTestGenTask.java    | 35 ++++++++++++++++----
 1 file changed, 28 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/f078dd42/ant/src/org/apache/hadoop/hive/ant/QTestGenTask.java
----------------------------------------------------------------------
diff --git a/ant/src/org/apache/hadoop/hive/ant/QTestGenTask.java b/ant/src/org/apache/hadoop/hive/ant/QTestGenTask.java
index b3315c7..7fffe13 100644
--- a/ant/src/org/apache/hadoop/hive/ant/QTestGenTask.java
+++ b/ant/src/org/apache/hadoop/hive/ant/QTestGenTask.java
@@ -35,6 +35,7 @@ import java.util.HashMap;
 
 import com.google.common.base.Splitter;
 import com.google.common.collect.Sets;
+
 import org.apache.commons.lang.StringUtils;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Task;
@@ -312,6 +313,23 @@ public class QTestGenTask extends Task {
     return queryFileRegex;
   }
 
+  private String createAlternativeFile(File file) throws Exception {
+    String fileParentDir = file.getParent();
+    String fileName = file.getName();
+    int dotIndex = fileName.lastIndexOf('.');
+    String fileNameWithoutExtension = dotIndex == -1 ? fileName : fileName.substring(0, dotIndex);
+    String fileNameExtension = dotIndex == -1 ? "" : fileName.substring(dotIndex);
+
+    // If prefix length is < 3, File.createTempFile() will throw an IllegalArgumentException.
+    // We need to avoid this case.
+    if (fileNameWithoutExtension.length() < 3) {
+      fileNameWithoutExtension = fileNameWithoutExtension + "_tmp";
+    }
+    File alternativeFile = File.createTempFile(fileNameWithoutExtension, fileNameExtension,
+      new File(fileParentDir));
+    return alternativeFile.getCanonicalPath();
+  }
+
   public void execute() throws BuildException {
     if (getTemplatePath().equals("")) {
       throw new BuildException("No templatePath attribute specified");
@@ -436,8 +454,10 @@ public class QTestGenTask extends Task {
       if (logFile != null) {
         File lf = new File(logFile);
         if (lf.exists()) {
+          System.out.println("Log file already exists: " + lf.getCanonicalPath());
           if (!lf.delete()) {
-            throw new Exception("Could not delete log file " + lf.getCanonicalPath());
+            System.out.println("Could not delete log file " + lf.getCanonicalPath());
+            logFile = createAlternativeFile(lf);
           }
         }
 
@@ -458,16 +478,17 @@ public class QTestGenTask extends Task {
       String qFileNamesFile = qFileNames.toURI().getPath();
 
       if (qFileNames.exists()) {
+        System.out.println("Query file names containing file already exists: " + qFileNamesFile);
         if (!qFileNames.delete()) {
-          throw new Exception("Could not delete old query file names containing file " +
+          System.out.println("Could not delete query file names containing file " +
+            qFileNames.getCanonicalPath());
+          qFileNamesFile = createAlternativeFile(qFileNames);
+        } else if (!qFileNames.createNewFile()) {
+          System.out.println("Could not create query file names containing file " +
             qFileNamesFile);
+          qFileNamesFile = createAlternativeFile(qFileNames);
         }
       }
-      if (!qFileNames.createNewFile()) {
-        throw new Exception("Could not create query file names containing file " +
-          qFileNamesFile);
-      }
-
       FileWriter fw = new FileWriter(qFileNames.getCanonicalFile());
       BufferedWriter bw = new BufferedWriter(fw);