This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git

commit 5faef51562ce896bcb973dc321009808712e1659
Author: Ian Maxon <ian@maxons.email>
AuthorDate: Mon Jan 25 20:37:18 2021 -0800

    [ASTERIXDB-2819][IO] Make absolute & normalize IODevice paths
    
    This improves the issue of not canonicalizing IOManager paths
    by at least making them absolute and removing redundant ./ and ../
    parts of the path.
    
    Change-Id: Ib71fd775eb8e4b1df548350152a7331316abd5b5
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/9444
    Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
    Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Michael Blow <mb...@apache.org>
---
 .../src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java       | 3 ++-
 .../src/main/java/org/apache/hyracks/control/nc/io/IOManager.java     | 4 ++--
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git 
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java
 
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java
index a2d28e1..c826c2f 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/io/IODeviceHandle.java
@@ -20,6 +20,7 @@ package org.apache.hyracks.api.io;
 
 import java.io.File;
 import java.io.Serializable;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -80,7 +81,7 @@ public class IODeviceHandle implements Serializable {
     public static List<IODeviceHandle> getDevices(String[] ioDevices) {
         List<IODeviceHandle> devices = new ArrayList<>();
         for (String ioDevice : ioDevices) {
-            String devPath = ioDevice.trim();
+            String devPath = 
Paths.get(ioDevice.trim()).toAbsolutePath().normalize().toString();
             devices.add(new IODeviceHandle(new File(devPath), "."));
         }
         return devices;
diff --git 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
index da78a0d..dee61a4 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java
@@ -414,9 +414,9 @@ public class IOManager implements IIOManager {
     }
 
     public IODeviceHandle getDevice(String fullPath) {
-        Path full = Paths.get(fullPath);
+        Path full = Paths.get(fullPath).normalize();
         for (IODeviceHandle d : ioDevices) {
-            if (full.startsWith(Paths.get(d.getMount().getAbsolutePath()))) {
+            if 
(full.startsWith(Paths.get(d.getMount().getAbsolutePath()).normalize())) {
                 return d;
             }
         }

Reply via email to