[
https://issues.apache.org/jira/browse/FLINK-34114?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
jonasjc closed FLINK-34114.
---------------------------
Resolution: Duplicate
> Parse error while $internal.application.program-args contains '#' in Yarn/K8s
> Application Mode
> ----------------------------------------------------------------------------------------------
>
> Key: FLINK-34114
> URL: https://issues.apache.org/jira/browse/FLINK-34114
> Project: Flink
> Issue Type: Bug
> Components: Deployment / Kubernetes, Deployment / YARN
> Affects Versions: 1.18.0
> Reporter: jonasjc
> Priority: Major
>
> When run job by K8s or Yarn Application Mode use
> org.apache.flink.configuration.GlobalConfiguration#loadYAMLResource method
> parse config。
>
> {code:java}
> private static Configuration loadYAMLResource(File file) {
> final Configuration config = new Configuration();
> try (BufferedReader reader =
> new BufferedReader(new InputStreamReader(new
> FileInputStream(file)))) {
> String line;
> int lineNo = 0;
> while ((line = reader.readLine()) != null) {
> lineNo++;
> // 1. check for comments
> String[] comments = line.split("#", 2);
> String conf = comments[0].trim();
> // 2. get key and value
> if (conf.length() > 0) {
> String[] kv = conf.split(": ", 2);
> // skip line with no valid key-value pair
> if (kv.length == 1) {
> LOG.warn(
> "Error while trying to split key and value in
> configuration file "
> + file
> + ":"
> + lineNo
> + ": Line is not a key-value pair
> (missing space after ':'?)");
> continue;
> }
> String key = kv[0].trim();
> String value = kv[1].trim();
> // sanity check
> if (key.length() == 0 || value.length() == 0) {
> LOG.warn(
> "Error after splitting key and value in
> configuration file "
> + file
> + ":"
> + lineNo
> + ": Key or value was empty");
> continue;
> }
> config.setString(key, value);
> }
> }
> } catch (IOException e) {
> throw new RuntimeException("Error parsing YAML configuration.", e);
> }
> return config;
> } {code}
> if config value contains '#' like
>
> {code:java}
> $internal.application.program-args: '{test:test#jsonstring}'{code}
>
>
> the following code is not correct
> {code:java}
> line.split("#", 2) {code}
> To fix this,i think we should import snakeyaml to fix complex situation
--
This message was sent by Atlassian Jira
(v8.20.10#820010)