Elkhan Dadashov created FLINK-32126:
---------------------------------------

             Summary: When program arg contains two single quotes 
org.apache.flink.configuration.StructuredOptionsSplitter.consumeInQuotes fails
                 Key: FLINK-32126
                 URL: https://issues.apache.org/jira/browse/FLINK-32126
             Project: Flink
          Issue Type: Bug
          Components: API / Core
    Affects Versions: 1.17.0
         Environment: Flink 1.17
            Reporter: Elkhan Dadashov


When the program argument contains two single quotes, then it fails :

```

for key '$internal.application.program-args'.\n\tat 
org.apache.flink.configuration.Configuration.getOptional(Configuration.java:720)\n\tat
 org.apache.flink.configuration.Configuration.get(Configuration.java:704)\n\tat 
org.apache.flink.configuration.ConfigUtils.decodeListFromConfig(ConfigUtils.java:126)\n\tat
 
org.apache.flink.client.deployment.application.ApplicationConfiguration.fromConfiguration(ApplicationConfiguration.java:80)\n\tat
 
org.apache.flink.kubernetes.entrypoint.KubernetesApplicationClusterEntrypoint.getPackagedProgram(KubernetesApplicationClusterEntrypoint.java:93)\n\tat
 
org.apache.flink.kubernetes.entrypoint.KubernetesApplicationClusterEntrypoint.main(KubernetesApplicationClusterEntrypoint.java:70)\n

Caused by: java.lang.IllegalArgumentException: Could not split string. Quoting 
was not closed properly.\n\tat 
org.apache.flink.configuration.StructuredOptionsSplitter.consumeInQuotes(StructuredOptionsSplitter.java:163)\n\tat
 
org.apache.flink.configuration.StructuredOptionsSplitter.tokenize(StructuredOptionsSplitter.java:129)\n\tat
 
org.apache.flink.configuration.StructuredOptionsSplitter.splitEscaped(StructuredOptionsSplitter.java:52)\n\tat
 
org.apache.flink.configuration.ConfigurationUtils.convertToList(ConfigurationUtils.java:347)\n\tat
 
org.apache.flink.configuration.Configuration.lambda$getOptional$2(Configuration.java:714)\n\tat
 java.base/java.util.Optional.map(Optional.java:265)\n\tat 
org.apache.flink.configuration.Configuration.getOptional(Configuration.java:714)

```

Double single quotes are used in faker connector extensively, and if FlinkSQL 
script is passed as main argument, then it fails with the above exception. This 
is just to show the use case of two single quotes usage in practice.

```

CREATE TEMPORARY TABLE IF NOT EXISTS xyz_table (
 env STRING,
 dt DATE
)
WITH (
'connector' = 'faker' ,
'rows-per-second' = '20' ,
'fields.env.expression' = '#\{Options.option ''VAL'',''LIVE'')}' ,
'fields.dt.expression' = '#\{date.past ''48'',''HOURS''}',
'source.parallelism' = '3'
);

```



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

Reply via email to