XiaodongHuan created FLINK-40473:
------------------------------------

             Summary: YARN application mode fails to locate flink-cdc-dist jar 
when the jar name carries a Flink version suffix
                 Key: FLINK-40473
                 URL: https://issues.apache.org/jira/browse/FLINK-40473
             Project: Flink
          Issue Type: Bug
          Components: Flink CDC
    Affects Versions: cdc-3.6.0, cdc-3.7.0
            Reporter: XiaodongHuan
         Attachments: image-2026-08-26-15-45-49-268.png

h3. Problem

Submitting a YAML pipeline with \{{-t yarn-application}} using the official
flink-cdc-3.6.0-1.20 binary distribution always fails:

{code}
java.io.FileNotFoundException: Failed to fetch Flink CDC dist jar from path: 
/path/to/flink-cdc-3.6.0-1.20/lib
      at 
org.apache.flink.cdc.composer.flink.deployment.YarnApplicationDeploymentExecutor.getFlinkCDCDistJarFromEnv(YarnApplicationDeploymentExecutor.java:151)
      at 
org.apache.flink.cdc.composer.flink.deployment.YarnApplicationDeploymentExecutor.deploy(YarnApplicationDeploymentExecutor.java:76)
      at org.apache.flink.cdc.cli.CliExecutor.run(CliExecutor.java:75)
{code}

The \{{lib}} directory does contain the dist jar. The message is misleading: the
directory is fine, but no file in it matches the expected naming pattern.

h3. Root cause

The dist jar is located by name matching 
(YarnApplicationDeploymentExecutor.java:62):

{code:java}
"^flink-cdc-dist-(\\d+(\\.\\d+)*)(-SNAPSHOT)?\\.jar$"
{code}

After the version this only accepts \{{-SNAPSHOT}} or \{{.jar}}. Since 3.6.0 the
distribution is released per Flink minor version, and the release script sets
{\{revision}} to \{{<release-version>-<flink-version>}}
(tools/releasing/deploy_staging_jars.sh:83), so the shipped jar is
{\{flink-cdc-dist-3.6.0-1.20.jar}}. The \{{-1.20}} segment never matches.

Not caught earlier because a plain \{{mvn package}} on master keeps 
\{{revision}}
at \{{3.7-SNAPSHOT}}, which does match. The code is identical between
release-3.6.0 and master, so 3.7.0 will reproduce this once released.

h3. Workaround

Set \{{pipeline.jars}} explicitly to skip the lookup:

{code}
bash ./bin/flink-cdc.sh -t yarn-application \
  -Dpipeline.jars=file:///path/to/lib/flink-cdc-dist-3.6.0-1.20.jar job.yaml
{code}

h3. Proposed fix

Allow an optional Flink version suffix, and include the pattern plus the actual
directory listing in the exception message:

{code:java}
"^flink-cdc-dist-(\\d+(\\.\\d+)*)(-\\d+(\\.\\d+)*)?(-SNAPSHOT)?\\.jar$"
{code}

!image-2026-08-26-15-45-49-268.png!



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

Reply via email to