[ https://issues.apache.org/jira/browse/DRILL-5547?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16083193#comment-16083193 ]
ASF GitHub Bot commented on DRILL-5547: --------------------------------------- Github user paul-rogers commented on a diff in the pull request: https://github.com/apache/drill/pull/868#discussion_r126828426 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/server/options/SystemOptionManager.java --- @@ -48,11 +50,46 @@ * Only one instance of this class exists per drillbit. Options set at the system level affect the entire system and * persist between restarts. */ + +/** + * Drill has two different config systems each with its own namespace.First being the HOCON based boot time config + * system.This is a hierarchical system where the top layers override the bottom ones in the following order + * + * Java System Options + * distrib.conf + * drill-override.conf + * drill-module.conf + * + * These are the options that are set before the drill starts.But once drill starts System or session options can be + * modified using ALTER SYSTEM/SESSION.Even this system provides inheritance sytle in the following order + + * Session options + * System options + * Hardcoded defaults + + * But system/session options have a validator and the validator has a hard coded default value for every option. In + * the current system validators are registered so that system/session options will always have a default value. + * So when a system/session options are not explicitly set or a user system/session option is null the hardcoded + * default was applied since it checks if the option value is null and returns the default set in the validator.But + * the config options set during boot time are never read and honored since there is no linkage between the two + * config systems.It is also evident that there are some places where there is some ad-hoc linkage between the + * two systems.For example, for the code gen compiler, config options are supposed to be read if the system option + * is not null.But as the validator provides the default values config options are never taken into consideration. + * --- End diff -- In Javadoc, `<p>` is needed to separate paragraphs. > Drill config options and session options do not work as intended > ---------------------------------------------------------------- > > Key: DRILL-5547 > URL: https://issues.apache.org/jira/browse/DRILL-5547 > Project: Apache Drill > Issue Type: Bug > Components: Server > Affects Versions: 1.10.0 > Reporter: Karthikeyan Manivannan > Assignee: Venkata Jyothsna Donapati > Fix For: Future > > > In Drill, session options should take precedence over config options. But > several of these session options are assigned hard-coded default values when > the option validators are initialized. Because of this config options will > never be read and honored even if the user did not specify the session > option. > ClassCompilerSelector.JAVA_COMPILER_VALIDATOR uses CompilerPolicy.DEFAULT as > the default value. This default value gets into the session options map via > the initialization of validators in SystemOptionManager. > Now any piece of code that tries to check if a session option is set will > never see a null, so it will always use that value and never try to look into > the config options. For example, in the following piece of code from > ClassCompilerSelector (), the policy will never be read from the config file. > policy = CompilerPolicy.valueOf((value != null) ? > value.string_val.toUpperCase() : > config.getString(JAVA_COMPILER_CONFIG).toUpperCase()); -- This message was sent by Atlassian JIRA (v6.4.14#64029)