[
https://issues.apache.org/jira/browse/DRILL-5547?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16105708#comment-16105708
]
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_r130187202
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/server/options/TypeValidators.java
---
@@ -217,19 +236,52 @@ public void validate(final OptionValue v, final
OptionSet manager) {
}
}
+ /** Max width is a special validator which computes and validates
+ * the maxwidth. If the maxwidth is already set in system/session
+ * the value is returned or else it is computed dynamically based on
+ * the available number of processors and cpu load average
+ */
+ public static class MaxWidthValidator extends TypeValidator{
+
+ public MaxWidthValidator(String name) {
+ this(name, false);
+ }
+
+ public MaxWidthValidator(String name, boolean isAdminOption) {
+ super(name, Kind.LONG, isAdminOption);
+ }
+
+ public void loadDefault(DrillConfig bootConfig) {
+ OptionValue value = OptionValue.createLong(OptionType.SYSTEM,
getOptionName(), bootConfig.getLong(getConfigProperty()), OptionScope.BOOT);
+ setDefaultValue(value);
+ }
+
+ public int computeMaxWidth(double cpuLoadAverage, long maxWidth) {
+ // if maxwidth is already set return it
+ if (maxWidth != 0) {
+ return (int) maxWidth;
+ }
+ // else compute the value and return
+ else {
+ int maxWidthPerNode;
+ int availProc = Runtime.getRuntime().availableProcessors();
+ maxWidthPerNode = (int) Math.max(1, Math.min(availProc,
Math.round(availProc * cpuLoadAverage)));
--- End diff --
`int maxWidthPerNode = ...`
or even just
`return (int) ...`
> 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)