Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-9527

Paths initialized with URI are not normalized

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 1.0.3, 1.1.4, 1.2.1, 1.3.3, 1.4.2, 1.5.0, 1.6.0
    • Fix Version/s: None
    • Component/s: API / DataSet
    • Labels:
      None

      Description

      The Path class has a lot of logic to normalize paths, like removing trailing slashes.

      However, all this normalization can be circumvented by passing in a URI, where no normalization is done. I guess this was done on the assumption that the normalization was compatible with URI, but it turns out that this is not the case in the case of trailing slashes.

      An URI may have a trailing slash for directories, whereas a normalized Path does not.

      Unfortunately this breaks some assumptions made in the Path class, in particular Path#getParent() does not properly handle this case.

      Both assertions in the code below will fail.

      public void testPathNormalization() {
      		String path = "C:/Users/Zento/AppData/Local/Temp/test/";
      		URI uri = URI.create(path);
      
      		Path normalizedPath = new Path(path);
      		Path uriPath = new Path(uri);
      
      		Assert.assertEquals(normalizedPath.toString(), uriPath.toString());
      		Assert.assertEquals("C:/Users/Zento/AppData/Local/Temp", uriPath.getParent().getPath());
      	}
      

        Attachments

          Activity

            People

            • Assignee:
              yanghua vinoyang
              Reporter:
              Zentol Chesnay Schepler
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: