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

jonasjc updated FLINK-34114:
----------------------------
    Description: 
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 '#',ofenly  by $internal.application.program-args,the 
following code is not correct
{code:java}
line.split("#", 2) {code}
To fix this,we can just skip the line when start with '#'

> 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: API / Core
>    Affects Versions: 1.18.0
>            Reporter: jonasjc
>            Priority: Major
>             Fix For: 1.19.0
>
>
> 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 '#',ofenly  by 
> $internal.application.program-args,the following code is not correct
> {code:java}
> line.split("#", 2) {code}
> To fix this,we can just skip the line when start with '#'



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to