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