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] [Commented] (DRILL-5224) CTTAS: fix errors connected with system path delimiters (Windows)
Date Mon, 06 Feb 2017 09:50:42 GMT

    [ https://issues.apache.org/jira/browse/DRILL-5224?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15853768#comment-15853768

Arina Ielchiieva commented on DRILL-5224:

Merged into master with commit id 7913d5d3346087397f8675021807d8b230ba67ca

> 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:
> {noformat}
> 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
> {noformat}
> 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.
> Fix:
> Use org.apache.hadoop.fs.Path tools to merge path, path string is normalized during creation.
> {noformat}
> new Path(fs.getUri().toString(), new Path(temporaryWorkspace.getDefaultLocation(), sessionId));
> {noformat}
> 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.
> Fix:
> Concatenate session id with generated table name using org.apache.hadoop.fs.Path tools.
> {noformat}
> new Path(sessionId, UUID.randomUUID().toString()).toUri().getPath();
> {noformat}

This message was sent by Atlassian JIRA

View raw message