You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@iotdb.apache.org by "Xiangdong Huang (Jira)" <ji...@apache.org> on 2022/12/18 02:56:00 UTC

[jira] [Created] (IOTDB-5228) NPE if the file does not exist when create TsFileSequenceReader instance

Xiangdong Huang created IOTDB-5228:
--------------------------------------

             Summary: NPE if the file does not exist when create TsFileSequenceReader instance 
                 Key: IOTDB-5228
                 URL: https://issues.apache.org/jira/browse/IOTDB-5228
             Project: Apache IoTDB
          Issue Type: Bug
            Reporter: Xiangdong Huang


When create a TsFileSequenceReader, an exception will be thrown if the file does not exist, and the reason of the exception can not be caught.

 

Current TsFileSequenceReader:
{code:java}
public TsFileSequenceReader(String file, boolean loadMetadataSize) throws IOException {
  if (resourceLogger.isDebugEnabled()) {
    resourceLogger.debug("{} reader is opened. {}", file, getClass().getName());
  }
  this.file = file;
  tsFileInput = FSFactoryProducer.getFileInputFactory().getTsFileInput(file);
  try {
    if (loadMetadataSize) {
      loadMetadataSize();
    }
  } catch (Throwable e) {
    tsFileInput.close();
    throw e;
  }
} {code}
 

while TsFileInput:
{code:java}
public TsFileInput getTsFileInput(String filePath) {
  try {
    return new LocalTsFileInput(Paths.get(filePath));
  } catch (IOException e) {
    logger.error("Failed to get TsFile input of file: {}, ", filePath, e);
    return null;
  }
} {code}
 

exception example:
{code:java}
java.lang.NullPointerException: Cannot invoke "org.apache.iotdb.tsfile.read.reader.TsFileInput.close()" because "this.tsFileInput" is null    at org.apache.iotdb.tsfile.read.TsFileSequenceReader.<init>(TsFileSequenceReader.java:143)
    at org.apache.iotdb.tsfile.read.TsFileSequenceReader.<init>(TsFileSequenceReader.java:123)
    at org.apache.iotdb.cross.tests.tools.tsfile.ExportTsFileTestIT.readTsFile(ExportTsFileTestIT.java:89)
    at org.apache.iotdb.cross.tests.tools.tsfile.ExportTsFileTestIT.testExport(ExportTsFileTestIT.java:78)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
    at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54) {code}
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)