drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Arina Ielchiieva (JIRA)" <j...@apache.org>
Subject [jira] [Created] (DRILL-5224) CTTAS: fix errors connected with system path delimiters (Windows)
Date Thu, 26 Jan 2017 18:03:24 GMT
Arina Ielchiieva created DRILL-5224:

             Summary: CTTAS: fix errors connected with system path delimiters (Windows)
                 Key: DRILL-5224
                 URL: https://issues.apache.org/jira/browse/DRILL-5224
             Project: Apache Drill
          Issue Type: Bug
    Affects Versions: 1.10.0
         Environment: Windows 10
            Reporter: Arina Ielchiieva
            Assignee: Arina Ielchiieva
             Fix For: 1.10.0

Problem 1:
Error occurs when attempting to create temporary table on Windows:

0: jdbc:drill:zk=local> create temporary table t as select * from sys.version;
Error: SYSTEM ERROR: InvalidPathException: Illegal char <:> at index 4: file:///\tmp\3191db8e-279d-4ced-b0e5-32b3b477edfb

Root cause:
when creating temporary directory we merge file system uri, temporary workspace location and
session id into one path using java.nio.file.Paths.get() but this method cannot resolve path
when path has different delimiters.

Use org.apache.hadoop.fs.Path tools to merge path, path string is normalized during creation.
new Path(fs.getUri().toString(), temporaryWorkspace.getDefaultLocation()).suffix(sessionId);

Problem 2:
When temporary table is being manually dropped using drop table command, though actual table
is dropped, remnant folder is left.

Root cause:
Before adding to temporary table to the list of temporary tables, its generated name is concatenated
with session id (as parent and child folders). java.nio.file.Paths.get() is used for concatenation
but it preserves current system delimiter. When table is being dropped, passed table name
is split using org.apache.hadoop.fs.Path.SEPARATOR, since it's assumed that path was created
using org.apache.hadoop.fs.Path tools where path separators are normalized to one format disregarding
the system.

Concatenate session id with generated table name using org.apache.hadoop.fs.Path tools.
new Path(sessionId, UUID.randomUUID().toString()).toUri().getPath();

This message was sent by Atlassian JIRA

View raw message