diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 43a8e48334..855a77fbd6 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -325,9 +325,6 @@ Trunk (Unreleased) HADOOP-9249. hadoop-maven-plugins version-info goal causes build failure when running with Clover. (Chris Nauroth via suresh) - HADOOP-9264. Port change to use Java untar API on Windows from - branch-1-win to trunk. (Chris Nauroth via suresh) - OPTIMIZATIONS HADOOP-7761. Improve the performance of raw comparisons. (todd) diff --git a/hadoop-common-project/hadoop-common/pom.xml b/hadoop-common-project/hadoop-common/pom.xml index 545c0cb5da..e154d4a820 100644 --- a/hadoop-common-project/hadoop-common/pom.xml +++ b/hadoop-common-project/hadoop-common/pom.xml @@ -241,11 +241,6 @@ test-jar test - - org.apache.commons - commons-compress - 1.4 - @@ -386,23 +381,6 @@ - - copy-test-tarballs - process-test-resources - - run - - - - - - - - - - - - pre-site @@ -507,7 +485,6 @@ src/test/all-tests src/test/resources/kdc/ldif/users.ldif src/main/native/src/org/apache/hadoop/io/compress/lz4/lz4.c - src/test/java/org/apache/hadoop/fs/test-untar.tgz diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java index 19c19cd2b6..4593eedb9f 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java @@ -21,12 +21,9 @@ import java.io.*; import java.util.Arrays; import java.util.Enumeration; -import java.util.zip.GZIPInputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; -import org.apache.commons.compress.archivers.tar.TarArchiveEntry; -import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; import org.apache.hadoop.conf.Configuration; @@ -627,28 +624,14 @@ public static void unZip(File inFile, File unzipDir) throws IOException { * @throws IOException */ public static void unTar(File inFile, File untarDir) throws IOException { - if (!untarDir.mkdirs()) { + if (!untarDir.mkdirs()) { if (!untarDir.isDirectory()) { throw new IOException("Mkdirs failed to create " + untarDir); } } + StringBuilder untarCommand = new StringBuilder(); boolean gzipped = inFile.toString().endsWith("gz"); - if(Shell.WINDOWS) { - // Tar is not native to Windows. Use simple Java based implementation for - // tests and simple tar archives - unTarUsingJava(inFile, untarDir, gzipped); - } - else { - // spawn tar utility to untar archive for full fledged unix behavior such - // as resolving symlinks in tar archives - unTarUsingTar(inFile, untarDir, gzipped); - } - } - - private static void unTarUsingTar(File inFile, File untarDir, - boolean gzipped) throws IOException { - StringBuffer untarCommand = new StringBuffer(); if (gzipped) { untarCommand.append(" gzip -dc '"); untarCommand.append(FileUtil.makeShellPath(inFile)); @@ -673,62 +656,7 @@ private static void unTarUsingTar(File inFile, File untarDir, ". Tar process exited with exit code " + exitcode); } } - - private static void unTarUsingJava(File inFile, File untarDir, - boolean gzipped) throws IOException { - InputStream inputStream = null; - if (gzipped) { - inputStream = new BufferedInputStream(new GZIPInputStream( - new FileInputStream(inFile))); - } else { - inputStream = new BufferedInputStream(new FileInputStream(inFile)); - } - TarArchiveInputStream tis = new TarArchiveInputStream(inputStream); - - for (TarArchiveEntry entry = tis.getNextTarEntry(); entry != null;) { - unpackEntries(tis, entry, untarDir); - entry = tis.getNextTarEntry(); - } - } - - private static void unpackEntries(TarArchiveInputStream tis, - TarArchiveEntry entry, File outputDir) throws IOException { - if (entry.isDirectory()) { - File subDir = new File(outputDir, entry.getName()); - if (!subDir.mkdir() && !subDir.isDirectory()) { - throw new IOException("Mkdirs failed to create tar internal dir " - + outputDir); - } - - for (TarArchiveEntry e : entry.getDirectoryEntries()) { - unpackEntries(tis, e, subDir); - } - - return; - } - - File outputFile = new File(outputDir, entry.getName()); - if (!outputDir.exists()) { - if (!outputDir.mkdirs()) { - throw new IOException("Mkdirs failed to create tar internal dir " - + outputDir); - } - } - - int count; - byte data[] = new byte[2048]; - BufferedOutputStream outputStream = new BufferedOutputStream( - new FileOutputStream(outputFile)); - - while ((count = tis.read(data)) != -1) { - outputStream.write(data, 0, count); - } - - outputStream.flush(); - outputStream.close(); - } - /** * Class for creating hardlinks. * Supports Unix, Cygwin, WindXP. diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java index e73c644fb0..a64b45d80f 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java @@ -546,44 +546,4 @@ public void testGetDU() throws IOException { long expected = 2 * (3 + System.getProperty("line.separator").length()); Assert.assertEquals(expected, du); } - - private void doUntarAndVerify(File tarFile, File untarDir) - throws IOException { - if (untarDir.exists() && !FileUtil.fullyDelete(untarDir)) { - throw new IOException("Could not delete directory '" + untarDir + "'"); - } - FileUtil.unTar(tarFile, untarDir); - - String parentDir = untarDir.getCanonicalPath() + Path.SEPARATOR + "name"; - File testFile = new File(parentDir + Path.SEPARATOR + "version"); - Assert.assertTrue(testFile.exists()); - Assert.assertTrue(testFile.length() == 0); - String imageDir = parentDir + Path.SEPARATOR + "image"; - testFile = new File(imageDir + Path.SEPARATOR + "fsimage"); - Assert.assertTrue(testFile.exists()); - Assert.assertTrue(testFile.length() == 157); - String currentDir = parentDir + Path.SEPARATOR + "current"; - testFile = new File(currentDir + Path.SEPARATOR + "fsimage"); - Assert.assertTrue(testFile.exists()); - Assert.assertTrue(testFile.length() == 4331); - testFile = new File(currentDir + Path.SEPARATOR + "edits"); - Assert.assertTrue(testFile.exists()); - Assert.assertTrue(testFile.length() == 1033); - testFile = new File(currentDir + Path.SEPARATOR + "fstime"); - Assert.assertTrue(testFile.exists()); - Assert.assertTrue(testFile.length() == 8); - } - - @Test - public void testUntar() throws IOException { - String tarGzFileName = System.getProperty("test.cache.data", - "build/test/cache") + "/test-untar.tgz"; - String tarFileName = System.getProperty("test.cache.data", - "build/test/cache") + "/test-untar.tar"; - String dataDir = System.getProperty("test.build.data", "build/test/data"); - File untarDir = new File(dataDir, "untarDir"); - - doUntarAndVerify(new File(tarGzFileName), untarDir); - doUntarAndVerify(new File(tarFileName), untarDir); - } } diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/test-untar.tar b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/test-untar.tar deleted file mode 100644 index 949e985c73..0000000000 Binary files a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/test-untar.tar and /dev/null differ diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/test-untar.tgz b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/test-untar.tgz deleted file mode 100644 index 9e9ef40f6f..0000000000 Binary files a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/test-untar.tgz and /dev/null differ