You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "eugen yushin (JIRA)" <ji...@apache.org> on 2018/10/05 14:12:00 UTC

[jira] [Created] (FLINK-10496) CommandLineParser arguments interleaving

eugen yushin created FLINK-10496:
------------------------------------

             Summary: CommandLineParser arguments interleaving
                 Key: FLINK-10496
                 URL: https://issues.apache.org/jira/browse/FLINK-10496
             Project: Flink
          Issue Type: Improvement
          Components: Configuration, Core, Java API
    Affects Versions: 1.6.1, 1.7.0
            Reporter: eugen yushin
            Assignee: eugen yushin


*Business case:*
Run Flink job cluster within Docker/k8s. Job takes an argument called `--config` which can't be recognized in runtime.

{code:java}
Caused by: java.lang.RuntimeException: No data for required key 'config'
{code}

*Problem statement:*
Command line parser can't recognize job specific arguments when they have the same prefix as Flink's ones.

e.g.
[https://github.com/apache/flink/blob/master/flink-container/src/test/java/org/apache/flink/container/entrypoint/StandaloneJobClusterConfigurationParserFactoryTest.java#L52]

the following args results in failure:
{code:java}
final String arg1 = "--config";
final String arg2 = "/path/to/job.yaml";{code}

*Reason*:
Apache CLI parser use string prefix matching to parse options and adds extra --configDir to result set instead of adding new --config.
https://github.com/apache/commons-cli/blob/cli-1.3.1/src/main/java/org/apache/commons/cli/DefaultParser.java#L391

*Scope*:
Update commons-cli dependency with version 1.4 which has flag to disable partial matching.
https://github.com/apache/commons-cli/commit/bdb4a09ceaceab7e3d214b1beadb93bd9c911342

Update Flink's command line parser to utilize this feature.
https://github.com/apache/flink/blob/6258a4c333ce9dba914621b13eac2f7d91f5cb72/flink-runtime/src/main/java/org/apache/flink/runtime/entrypoint/parser/CommandLineParser.java#L45



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)