This is an automated email from the ASF dual-hosted git repository.
davidzollo pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new b665535785 [Improve][Connector-V2] Optimize Arrow Converter SPI
registration using AutoService (#11219)
b665535785 is described below
commit b6655357858fdb5874322ddc05675d3140f5c1bd
Author: zhiwei.niu <[email protected]>
AuthorDate: Tue Jul 7 21:27:47 2026 +0800
[Improve][Connector-V2] Optimize Arrow Converter SPI registration using
AutoService (#11219)
---
.github/workflows/backend.yml | 6 ++---
.../source/arrow/converter/DateMilliConvertor.java | 3 +++
.../arrow/converter/FixedSizeListConverter.java | 3 +++
.../source/arrow/converter/LargeListConverter.java | 3 +++
.../source/arrow/converter/ListConverter.java | 3 +++
.../source/arrow/converter/MapConverter.java | 3 +++
.../source/arrow/converter/NullConverter.java | 3 +++
.../source/arrow/converter/StructConverter.java | 2 ++
.../arrow/converter/TimeStampMicroConverter.java | 3 +++
.../arrow/converter/TimeStampMilliConverter.java | 3 +++
.../arrow/converter/TimeStampNanoConverter.java | 3 +++
.../arrow/converter/TimeStampSecConverter.java | 3 +++
...atunnel.common.source.arrow.converter.Converter | 26 ----------------------
13 files changed, 35 insertions(+), 29 deletions(-)
diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml
index 3c6378ffce..6da2eea9a1 100644
--- a/.github/workflows/backend.yml
+++ b/.github/workflows/backend.yml
@@ -505,7 +505,7 @@ jobs:
matrix:
java: [ '8', '11' ]
os: [ 'ubuntu-latest' ]
- timeout-minutes: 210
+ timeout-minutes: 300
steps:
- uses: actions/checkout@v4
- name: Set up JDK ${{ matrix.java }}
@@ -626,7 +626,7 @@ jobs:
matrix:
java: [ '8', '11' ]
os: [ 'ubuntu-latest' ]
- timeout-minutes: 120
+ timeout-minutes: 210
steps:
- uses: actions/checkout@v4
- name: Set up JDK ${{ matrix.java }}
@@ -657,7 +657,7 @@ jobs:
matrix:
java: [ '8', '11' ]
os: [ 'ubuntu-latest' ]
- timeout-minutes: 120
+ timeout-minutes: 210
steps:
- uses: actions/checkout@v4
- name: Set up JDK ${{ matrix.java }}
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/DateMilliConvertor.java
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/DateMilliConvertor.java
index c184d6271e..9aee5394d7 100644
---
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/DateMilliConvertor.java
+++
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/DateMilliConvertor.java
@@ -20,10 +20,13 @@ package
org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter;
import org.apache.seatunnel.shade.org.apache.arrow.vector.DateMilliVector;
import org.apache.seatunnel.shade.org.apache.arrow.vector.types.Types;
+import com.google.auto.service.AutoService;
+
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
+@AutoService(Converter.class)
public class DateMilliConvertor implements Converter<DateMilliVector> {
@Override
public Object convert(int rowIndex, DateMilliVector fieldVector) {
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/FixedSizeListConverter.java
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/FixedSizeListConverter.java
index c325cc50cd..59190ff20c 100644
---
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/FixedSizeListConverter.java
+++
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/FixedSizeListConverter.java
@@ -20,6 +20,8 @@ package
org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter;
import
org.apache.seatunnel.shade.org.apache.arrow.vector.complex.FixedSizeListVector;
import org.apache.seatunnel.shade.org.apache.arrow.vector.types.Types;
+import com.google.auto.service.AutoService;
+
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
@@ -28,6 +30,7 @@ import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
+@AutoService(Converter.class)
public class FixedSizeListConverter implements Converter<FixedSizeListVector> {
@Override
public Object convert(int rowIndex, FixedSizeListVector fieldVector) {
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/LargeListConverter.java
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/LargeListConverter.java
index ed0d6ee26a..b96417e5b9 100644
---
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/LargeListConverter.java
+++
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/LargeListConverter.java
@@ -20,6 +20,8 @@ package
org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter;
import
org.apache.seatunnel.shade.org.apache.arrow.vector.complex.LargeListVector;
import org.apache.seatunnel.shade.org.apache.arrow.vector.types.Types;
+import com.google.auto.service.AutoService;
+
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
@@ -29,6 +31,7 @@ import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
+@AutoService(Converter.class)
public class LargeListConverter implements Converter<LargeListVector> {
@Override
public Object convert(int rowIndex, LargeListVector fieldVector) {
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/ListConverter.java
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/ListConverter.java
index 3424f56018..0895d586d5 100644
---
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/ListConverter.java
+++
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/ListConverter.java
@@ -20,6 +20,8 @@ package
org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter;
import org.apache.seatunnel.shade.org.apache.arrow.vector.complex.ListVector;
import org.apache.seatunnel.shade.org.apache.arrow.vector.types.Types;
+import com.google.auto.service.AutoService;
+
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
@@ -29,6 +31,7 @@ import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
+@AutoService(Converter.class)
public class ListConverter implements Converter<ListVector> {
@Override
public Object convert(int rowIndex, ListVector fieldVector) {
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/MapConverter.java
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/MapConverter.java
index 18ec3c6910..fd4aeb01a6 100644
---
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/MapConverter.java
+++
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/MapConverter.java
@@ -21,6 +21,8 @@ import
org.apache.seatunnel.shade.org.apache.arrow.vector.complex.MapVector;
import
org.apache.seatunnel.shade.org.apache.arrow.vector.complex.impl.UnionMapReader;
import org.apache.seatunnel.shade.org.apache.arrow.vector.types.Types;
+import com.google.auto.service.AutoService;
+
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
@@ -28,6 +30,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
+@AutoService(Converter.class)
public class MapConverter implements Converter<MapVector> {
@Override
public Object convert(int rowIndex, MapVector fieldVector) {
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/NullConverter.java
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/NullConverter.java
index 50b235ea8e..441038dfc4 100644
---
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/NullConverter.java
+++
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/NullConverter.java
@@ -20,6 +20,9 @@ package
org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter;
import org.apache.seatunnel.shade.org.apache.arrow.vector.NullVector;
import org.apache.seatunnel.shade.org.apache.arrow.vector.types.Types;
+import com.google.auto.service.AutoService;
+
+@AutoService(Converter.class)
public class NullConverter implements Converter<NullVector> {
@Override
public Object convert(int rowIndex, NullVector fieldVector) {
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/StructConverter.java
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/StructConverter.java
index b74ccde554..2646df7b2b 100644
---
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/StructConverter.java
+++
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/StructConverter.java
@@ -20,6 +20,7 @@ package
org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter;
import org.apache.seatunnel.shade.org.apache.arrow.vector.complex.StructVector;
import org.apache.seatunnel.shade.org.apache.arrow.vector.types.Types;
+import com.google.auto.service.AutoService;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
@@ -28,6 +29,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
@Slf4j
+@AutoService(Converter.class)
public class StructConverter implements Converter<StructVector> {
@Override
public Object convert(int rowIndex, StructVector fieldVector) {
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampMicroConverter.java
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampMicroConverter.java
index eee0a44ee6..e7cac38bd7 100644
---
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampMicroConverter.java
+++
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampMicroConverter.java
@@ -20,10 +20,13 @@ package
org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter;
import org.apache.seatunnel.shade.org.apache.arrow.vector.TimeStampMicroVector;
import org.apache.seatunnel.shade.org.apache.arrow.vector.types.Types;
+import com.google.auto.service.AutoService;
+
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
+@AutoService(Converter.class)
public class TimeStampMicroConverter implements
Converter<TimeStampMicroVector> {
@Override
public Object convert(int rowIndex, TimeStampMicroVector fieldVector) {
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampMilliConverter.java
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampMilliConverter.java
index 3410671e80..9f6f432681 100644
---
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampMilliConverter.java
+++
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampMilliConverter.java
@@ -20,10 +20,13 @@ package
org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter;
import org.apache.seatunnel.shade.org.apache.arrow.vector.TimeStampMilliVector;
import org.apache.seatunnel.shade.org.apache.arrow.vector.types.Types;
+import com.google.auto.service.AutoService;
+
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
+@AutoService(Converter.class)
public class TimeStampMilliConverter implements
Converter<TimeStampMilliVector> {
@Override
public Object convert(int rowIndex, TimeStampMilliVector fieldVector) {
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampNanoConverter.java
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampNanoConverter.java
index 17187abba7..c9b41bc3ac 100644
---
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampNanoConverter.java
+++
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampNanoConverter.java
@@ -20,10 +20,13 @@ package
org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter;
import org.apache.seatunnel.shade.org.apache.arrow.vector.TimeStampNanoVector;
import org.apache.seatunnel.shade.org.apache.arrow.vector.types.Types;
+import com.google.auto.service.AutoService;
+
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
+@AutoService(Converter.class)
public class TimeStampNanoConverter implements Converter<TimeStampNanoVector> {
@Override
public Object convert(int rowIndex, TimeStampNanoVector fieldVector) {
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampSecConverter.java
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampSecConverter.java
index a0a91b6dfe..b8141289c1 100644
---
a/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampSecConverter.java
+++
b/seatunnel-connectors-v2/connector-common/src/main/java/org/apache/seatunnel/connectors/seatunnel/common/source/arrow/converter/TimeStampSecConverter.java
@@ -20,10 +20,13 @@ package
org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter;
import org.apache.seatunnel.shade.org.apache.arrow.vector.TimeStampSecVector;
import org.apache.seatunnel.shade.org.apache.arrow.vector.types.Types;
+import com.google.auto.service.AutoService;
+
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
+@AutoService(Converter.class)
public class TimeStampSecConverter implements Converter<TimeStampSecVector> {
@Override
public Object convert(int rowIndex, TimeStampSecVector fieldVector) {
diff --git
a/seatunnel-connectors-v2/connector-common/src/main/resources/META-INF/services/org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.Converter
b/seatunnel-connectors-v2/connector-common/src/main/resources/META-INF/services/org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.Converter
deleted file mode 100644
index 310946f2ca..0000000000
---
a/seatunnel-connectors-v2/connector-common/src/main/resources/META-INF/services/org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.Converter
+++ /dev/null
@@ -1,26 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.FixedSizeListConverter
-org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.LargeListConverter
-org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.ListConverter
-org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.MapConverter
-org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.NullConverter
-org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.StructConverter
-org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.TimeStampMicroConverter
-org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.TimeStampMilliConverter
-org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.TimeStampNanoConverter
-org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.DateMilliConvertor
-org.apache.seatunnel.connectors.seatunnel.common.source.arrow.converter.TimeStampSecConverter