github-actions[bot] opened a new pull request, #76344:
URL: https://github.com/apache/airflow/pull/76344
* Load Java Dags from a bundle path that contains a colon
The JVM splits -classpath on the path separator (':' on Linux) and has
no way to escape it. When a Dag bundle's path contains one, for example
a version directory named after a timestamp like
2026-11-02T15:52:20Z, JavaCoordinator passed absolute JAR paths, the
JVM split them apart, never loaded the JAR and exited with code 1, so
the Dag failed to parse with "exited with code 1 without a parse
result".
JavaCoordinator now starts the JVM in the bundle root and puts the
JARs on the classpath relative to it, so the bundle's own path never
appears there. SubprocessCoordinator gets a _get_working_directory hook
that both the Dag parse (chdir before exec) and task execution (Popen
cwd) use. A JAR whose path inside the bundle still holds the separator
is rejected with an error that names it.
* Prefix relative Java classpath entries with ./
The java launcher reads an argument that starts with "@" as an @argfile,
including the value after -classpath, so a bundle whose first JAR sat
under a directory like "@scope" failed to start. Every entry now starts
with "./".
* Test a Java bundle path holding the path separator end to end
Run the task and Dag parse launch tests in a bundle directory named after
a timestamp too, so the working directory and the relative classpath are
checked together for both paths.
Co-authored-by: Jason(Zhe-You) Liu
<[email protected]>
---------
(cherry picked from commit 51140809d2a7299955bdba51588947eeb6f015c1)
Co-authored-by: Jed Cunningham
<[email protected]>
Co-authored-by: Jason(Zhe-You) Liu
<[email protected]>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]