This is an automated email from the ASF dual-hosted git repository.

lizhimins pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/rocketmq-flink.git


The following commit(s) were added to refs/heads/main by this push:
     new 7fe6ad8  [ISSUE #155] refactor: target Flink 2.2.1 on main (Java 17) 
(#158)
7fe6ad8 is described below

commit 7fe6ad89a17a46b640424c2f5ea219d804ceaae4
Author: lizhimins <[email protected]>
AuthorDate: Tue Nov 3 10:01:12 2026 +0800

    [ISSUE #155] refactor: target Flink 2.2.1 on main (Java 17) (#158)
    
    Now that the codebase is new-API only, supporting Flink 2.x is just the
    version switch:
    
    - flink.version 1.20.3 -> 2.2.1, Java 17 bytecode.
    - The CI build matrix drops JDK 11 (Flink 2.x requires Java 17 at compile
      time), but spotless 2.27.1 silently skips its Java formatter on JDK 16+
      ("Spotless check skipped"), so the style check moves to a dedicated
      JDK 11 job. Leaving it inside the build job would have dropped the only
      style gate that actually runs.
    - Drop the deprecated-overload bridges that only 1.20 needs
      (Sink.InitContext, createSerializer(ExecutionConfig)); 2.x declares
      the WriterInitContext / SerializerConfig overloads abstract.
    - The grpc ITCase collects with sink.legacy.RichSinkFunction, the 2.x
      package; 1.20 has no sink.legacy subpackage.
    
    The 1.x maintenance branch (v3.0) keeps 1.20.3 and the bridges; the diff
    between the two lines is exactly this commit, so fixes cherry-pick both
    ways without adaptation in the shared code.
    
    Verified: mvn clean package green on JDK 17 (remoting 146 / grpc 80 unit
    tests), spotless:check green on JDK 11, both SQL fat-jars produced.
---
 .github/workflows/build.yml                        | 27 ++++++--
 .../rocketmq/grpc/ack/AckableMessageTypeInfo.java  |  8 ---
 .../rocketmq/grpc/sink/RocketMQGrpcSink.java       | 14 ----
 .../rocketmq/grpc/RocketMQGrpcITCase.java          |  2 +-
 .../connector/rocketmq/sink/RocketMQSink.java      | 81 ----------------------
 pom.xml                                            | 19 ++---
 6 files changed, 35 insertions(+), 116 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 7f8acaa..6a32a4d 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -29,6 +29,27 @@ concurrency:
   cancel-in-progress: true
 
 jobs:
+  style:
+    # spotless-maven-plugin 2.27.1 silently skips its Java formatter on JDK 16+
+    # (the log says "Spotless check skipped"), so a spotless:check step inside 
the
+    # JDK 17 build job enforces nothing. Dropping JDK 11 from the build matrix
+    # would therefore drop the only real style gate, so keep it as its own job.
+    # Formatting does not compile against Flink, so it can stay on JDK 11.
+    name: Check code style (JDK 11)
+    runs-on: ubuntu-latest
+    timeout-minutes: 20
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Set up JDK 11
+        uses: actions/setup-java@v4
+        with:
+          distribution: temurin
+          java-version: 11
+
+      - name: Check code style
+        run: mvn -B -ntp spotless:check
+
   build:
     name: Build (JDK ${{ matrix.java }})
     runs-on: ubuntu-latest
@@ -36,7 +57,8 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        java: [11, 17]
+        # Flink 2.x requires Java 17 at compile time.
+        java: [17]
     steps:
       - uses: actions/checkout@v4
 
@@ -47,9 +69,6 @@ jobs:
           java-version: ${{ matrix.java }}
           cache: maven
 
-      - name: Check code style
-        run: mvn -B -ntp spotless:check
-
       - name: Build and run tests
         # `package` runs unit tests and the shade plugin for the SQL fat-jars.
         # dependency:analyze (bound to `verify`) is skipped until declarations 
are cleaned up.
diff --git 
a/flink-connector-rocketmq-grpc/src/main/java/org/apache/flink/connector/rocketmq/grpc/ack/AckableMessageTypeInfo.java
 
b/flink-connector-rocketmq-grpc/src/main/java/org/apache/flink/connector/rocketmq/grpc/ack/AckableMessageTypeInfo.java
index 336baec..f876ecf 100644
--- 
a/flink-connector-rocketmq-grpc/src/main/java/org/apache/flink/connector/rocketmq/grpc/ack/AckableMessageTypeInfo.java
+++ 
b/flink-connector-rocketmq-grpc/src/main/java/org/apache/flink/connector/rocketmq/grpc/ack/AckableMessageTypeInfo.java
@@ -20,7 +20,6 @@ package org.apache.flink.connector.rocketmq.grpc.ack;
 
 import org.apache.flink.annotation.Internal;
 import org.apache.flink.annotation.PublicEvolving;
-import org.apache.flink.api.common.ExecutionConfig;
 import org.apache.flink.api.common.serialization.SerializerConfig;
 import org.apache.flink.api.common.typeinfo.TypeInformation;
 import org.apache.flink.api.common.typeutils.CompositeTypeSerializerSnapshot;
@@ -86,13 +85,6 @@ public final class AckableMessageTypeInfo<T> extends 
TypeInformation<AckableMess
         return new Serializer<>(valueTypeInfo.createSerializer(config));
     }
 
-    /** Flink 1.x still declares the deprecated {@link ExecutionConfig} 
overload abstract. */
-    @Override
-    @Deprecated
-    public TypeSerializer<AckableMessage<T>> createSerializer(ExecutionConfig 
config) {
-        return new Serializer<>(valueTypeInfo.createSerializer(config));
-    }
-
     @Override
     public String toString() {
         return "AckableMessageTypeInfo<" + valueTypeInfo + '>';
diff --git 
a/flink-connector-rocketmq-grpc/src/main/java/org/apache/flink/connector/rocketmq/grpc/sink/RocketMQGrpcSink.java
 
b/flink-connector-rocketmq-grpc/src/main/java/org/apache/flink/connector/rocketmq/grpc/sink/RocketMQGrpcSink.java
index 50e1d1d..9c2b131 100644
--- 
a/flink-connector-rocketmq-grpc/src/main/java/org/apache/flink/connector/rocketmq/grpc/sink/RocketMQGrpcSink.java
+++ 
b/flink-connector-rocketmq-grpc/src/main/java/org/apache/flink/connector/rocketmq/grpc/sink/RocketMQGrpcSink.java
@@ -58,18 +58,4 @@ public class RocketMQGrpcSink<IN> implements Sink<IN> {
                 serializationSchema,
                 context.asSerializationSchemaInitializationContext());
     }
-
-    /**
-     * Flink 1.x still declares the deprecated {@link Sink.InitContext} 
overload abstract. The 1.x
-     * runtime calls {@link #createWriter(WriterInitContext)}; this bridge 
serves callers that pass
-     * the old context type.
-     */
-    @Override
-    @Deprecated
-    public SinkWriter<IN> createWriter(Sink.InitContext context) throws 
IOException {
-        return new RocketMQGrpcSinkWriter<>(
-                configuration,
-                serializationSchema,
-                context.asSerializationSchemaInitializationContext());
-    }
 }
diff --git 
a/flink-connector-rocketmq-grpc/src/test/java/org/apache/flink/connector/rocketmq/grpc/RocketMQGrpcITCase.java
 
b/flink-connector-rocketmq-grpc/src/test/java/org/apache/flink/connector/rocketmq/grpc/RocketMQGrpcITCase.java
index c041f9f..80ceddf 100644
--- 
a/flink-connector-rocketmq-grpc/src/test/java/org/apache/flink/connector/rocketmq/grpc/RocketMQGrpcITCase.java
+++ 
b/flink-connector-rocketmq-grpc/src/test/java/org/apache/flink/connector/rocketmq/grpc/RocketMQGrpcITCase.java
@@ -467,7 +467,7 @@ class RocketMQGrpcITCase extends AbstractTestBase {
      */
     @SuppressWarnings("deprecation")
     private static class CollectingSinkFunction
-            extends 
org.apache.flink.streaming.api.functions.sink.RichSinkFunction<String> {
+            extends 
org.apache.flink.streaming.api.functions.sink.legacy.RichSinkFunction<String> {
 
         private static final long serialVersionUID = 1L;
 
diff --git 
a/flink-connector-rocketmq/src/main/java/org/apache/flink/connector/rocketmq/sink/RocketMQSink.java
 
b/flink-connector-rocketmq/src/main/java/org/apache/flink/connector/rocketmq/sink/RocketMQSink.java
index 59d8b4d..a01aa71 100644
--- 
a/flink-connector-rocketmq/src/main/java/org/apache/flink/connector/rocketmq/sink/RocketMQSink.java
+++ 
b/flink-connector-rocketmq/src/main/java/org/apache/flink/connector/rocketmq/sink/RocketMQSink.java
@@ -18,12 +18,6 @@
 package org.apache.flink.connector.rocketmq.sink;
 
 import org.apache.flink.annotation.PublicEvolving;
-import org.apache.flink.api.common.JobInfo;
-import org.apache.flink.api.common.TaskInfo;
-import org.apache.flink.api.common.operators.MailboxExecutor;
-import org.apache.flink.api.common.operators.ProcessingTimeService;
-import org.apache.flink.api.common.serialization.SerializationSchema;
-import org.apache.flink.api.common.typeutils.TypeSerializer;
 import org.apache.flink.api.connector.sink2.Committer;
 import org.apache.flink.api.connector.sink2.CommitterInitContext;
 import org.apache.flink.api.connector.sink2.Sink;
@@ -37,11 +31,7 @@ import 
org.apache.flink.connector.rocketmq.sink.committer.SendCommittableSeriali
 import org.apache.flink.connector.rocketmq.sink.writer.RocketMQWriter;
 import 
org.apache.flink.connector.rocketmq.sink.writer.serializer.RocketMQSerializationSchema;
 import org.apache.flink.core.io.SimpleVersionedSerializer;
-import org.apache.flink.metrics.groups.SinkWriterMetricGroup;
 import 
org.apache.flink.streaming.connectors.rocketmq.common.selector.MessageQueueSelector;
-import org.apache.flink.util.UserCodeClassLoader;
-
-import java.util.OptionalLong;
 
 @PublicEvolving
 public class RocketMQSink<IN> implements Sink<IN>, 
SupportsCommitter<SendCommittable> {
@@ -75,77 +65,6 @@ public class RocketMQSink<IN> implements Sink<IN>, 
SupportsCommitter<SendCommitt
                 configuration, messageQueueSelector, serializationSchema, 
context);
     }
 
-    /**
-     * Flink 1.x still declares the deprecated {@link Sink.InitContext} 
overload abstract. The 1.x
-     * runtime calls {@link #createWriter(WriterInitContext)}; this bridge 
serves callers that pass
-     * the old context type. Both interfaces expose the same methods.
-     */
-    @Override
-    @Deprecated
-    public SinkWriter<IN> createWriter(Sink.InitContext context) {
-        return createWriter(new InitContextAdapter(context));
-    }
-
-    private static final class InitContextAdapter implements WriterInitContext 
{
-
-        private final Sink.InitContext delegate;
-
-        private InitContextAdapter(Sink.InitContext delegate) {
-            this.delegate = delegate;
-        }
-
-        @Override
-        public UserCodeClassLoader getUserCodeClassLoader() {
-            return delegate.getUserCodeClassLoader();
-        }
-
-        @Override
-        public MailboxExecutor getMailboxExecutor() {
-            return delegate.getMailboxExecutor();
-        }
-
-        @Override
-        public ProcessingTimeService getProcessingTimeService() {
-            return delegate.getProcessingTimeService();
-        }
-
-        @Override
-        public SinkWriterMetricGroup metricGroup() {
-            return delegate.metricGroup();
-        }
-
-        @Override
-        public SerializationSchema.InitializationContext
-                asSerializationSchemaInitializationContext() {
-            return delegate.asSerializationSchemaInitializationContext();
-        }
-
-        @Override
-        public boolean isObjectReuseEnabled() {
-            return delegate.isObjectReuseEnabled();
-        }
-
-        @Override
-        public <T> TypeSerializer<T> createInputSerializer() {
-            return delegate.createInputSerializer();
-        }
-
-        @Override
-        public OptionalLong getRestoredCheckpointId() {
-            return delegate.getRestoredCheckpointId();
-        }
-
-        @Override
-        public JobInfo getJobInfo() {
-            return delegate.getJobInfo();
-        }
-
-        @Override
-        public TaskInfo getTaskInfo() {
-            return delegate.getTaskInfo();
-        }
-    }
-
     @Override
     public Committer<SendCommittable> createCommitter(CommitterInitContext 
context) {
         return new RocketMQCommitter(configuration);
diff --git a/pom.xml b/pom.xml
index 653aeb1..8fe589c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -81,11 +81,11 @@ under the License.
     <properties>
         
<flink.parent.artifactId>flink-connector-rocketmq-parent</flink.parent.artifactId>
 
-        <!-- Flink 1.x line targets Java 11 bytecode -->
-        <target.java.version>11</target.java.version>
+        <!-- Flink 2.x requires Java 17 at compile time -->
+        <target.java.version>17</target.java.version>
 
         <!-- Main Dependencies -->
-        <flink.version>1.20.3</flink.version>
+        <flink.version>2.2.1</flink.version>
         <rocketmq.version>5.5.1</rocketmq.version>
         <rocketmq.client.java.version>5.2.2</rocketmq.client.java.version>
         
<rocketmq.schema.registry.version>0.1.0</rocketmq.schema.registry.version>
@@ -547,7 +547,7 @@ under the License.
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <configuration>
-                    <release>11</release>
+                    <release>17</release>
                 </configuration>
             </plugin>
 
@@ -559,8 +559,8 @@ under the License.
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-shade-plugin</artifactId>
-                <!-- Same shade version as the 2.x branch: the one inherited 
from
-                     flink-connector-parent bundles an ASM that cannot read 
Java 17 class files. -->
+                <!-- The version inherited from flink-connector-parent bundles 
an ASM that cannot
+                     read Java 17 class files (major version 61), which Flink 
2.x requires. -->
                 <version>3.6.0</version>
             </plugin>
 
@@ -582,8 +582,11 @@ under the License.
                         <phase>verify</phase>
                         <configuration>
                             <!-- Upstream CI only runs `mvn clean package`, so 
this verify-phase
-                                 gate never ran there and its dependency list 
is stale. Keep the
-                                 report, but do not fail the build on it. -->
+                                 gate never ran there and its dependency list 
is stale. Flink 2.x
+                                 additionally split flink-core / flink-runtime 
/ flink-annotations
+                                 / flink-core-api into separate artifacts, so 
the analyzer now
+                                 reports a long list of used-undeclared 
provided-scope Flink
+                                 internals. Keep the report, but do not fail 
the build on it. -->
                             <failOnWarning>false</failOnWarning>
                             
<ignoreAllNonTestScoped>true</ignoreAllNonTestScoped>
                         </configuration>

Reply via email to