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

[OFS] URI parser throws URISyntaxException when path contains space

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.1.0
    • 1.2.0
    • None

    Description

      In docker-compose ozone:

      bash-4.2$ ozone fs -put "compose/common/grafana/dashboards/Ozone - Object Metrics.json" ofs://om/vol1/bucket2/dir3/
      -put: Fatal internal error
      java.lang.RuntimeException: java.net.URISyntaxException: Illegal character in path at index 51: user/hadoop/compose/common/grafana/dashboards/Ozone - Object Metrics.json
      	at org.apache.hadoop.ozone.OFSPath.<init>(OFSPath.java:79)
      	at org.apache.hadoop.fs.ozone.BasicRootedOzoneClientAdapterImpl.getFileStatus(BasicRootedOzoneClientAdapterImpl.java:546)
      	at org.apache.hadoop.fs.ozone.BasicRootedOzoneFileSystem.getFileStatus(BasicRootedOzoneFileSystem.java:785)
      	at org.apache.hadoop.fs.shell.PathData.lookupStat(PathData.java:173)
      	at org.apache.hadoop.fs.shell.PathData.<init>(PathData.java:105)
      	at org.apache.hadoop.fs.shell.PathData.<init>(PathData.java:82)
      	at org.apache.hadoop.fs.shell.CopyCommands$Put.expandArgument(CopyCommands.java:287)
      	at org.apache.hadoop.fs.shell.Command.expandArguments(Command.java:233)
      	at org.apache.hadoop.fs.shell.FsCommand.processRawArguments(FsCommand.java:105)
      	at org.apache.hadoop.fs.shell.Command.run(Command.java:177)
      	at org.apache.hadoop.fs.FsShell.run(FsShell.java:327)
      	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
      	at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:90)
      	at org.apache.hadoop.fs.ozone.OzoneFsShell.main(OzoneFsShell.java:81)
      Caused by: java.net.URISyntaxException: Illegal character in path at index 51: user/hadoop/compose/common/grafana/dashboards/Ozone - Object Metrics.json
      	at java.base/java.net.URI$Parser.fail(URI.java:2913)
      	at java.base/java.net.URI$Parser.checkChars(URI.java:3084)
      	at java.base/java.net.URI$Parser.parseHierarchical(URI.java:3166)
      	at java.base/java.net.URI$Parser.parse(URI.java:3125)
      	at java.base/java.net.URI.<init>(URI.java:600)
      	at org.apache.hadoop.ozone.OFSPath.<init>(OFSPath.java:77)
      	... 13 more
      

      Looks like a parsing bug in OFSPath.

      Easier repro:

      $ ozone fs -ls "ofs://ozone1/vo1/bucket2/ "
      -ls: Fatal internal error
      java.lang.RuntimeException: java.net.URISyntaxException: Illegal character in path at index 12: vo1/bucket2/
      	at org.apache.hadoop.ozone.OFSPath.<init>(OFSPath.java:79)
      	at org.apache.hadoop.fs.ozone.BasicRootedOzoneClientAdapterImpl.getFileStatus(BasicRootedOzoneClientAdapterImpl.java:538)
      ...
      

      Attachments

        Issue Links

          Activity

            People

              smeng Siyao Meng
              smeng Siyao Meng
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: