Uploaded image for project: 'Sentry (Retired)'
  1. Sentry (Retired)
  2. SENTRY-2014

Incorrect handling of HDFS paths with multiple slashes

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 2.0.0
    • None
    • None

    Description

      To the best of my knowledge, there are at least three places in the code where HDFS paths may not be parsed correctly:

      a) PathsUpdate.parsePath() does not handle collapse duplicate slashes in the path portion of URI into one slash. This method is used when getting paths data from HMS store. HDFS paths with duplicate slashes are perfectly legal and the specs refer to UNIX guidelines saying that multiple slashes should be treated as single slashes. If we keep multiple slashes in the path, such a path may be incorrectly split into path entries with some entries being empty, ultimately resulting in hard-to-troubleshoot ACL problems in the field. We should not assume that the URIs fed into parsePath() have already been normalized. It's easier to fix the code.

      b) NotificationProcessor.splitPath() is using "/" regex instead of the correct "/+" one. While the inputs to this class may be controlled by Sentry software, which may normalize paths properly, it is better not to make such assumptions and just fix the code.

      c) SentryStore.retrieveFullPathsImageCore() splits paths retrieved from database as "path.split("/") instead of path.split("/+")

      This may result in hard-to-troubleshoot HDFS sync failures.

      Attachments

        1. SENTRY-2014.01.patch
          7 kB
          Vadim Spector
        2. SENTRY-2014.02.patch
          7 kB
          Vadim Spector

        Issue Links

          Activity

            People

              vspector@gmail.com Vadim Spector
              vspector@gmail.com Vadim Spector
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: