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)

Reply via email to