Laurent Goujon created DRILL-4292:
-------------------------------------

             Summary: Avoid multiple new Configuration/FileSystem instantiation 
                 Key: DRILL-4292
                 URL: https://issues.apache.org/jira/browse/DRILL-4292
             Project: Apache Drill
          Issue Type: Task
            Reporter: Laurent Goujon


There are lots of places where Drill code has the following pattern:
{noformat}
conf = new Configuration();
{noformat}

or
{noformat}
    Configuration conf = new Configuration();
    [...]
    fs = FileSystem.get(conf);
{noformat}

Creating Configuration instances is a pretty expensive operation as it triggers 
a classpath scan to find resources (this lazily happens when accessing a key). 
Also, these extra instances use more memory than expected (because the default 
resources are not shared between Configuration instances.

FileSystem instances should not be expensive to create, because by default, 
instances are cached (by scheme/authority/ugi), but it also means that the 
Configuration instance has little value when getting the FileSystem instnce 
(except when getting the default filesystem (can be replaced by 
FileSystem#get(URI, Configuration)) or creating the FileSystem for the given 
scheme, IF not already in the cache).

If possible, all these examples should be refactored to inject the right 
FileSystem instance, instead of letting each class trying to create its own.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to