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

ASF GitHub Bot commented on DRILL-5089:
---------------------------------------

Github user arina-ielchiieva commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1032#discussion_r151714217
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/WorkspaceSchemaFactory.java
 ---
    @@ -150,14 +152,30 @@ public WorkspaceSchemaFactory(
        * @return True if the user has access. False otherwise.
        */
       public boolean accessible(final String userName) throws IOException {
    -    final FileSystem fs = ImpersonationUtil.createFileSystem(userName, 
fsConf);
    +    final DrillFileSystem fs = 
ImpersonationUtil.createFileSystem(userName, fsConf);
    +    return accessible(fs);
    +  }
    +
    +  /**
    +   * Checks whether a FileSystem object has the permission to list/read 
workspace directory
    +   * @param fs a DrillFileSystem object that was created with certain user 
privilege
    +   * @return True if the user has access. False otherwise.
    +   * @throws IOException
    +   */
    +  public boolean accessible(DrillFileSystem fs) throws IOException {
         try {
    -      // We have to rely on the listStatus as a FileSystem can have 
complicated controls such as regular unix style
    -      // permissions, Access Control Lists (ACLs) or Access Control 
Expressions (ACE). Hadoop 2.7 version of FileSystem
    -      // has a limited private API (FileSystem.access) to check the 
permissions directly
    -      // (see https://issues.apache.org/jira/browse/HDFS-6570). Drill 
currently relies on Hadoop 2.5.0 version of
    -      // FileClient. TODO: Update this when DRILL-3749 is fixed.
    -      fs.listStatus(wsPath);
    +      /**
    +       * For Windows local file system, fs.access ends up using 
DeprecatedRawLocalFileStatus which has
    +       * TrustedInstaller as owner, and a member of Administrators group 
could not satisfy the permission.
    +       * In this case, we will still use method listStatus.
    +       * In other cases, we use access method since it is cheaper.
    +       */
    +      if (SystemUtils.IS_OS_WINDOWS && 
fs.getUri().getScheme().equalsIgnoreCase(FileSystemSchemaFactory.LOCAL_FS_SCHEME))
 {
    --- End diff --
    
    Just in case, did you check that everything works on Windows?


> Skip initializing all enabled storage plugins for every query
> -------------------------------------------------------------
>
>                 Key: DRILL-5089
>                 URL: https://issues.apache.org/jira/browse/DRILL-5089
>             Project: Apache Drill
>          Issue Type: Improvement
>          Components: Query Planning & Optimization
>    Affects Versions: 1.9.0
>            Reporter: Abhishek Girish
>            Assignee: Chunhui Shi
>            Priority: Critical
>
> In a query's lifecycle, at attempt is made to initialize each enabled storage 
> plugin, while building the schema tree. This is done regardless of the actual 
> plugins involved within a query. 
> Sometimes, when one or more of the enabled storage plugins have issues - 
> either due to misconfiguration or the underlying datasource being slow or 
> being down, the overall query time taken increases drastically. Most likely 
> due the attempt being made to register schemas from a faulty plugin.
> For example, when a jdbc plugin is configured with SQL Server, and at one 
> point the underlying SQL Server db goes down, any Drill query starting to 
> execute at that point and beyond begin to slow down drastically. 
> We must skip registering unrelated schemas (& workspaces) for a query. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to