SequenceFile writer does not properly flush stream with external
DataOutputStream
---------------------------------------------------------------------------------
Key: HADOOP-6339
URL: https://issues.apache.org/jira/browse/HADOOP-6339
Project: Hadoop Common
Issue Type: Bug
Components: io
Affects Versions: 0.20.1
Reporter: Jonathan Hsieh
When using the SequenceFile.createWriter(..,FSDataOutputStream, ...) method to
create a Writer, data is not flushed when the encapsulating SequenceFile is
closed.
Example test case skeleton:
{code}
public void testWhyFail() throws IOException {
// There a was a failure case using :
Configuration conf = ... ;
Path path = new Path("file:///tmp/testfile");
FileSystem hdfs = path.getFileSystem(conf);
// writing
FSDataOutputStream dos = hdfs.create(path);
hdfs.deleteOnExit(path);
// it is specifically with this writer.
Writer writer = SequenceFile.createWriter(conf, dos,
WriteableEventKey.class, WriteableEvent.class,
SequenceFile.CompressionType.NONE, new DefaultCodec());
Writable value = ...;
Writable key = ...;
writer.append(key, value);
writer.sync();
writer.close();
// Test fails unless I close the underlying FSDataOutputStream handle with
the line below.
// dos.close();
// WTF: nothing written by this writer!
FileStatus stats = hdfs.getFileStatus(path);
assertTrue(stats.getLen() > 0);
// it should have written something but it failed.
}
{code}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.