FSOutputSummer do not flushBuffer on OutputStream.flush
-------------------------------------------------------

                 Key: HADOOP-7299
                 URL: https://issues.apache.org/jira/browse/HADOOP-7299
             Project: Hadoop Common
          Issue Type: Bug
          Components: fs
    Affects Versions: 0.21.0
            Reporter: Vitalii Tymchyshyn


When working with "file://" FileSystem (e.g. in tests), ChecksumFileSystem is 
used.
I am calling next operations:
create
write
hflush
open
seek
read

This results in:

java.lang.IllegalStateException: java.io.IOException: Cannot seek after EOF
        at 
com.dbl.util.grid.apache.hdfs.FileSystemStorageHolder.get(FileSystemStorageHolder.java:52)
        at 
com.dbl.util.grid.apache.hdfs.FileSystemStorageTest.testRecursiveSave(FileSystemStorageTest.java:31)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
        at 
org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
        at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
        at 
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
        at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
        at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
        at 
org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
        at 
org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
        at 
org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
        at 
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
        at 
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
        at 
org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:130)
        at 
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:97)
        at 
com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:192)
        at 
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:60)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:115)
Caused by: java.io.IOException: Cannot seek after EOF
        at 
org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.seek(ChecksumFileSystem.java:296)
        at 
org.apache.hadoop.fs.FSDataInputStream.seek(FSDataInputStream.java:42)
        at 
com.dbl.util.grid.apache.hdfs.FileSystemStorageHolder.get(FileSystemStorageHolder.java:49)
        ... 26 more


It seems that FSOutputSummer does not implements flush OutputStream method - so 
hflush gets ignored.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to