Uploaded image for project: 'Apache Ozone'
  1. Apache Ozone
  2. HDDS-2114

Rename does not preserve non-explicitly created interim directories

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • None
    • 0.5.0
    • None

    Description

      I am attaching a patch that adds a test that demonstrates the problem.

      The scenario is coming from the way how Hive implements acid transactions with the ORC table format, but the test is redacted to the simplest possible code that reproduces the issue.

      The scenario:

      • Given a 3 level directory structure, where the top level directory was explicitly created, and the interim directory is implicitly created (for example either by creating a file with create("/top/interim/file") or by creating a directory with mkdirs("top/interim/dir"))
      • When the leaf is moved out from the implicitly created directory making this directory an empty directory
      • Then a FileNotFoundException is thrown when getFileStatus or listStatus is called on the interim directory.

      The expected behaviour:

      after the directory is becoming empty, the directory should still be part of the file system, moreover an empty FileStatus array should be returned when listStatus is called on it, and also a valid FileStatus object should be returned when getFileStatus is called on it.

       

       

      As this issue is present with Hive, and as this is how a FileSystem is expected to work this seems to be an at least critical issue as I see, please feel free to change the priority if needed.

      Also please note that, if the interim directory is explicitly created with mkdirs("top/interim") before creating the leaf, then the issue does not appear.

      Attachments

        1. demonstrative_test.patch
          2 kB
          István Fajth

        Issue Links

          Activity

            People

              ljain Lokesh Jain
              pifta István Fajth
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1.5h
                  1.5h