diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index ed4bb945d4..dc9ad36440 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -292,6 +292,9 @@ Release 0.23.1 - Unreleased HADOOP-7981. Improve documentation for org.apache.hadoop.io.compress. Decompressor.getRemaining (Jonathan Eagles via mahadev) + HADOOP-7997. SequenceFile.createWriter(...createParent...) no + longer works on existing file. (Gregory Chanan via eli) + Release 0.23.0 - 2011-11-01 INCOMPATIBLE CHANGES diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/SequenceFile.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/SequenceFile.java index a64bd1bf9e..476eaeb14b 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/SequenceFile.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/SequenceFile.java @@ -467,7 +467,7 @@ public static Writer createWriter(Configuration conf, Writer.Option... opts Metadata metadata) throws IOException { return createWriter(FileContext.getFileContext(fs.getUri(), conf), conf, name, keyClass, valClass, compressionType, codec, - metadata, EnumSet.of(CreateFlag.CREATE), + metadata, EnumSet.of(CreateFlag.CREATE,CreateFlag.OVERWRITE), CreateOpts.bufferSize(bufferSize), createParent ? CreateOpts.createParent() : CreateOpts.donotCreateParent(), diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestSequenceFile.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestSequenceFile.java index 18bc8df651..58998be8e6 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestSequenceFile.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/TestSequenceFile.java @@ -517,6 +517,23 @@ protected FSDataInputStream openFile(FileSystem fs, Path file, int bufferSize, l assertTrue("InputStream for " + path + " should have been closed.", openedFile[0].isClosed()); } + /** + * Test that makes sure createWriter succeeds on a file that was + * already created + * @throws IOException + */ + public void testCreateWriterOnExistingFile() throws IOException { + Configuration conf = new Configuration(); + FileSystem fs = FileSystem.getLocal(conf); + Path name = new Path(new Path(System.getProperty("test.build.data","."), + "createWriterOnExistingFile") , "file"); + + fs.create(name); + SequenceFile.createWriter(fs, conf, name, RandomDatum.class, + RandomDatum.class, 512, (short) 1, 4096, false, + CompressionType.NONE, null, new Metadata()); + } + public void testRecursiveSeqFileCreate() throws IOException { Configuration conf = new Configuration(); FileSystem fs = FileSystem.getLocal(conf);