Hi there,

I am currently prepping my PR 2 for Debezium, but I am getting errors from
the CI that are related to Java 11.
-> Task with path ':sdks:java:container:distroless:java11:docker' not found
in project ':runners:google-cloud-dataflow-java' [0]

Is there a way to disable this via a flag or config setting?

[0]
https://github.com/apache/beam/actions/runs/15115381426/job/42484628013?pr=34763


On Wed, Apr 30, 2025 at 9:29 PM Tobi Kaymak <kay...@google.com> wrote:

> This is super helpful, thank you!
> I was looking for these kinds of switches in the other build configs, I
> agree that a generalization of this would be helpful going forward
> (thinking about other libraries that might require higher Java versions in
> the future).
> Thank you for taking the time to test my PR, I will incorporate your Java
> 17/21 check into it and see about the stuck integration test.
>
> On Wed, Apr 30, 2025 at 6:08 PM Yi Hu <ya...@google.com> wrote:
>
>> Yeah those configurations are needed to accommodate errorprone. I did
>> some test on https://github.com/apache/beam/pull/34788 based on your PR.
>> I get Debezium build on CI and unit test passing (except there is an
>> integration test stuck).
>>
>>
>> On Wed, Apr 30, 2025 at 11:46 AM Tobi Kaymak <kay...@google.com> wrote:
>>
>>> Thank you! Yes, that is my understanding too.
>>> I tried to force Java 17, in Debezium IOs build.gradle, but I failed so
>>> far.
>>> I even tried to completely clear the arguments and manually construct
>>> them for the gradle command line [0], however then this clashed
>>> with ErrorProne.
>>> I will give it another shot in the coming days.
>>>
>>> [0]
>>> https://github.com/apache/beam/pull/34763/commits/a779e201941ba10672e8225229bc59e0afd01e21
>>>
>>> On Wed, Apr 30, 2025 at 5:18 PM Yi Hu <ya...@google.com> wrote:
>>>
>>>> The purpose of the fallback [0] is to make other Beam components build
>>>> on Java11, while only `:sdks:java:io:debezium` should be configured to
>>>> build on Java17, in its build.gradle file.
>>>>
>>>> On Wed, Apr 30, 2025 at 11:14 AM XQ Hu via dev <dev@beam.apache.org>
>>>> wrote:
>>>>
>>>>> I think we can remove 11. Looks like we always do this: JAVA_HOME:
>>>>> /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/11.0.27-6/x64
>>>>>
>>>>> However, we probably need to change that direct github workflow to
>>>>> remove :sdks:java:container:java8 and :sdks:java:container:java11 and
>>>>> add :sdks:java:container:java17.
>>>>>
>>>>> On Wed, Apr 30, 2025 at 10:23 AM Tobi Kaymak <kay...@google.com>
>>>>> wrote:
>>>>>
>>>>>> I do have a silly question, I am struggling to find the reason for
>>>>>> the fallback need of Java 11 in the
>>>>>> beam_PreCommit_Java_Debezium_IO_Direct.yml [0]
>>>>>> I was trying to not interfere with the build system outside of the
>>>>>> module by doing some tricks within the build.gradle of Debzium IO in the
>>>>>> second PR. [1]
>>>>>> However, it seems that the CI always picks up Java 11 and therefore
>>>>>> fails the build. It builds completely fine with Java 17 on my machine
>>>>>> though.
>>>>>> Is there a way to force Java 17 for the module by, for example,
>>>>>> removing the 11 fallback from the PreCommit Workflow or does this have
>>>>>> known side-effects?
>>>>>>
>>>>>> Thank you!
>>>>>>
>>>>>> [0]
>>>>>> https://github.com/apache/beam/pull/34751/files#diff-de752bcab62398ee28adb75a8fdb1933d8d855f2ae46417ec1d47180174a1800R91
>>>>>> [1] https://github.com/apache/beam/pull/34763
>>>>>>
>>>>>> On Mon, Apr 28, 2025 at 5:04 PM Tobi Kaymak <kay...@google.com>
>>>>>> wrote:
>>>>>>
>>>>>>> I did the second PR and removed the enforcement of proto3 in the
>>>>>>> build.gradle (
>>>>>>> https://github.com/apache/beam/pull/34763/files#diff-1572bcc322ede7d3a757381b84791a29b691df4d8947f6ad39ce4597653787edL95)
>>>>>>> -
>>>>>>> All tests are green on my local machine, but they will of course
>>>>>>> fail on the CI since the first PR has not been merged yet.
>>>>>>>
>>>>>>> I would be very happy about a review by Danny McCormick, who did
>>>>>>> work on this a few months ago in his PR and added the enforcement (
>>>>>>> https://github.com/apache/beam/pull/33526).
>>>>>>>
>>>>>>>
>>>>>>> On Sun, Apr 27, 2025 at 5:00 PM Tobi Kaymak <kay...@google.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> I did create the first PR, after building the IO on my local
>>>>>>>> machine with gradle and Java 17. This should not have an effect other 
>>>>>>>> than
>>>>>>>> changing the build system. Feedback is very welcome:
>>>>>>>> https://github.com/apache/beam/pull/34751
>>>>>>>>
>>>>>>>> On Sat, Apr 26, 2025 at 12:49 AM Tobi Kaymak <kay...@google.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Thank you both!
>>>>>>>>> I have checked and couldn't find a matching issue, so I created
>>>>>>>>> this one: https://github.com/apache/beam/issues/34747
>>>>>>>>>
>>>>>>>>> On Sat, Apr 26, 2025 at 12:32 AM XQ Hu via dev <
>>>>>>>>> dev@beam.apache.org> wrote:
>>>>>>>>>
>>>>>>>>>> Can we create the GitHub issue to track this work if we haven't?
>>>>>>>>>>
>>>>>>>>>> On Fri, Apr 25, 2025, 4:39 PM Yi Hu via dev <dev@beam.apache.org>
>>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Tobi,
>>>>>>>>>>>
>>>>>>>>>>> Thanks for your interest and willing to take on the task. First
>>>>>>>>>>> of all, could you please create a GitHub Issue to track the effort?
>>>>>>>>>>>
>>>>>>>>>>> I would like to share some comments if find useful
>>>>>>>>>>>
>>>>>>>>>>> - We already have infrastructure for the goal of "PR 1". We use
>>>>>>>>>>> BeamPluginModulePlugin [1] to initialize java modules and there is a
>>>>>>>>>>> setJavaVerOptions method. Here is a module could be an example how
>>>>>>>>>>> compiling with different Java version works in Beam: [2].
>>>>>>>>>>>
>>>>>>>>>>> - We'll need to handle Debezium with newer Java version as well
>>>>>>>>>>> (That's the reason test currently failing on #34733). We'll need to 
>>>>>>>>>>> modify
>>>>>>>>>>> test workflow file [3]. However due to GitHub limitation changes to
>>>>>>>>>>> .github/workflows won't be effective on unsubmitted PRs. You'd need 
>>>>>>>>>>> to test
>>>>>>>>>>> your change locally.
>>>>>>>>>>>
>>>>>>>>>>> - Given that current Debezium (1.x) is already old I'm +1 with
>>>>>>>>>>> the change.
>>>>>>>>>>>
>>>>>>>>>>> [1]
>>>>>>>>>>> https://github.com/apache/beam/blob/master/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
>>>>>>>>>>>
>>>>>>>>>>> [2]
>>>>>>>>>>> https://github.com/apache/beam/blob/master/sdks/java/container/agent/build.gradle
>>>>>>>>>>>
>>>>>>>>>>> [3]
>>>>>>>>>>> https://github.com/apache/beam/blob/master/.github/workflows/beam_PreCommit_Java_Debezium_IO_Direct.yml
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Thanks.
>>>>>>>>>>>
>>>>>>>>>>> Yi
>>>>>>>>>>>
>>>>>>>>>>> On Fri, Apr 25, 2025 at 3:06 PM Tobi Kaymak via dev <
>>>>>>>>>>> dev@beam.apache.org> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Beam Devs,
>>>>>>>>>>>>
>>>>>>>>>>>> I'm interested in helping to upgrade the Debezium IO connector (
>>>>>>>>>>>> sdks:java:io:debezium) to Debezium version 3.1.1.Final. This
>>>>>>>>>>>> version of Debezium requires its dependencies (like
>>>>>>>>>>>> debezium-core) to be compiled against Java 17
>>>>>>>>>>>> <https://debezium.io/releases/3.0/release-notes#breaking_changes_14>
>>>>>>>>>>>> bytecode.
>>>>>>>>>>>>
>>>>>>>>>>>> I took the work from Danny McCormick who started doing
>>>>>>>>>>>> something similar for Debezium 2.7.4 and created a WIP branch
>>>>>>>>>>>> <https://github.com/apache/beam/pull/34733> to get my feet wet
>>>>>>>>>>>> with Java and Gradle's build system again.
>>>>>>>>>>>>
>>>>>>>>>>>> To manage this upgrade gracefully and make the review process
>>>>>>>>>>>> smoother, I was thinking to split the work into a two-step PR:
>>>>>>>>>>>>
>>>>>>>>>>>>    1.
>>>>>>>>>>>>
>>>>>>>>>>>>    *PR 1 (Build Infrastructure):* A smaller, focused PR to
>>>>>>>>>>>>    enable Java 17 compilation specifically for the
>>>>>>>>>>>>    sdks:java:io:debezium module. This would likely involve:
>>>>>>>>>>>>    - Modifying the sdks:java:io:debezium/build.gradle to allow
>>>>>>>>>>>>       forking its compileJava (and compileTestJava) tasks
>>>>>>>>>>>>       using a JDK 17 (e.g., via a java17Home Gradle property
>>>>>>>>>>>>       derived from a CI environment variable like
>>>>>>>>>>>>       JAVA_HOME_17_X64).
>>>>>>>>>>>>       - Updating the relevant PreCommit workflow (
>>>>>>>>>>>>       beam_PreCommit_Java_Debezium_IO_Direct.yml)
>>>>>>>>>>>>       
>>>>>>>>>>>> <https://github.com/apache/beam/blob/master/.github/workflows/beam_PreCommit_Java_Debezium_IO_Direct.yml#L87>
>>>>>>>>>>>>       to ensure a JDK 17 is available and its path is passed to 
>>>>>>>>>>>> Gradle for this
>>>>>>>>>>>>       module.
>>>>>>>>>>>>       - The goal of this first PR would be to get the module
>>>>>>>>>>>>       to compile successfully with Java 17 against the existing 
>>>>>>>>>>>> (older) Debezium
>>>>>>>>>>>>       version.
>>>>>>>>>>>>    2.
>>>>>>>>>>>>
>>>>>>>>>>>>    *PR 2 (Debezium 3.1.1 Upgrade & API Adaptation):* A
>>>>>>>>>>>>    subsequent PR that would:
>>>>>>>>>>>>    - Actually update the Debezium dependencies to 3.1.1.Final.
>>>>>>>>>>>>       - Incorporate the necessary code changes within
>>>>>>>>>>>>       sdks:java:io:debezium to adapt to any API changes in
>>>>>>>>>>>>       Debezium 3.1.1.
>>>>>>>>>>>>       - Address any new functionality or considerations with
>>>>>>>>>>>>       Debezium 3.1.1 (which I understand uses now libprotoc-dev
>>>>>>>>>>>>       1.5,
>>>>>>>>>>>>       
>>>>>>>>>>>> <https://github.com/debezium/container-images/pull/427/files#diff-bf3b0b8b023cf3cd20ca9d862bb8301523cdb9c934dec1ce96cd9640a613ae7e>
>>>>>>>>>>>>  -
>>>>>>>>>>>>       according to its release notes
>>>>>>>>>>>>       
>>>>>>>>>>>> <https://debezium.io/releases/3.1/release-notes#other_changes_5>
>>>>>>>>>>>>       .
>>>>>>>>>>>>
>>>>>>>>>>>> My reasoning for this split is to isolate the build system
>>>>>>>>>>>> changes from the actual library upgrade and code adaptation, 
>>>>>>>>>>>> allowing for
>>>>>>>>>>>> smaller code reviews.
>>>>>>>>>>>>
>>>>>>>>>>>> I'd appreciate any feedback or suggestions on the best way to
>>>>>>>>>>>> upgrade Debezium IO.
>>>>>>>>>>>>
>>>>>>>>>>>> Best
>>>>>>>>>>>> Tobi
>>>>>>>>>>>>
>>>>>>>>>>>

Reply via email to