[ 
https://issues.apache.org/jira/browse/FLINK-4764?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stephan Ewen resolved FLINK-4764.
---------------------------------
    Resolution: Implemented

Implemented in cdebb0ef100179e810f6e110b974632bd49c653f

> Introduce config options
> ------------------------
>
>                 Key: FLINK-4764
>                 URL: https://issues.apache.org/jira/browse/FLINK-4764
>             Project: Flink
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 1.1.2
>            Reporter: Stephan Ewen
>            Assignee: Stephan Ewen
>             Fix For: 1.2.0
>
>
> It is a bit unorthodox to start a discussion via a pull request, but this 
> suggestion is best motivated via some code.
> I suggest to move away from the current model with `ConfigConstants` and move 
> to a model where an `Option` object describes a configuration option 
> completely, with default value, fallback keys.
> h2. Advantages
>   - Much simpler / easier access to values that have deprecated keys
>   - Not possible to accidentally overlook deprecated keys
>   - Key and default values are grouped together in the definition
>   - Clearly states the expected type value for each config key (string, int, 
> etc).
>   - We can improve this even further to include the description and 
> auto-generate the config docs
> h2. Example
> Simple option:
> {code}
> Option<String> TASK_MANAGER_TMP_DIRS = new Option<>(
>                     "taskmanager.tmp.dirs",                 // config key
>                     System.getProperty("java.io.tmpdir"));  // default value
> {code}
> Option with multiple deprecated keys:
> {code}
> Option<String> HA_CLUSTER_ID = new Option<>(
>                     "high-availability.cluster-id",      // config key
>                     null,                                // no default value
>                     "high-availability.zookeeper.path.namespace",  // latest 
> deprecated key
>                     "recovery.zookeeper.path.namespace");         // even 
> earlier deprecated key
> {code}
> Get a config value, this automatically checks deprecated keys and default 
> values:
> {code}
> final String zkQuorum = 
> configuration.getValue(ConfigOptions.HA_ZOOKEEPER_QUORUM);
> final long connTimeout = 
> configuration.getInteger(ConfigOptions.HA_ZOOKEEPER_CONN_TIMEOUT);
> {code}
> h2. Multiple Options classes
> To avoid having one huge class (like `ConfigConstants`), we can easily split 
> this up into `TaskManagerOptions`, `JobManagerOptions`, `ZooKeeperOptions`, 
> etc.



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

Reply via email to