Author: suresh Date: Sat Apr 20 16:57:44 2013 New Revision: 1470194 URL: http://svn.apache.org/r1470194 Log: HDFS-4434. Reverting change r1470089 that merges trunk to HDFS-2802.
Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/CHANGES.txt (contents, props changed) hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/docs/ (props changed) hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/java/ (props changed) hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/winutils/task.c hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/core/ (props changed) hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1470194&r1=1470193&r2=1470194&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/CHANGES.txt (original) +++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/CHANGES.txt Sat Apr 20 16:57:44 2013 @@ -161,10 +161,7 @@ Trunk (Unreleased) HADOOP-9218 Document the Rpc-wrappers used internally (sanjay Radia) - HADOOP-9258 Add stricter tests to FileSystemContractTestBase (stevel) - - HADOOP-9486. Promoted Windows and Shell related utils from YARN to Hadoop - Common. (Chris Nauroth via vinodkv) + HADOOP-9258 Add stricter tests to FileSystemContractTestBase (stevel) BUG FIXES @@ -370,10 +367,6 @@ Trunk (Unreleased) HADOOP-9433 TestLocalFileSystem#testHasFileDescriptor leaks file handle (Chris Nauroth via sanjay) - HADOOP-9488. FileUtil#createJarWithClassPath only substitutes environment - variables from current process environment/does not support overriding - when launching new process (Chris Nauroth via bikas) - OPTIMIZATIONS HADOOP-7761. Improve the performance of raw comparisons. (todd) Propchange: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/CHANGES.txt ------------------------------------------------------------------------------ Reverse-merged /hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt:r1469644-1470045 Propchange: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/docs/ ------------------------------------------------------------------------------ Reverse-merged /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/docs:r1469644-1470045 Propchange: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/java/ ------------------------------------------------------------------------------ Reverse-merged /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java:r1469644-1470045 Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java?rev=1470194&r1=1470193&r2=1470194&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java Sat Apr 20 16:57:44 2013 @@ -1039,17 +1039,15 @@ public class FileUtil { * * @param inputClassPath String input classpath to bundle into the jar manifest * @param pwd Path to working directory to save jar - * @param callerEnv Map<String, String> caller's environment variables to use - * for expansion * @return String absolute path to new jar * @throws IOException if there is an I/O error while writing the jar file */ - public static String createJarWithClassPath(String inputClassPath, Path pwd, - Map<String, String> callerEnv) throws IOException { + public static String createJarWithClassPath(String inputClassPath, Path pwd) + throws IOException { // Replace environment variables, case-insensitive on Windows @SuppressWarnings("unchecked") - Map<String, String> env = Shell.WINDOWS ? new CaseInsensitiveMap(callerEnv) : - callerEnv; + Map<String, String> env = Shell.WINDOWS ? + new CaseInsensitiveMap(System.getenv()) : System.getenv(); String[] classPathEntries = inputClassPath.split(File.pathSeparator); for (int i = 0; i < classPathEntries.length; ++i) { classPathEntries[i] = StringUtils.replaceTokens(classPathEntries[i], @@ -1080,22 +1078,9 @@ public class FileUtil { } } } else { - // Append just this entry - String classPathEntryUrl = new File(classPathEntry).toURI().toURL() - .toExternalForm(); - - // File.toURI only appends trailing '/' if it can determine that it is a - // directory that already exists. (See JavaDocs.) If this entry had a - // trailing '/' specified by the caller, then guarantee that the - // classpath entry in the manifest has a trailing '/', and thus refers to - // a directory instead of a file. This can happen if the caller is - // creating a classpath jar referencing a directory that hasn't been - // created yet, but will definitely be created before running. - if (classPathEntry.endsWith(Path.SEPARATOR) && - !classPathEntryUrl.endsWith(Path.SEPARATOR)) { - classPathEntryUrl = classPathEntryUrl + Path.SEPARATOR; - } - classPathEntryList.add(classPathEntryUrl); + // Append just this jar + classPathEntryList.add(new File(classPathEntry).toURI().toURL() + .toExternalForm()); } } String jarClassPath = StringUtils.join(" ", classPathEntryList); Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java?rev=1470194&r1=1470193&r2=1470194&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java Sat Apr 20 16:57:44 2013 @@ -123,56 +123,6 @@ abstract public class Shell { : new String[] { "ln", "-s", target, link }; } - /** Return a command for determining if process with specified pid is alive. */ - public static String[] getCheckProcessIsAliveCommand(String pid) { - return Shell.WINDOWS ? - new String[] { Shell.WINUTILS, "task", "isAlive", pid } : - new String[] { "kill", "-0", isSetsidAvailable ? "-" + pid : pid }; - } - - /** Return a command to send a signal to a given pid */ - public static String[] getSignalKillCommand(int code, String pid) { - return Shell.WINDOWS ? new String[] { Shell.WINUTILS, "task", "kill", pid } : - new String[] { "kill", "-" + code, isSetsidAvailable ? "-" + pid : pid }; - } - - /** - * Returns a File referencing a script with the given basename, inside the - * given parent directory. The file extension is inferred by platform: ".cmd" - * on Windows, or ".sh" otherwise. - * - * @param parent File parent directory - * @param basename String script file basename - * @return File referencing the script in the directory - */ - public static File appendScriptExtension(File parent, String basename) { - return new File(parent, appendScriptExtension(basename)); - } - - /** - * Returns a script file name with the given basename. The file extension is - * inferred by platform: ".cmd" on Windows, or ".sh" otherwise. - * - * @param basename String script file basename - * @return String script file name - */ - public static String appendScriptExtension(String basename) { - return basename + (WINDOWS ? ".cmd" : ".sh"); - } - - /** - * Returns a command to run the given script. The script interpreter is - * inferred by platform: cmd on Windows or bash otherwise. - * - * @param script File script to run - * @return String[] command to run the script - */ - public static String[] getRunScriptCommand(File script) { - String absolutePath = script.getAbsolutePath(); - return WINDOWS ? new String[] { "cmd", "/c", absolutePath } : - new String[] { "/bin/bash", absolutePath }; - } - /** a Unix command to set permission */ public static final String SET_PERMISSION_COMMAND = "chmod"; /** a Unix command to set owner */ @@ -293,26 +243,6 @@ abstract public class Shell { return winUtilsPath; } - public static final boolean isSetsidAvailable = isSetsidSupported(); - private static boolean isSetsidSupported() { - if (Shell.WINDOWS) { - return false; - } - ShellCommandExecutor shexec = null; - boolean setsidSupported = true; - try { - String[] args = {"setsid", "bash", "-c", "echo $$"}; - shexec = new ShellCommandExecutor(args); - shexec.execute(); - } catch (IOException ioe) { - LOG.warn("setsid is not available on this machine. So not using it."); - setsidSupported = false; - } finally { // handle the exit code - LOG.info("setsid exited with exit code " + shexec.getExitCode()); - } - return setsidSupported; - } - /** Token separator regex used to parse Shell tool outputs */ public static final String TOKEN_SEPARATOR_REGEX = WINDOWS ? "[|\n\r]" : "[ \t\n\r\f]"; Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/winutils/task.c URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/winutils/task.c?rev=1470194&r1=1470193&r2=1470194&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/winutils/task.c (original) +++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/main/winutils/task.c Sat Apr 20 16:57:44 2013 @@ -24,10 +24,6 @@ #define ERROR_TASK_NOT_ALIVE 1 -// This exit code for killed processes is compatible with Unix, where a killed -// process exits with 128 + signal. For SIGKILL, this would be 128 + 9 = 137. -#define KILLED_PROCESS_EXIT_CODE 137 - // List of different task related command line options supported by // winutils. typedef enum TaskCommandOptionType @@ -268,7 +264,7 @@ DWORD killTask(_TCHAR* jobObjName) return err; } - if(TerminateJobObject(jobObject, KILLED_PROCESS_EXIT_CODE) == 0) + if(TerminateJobObject(jobObject, 1) == 0) { return GetLastError(); } Propchange: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/core/ ------------------------------------------------------------------------------ Reverse-merged /hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/core:r1469644-1470045 Modified: hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java?rev=1470194&r1=1470193&r2=1470194&view=diff ============================================================================== --- hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java (original) +++ hadoop/common/branches/HDFS-2802/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java Sat Apr 20 16:57:44 2013 @@ -755,13 +755,11 @@ public class TestFileUtil { // create classpath jar String wildcardPath = tmp.getCanonicalPath() + File.separator + "*"; - String nonExistentSubdir = tmp.getCanonicalPath() + Path.SEPARATOR + "subdir" - + Path.SEPARATOR; List<String> classPaths = Arrays.asList("cp1.jar", "cp2.jar", wildcardPath, - "cp3.jar", nonExistentSubdir); + "cp3.jar"); String inputClassPath = StringUtils.join(File.pathSeparator, classPaths); String classPathJar = FileUtil.createJarWithClassPath(inputClassPath, - new Path(tmp.getCanonicalPath()), System.getenv()); + new Path(tmp.getCanonicalPath())); // verify classpath by reading manifest from jar file JarFile jarFile = null; @@ -776,20 +774,15 @@ public class TestFileUtil { Assert.assertNotNull(classPathAttr); List<String> expectedClassPaths = new ArrayList<String>(); for (String classPath: classPaths) { - if (wildcardPath.equals(classPath)) { + if (!wildcardPath.equals(classPath)) { + expectedClassPaths.add(new File(classPath).toURI().toURL() + .toExternalForm()); + } else { // add wildcard matches for (File wildcardMatch: wildcardMatches) { expectedClassPaths.add(wildcardMatch.toURI().toURL() .toExternalForm()); } - } else if (nonExistentSubdir.equals(classPath)) { - // expect to maintain trailing path separator if present in input, even - // if directory doesn't exist yet - expectedClassPaths.add(new File(classPath).toURI().toURL() - .toExternalForm() + Path.SEPARATOR); - } else { - expectedClassPaths.add(new File(classPath).toURI().toURL() - .toExternalForm()); } } List<String> actualClassPaths = Arrays.asList(classPathAttr.split(" "));