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.

Reply via email to