[jira] [Created] (FLINK-19493) In CliFrontend, make flow of Configuration more obvious

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (FLINK-19493) In CliFrontend, make flow of Configuration more obvious

Shang Yuanchun (Jira)
Aljoscha Krettek created FLINK-19493:
----------------------------------------

             Summary: In CliFrontend, make flow of Configuration more obvious
                 Key: FLINK-19493
                 URL: https://issues.apache.org/jira/browse/FLINK-19493
             Project: Flink
          Issue Type: Improvement
            Reporter: Aljoscha Krettek
            Assignee: Aljoscha Krettek


It's very important to ensure that the {{Configuration}} the {{CliFrontend}} loads ends up in the {{*ContexteEnvironment}} and that its settings are reflected there. Currently, there are no tests for this behaviour and it is hard to convince yourself that the code is actually doing the right thing. We should simplify the flow of the {{Configuration}} from loading to the environment and add tests that verify this behaviour.

Currently, the flow is roughly this:
 - the {{main()}} method loads the {{Configuration}} (from {{flink-conf.yaml}})
 - the {{Configuration}} is passed to the {{CustomCommandLines}} in {{loadCustomCommandLines()}}
 - {{main()}} passes both the {{Configuration}} and the {{CustomCommandLines}} to the constructor of {{CliFrontend}}
 - when we need a {{Configuration}} for execution {{getEffectiveConfiguration()}} is called. This doesn't take the {{Configuration}} of the {{CliFrontend}} as a basis but instead calls {{CustomCommandLine.applyCommandLineOptionsToConfiguration}}

It's up to the {{CustomCommandLine.applyCommandLineOptionsToConfiguration()}} implemenation to either forward the {{Configuration}} that was given to it by the {{CliFrontend.main()}} method or return some other {{Configuration}}. Only if the correct {{Configuration}} is returned can we ensure that user settings make it all the way though.

I'm proposing to change {{CustomCommandLine.applyCommandLineOptionsToConfiguration()}} to instead apply it's settings to a {{Configuration}} that is passed in a parameter, then {{getEffectiveConfiguration()}} can pass in the {{Configuration}} it got from the {{main()}} method as a basis and the flow is easy to verify because.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)