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)