This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new bb121e30810 [chore](external catalog) deprecated lakesoul external
catalog (#56843)
bb121e30810 is described below
commit bb121e30810ea7e604d21d91f98493045f5ccea5
Author: zy-kkk <[email protected]>
AuthorDate: Sat Oct 18 07:56:22 2025 +0800
[chore](external catalog) deprecated lakesoul external catalog (#56843)
### What problem does this PR solve?
We are deprecating LakeSoul external catalog support in the current
Doris release due to several critical issues:
**Design Flaws** – The current driver management design causes conflicts
with other components, leading to instability and increased maintenance
complexity.
**Security Vulnerabilities** – LakeSoul dependencies contain multiple
CVE-reported vulnerabilities, posing security risks.
**Lack of Maintenance** – The LakeSoul catalog integration in Doris
lacks active maintainers and has not received timely updates.
**No User Adoption** – No user feedback or usage requests have been
received, indicating that the feature has not been used in practice.
Given these factors, maintaining this integration introduces unnecessary
security and maintenance burdens without providing tangible value to
users. Therefore, we have decided to **deprecate** LakeSoul catalog
support in this release:
- All LakeSoul-related code has been marked as `@Deprecated` and will be
kept for backward compatibility
- LakeSoul dependencies (including `lakesoul-io-java`, `postgresql`, and
`scala-library`) have been changed to `provided` scope and will not be
packaged in the release
- Comment `extensions_modules+=("lakesoul-scanner")` in build.sh
Users who still need LakeSoul support can manually enable it by
modifying Maven configurations. However, we strongly recommend migrating
to alternative catalog solutions. Complete removal of LakeSoul support
is planned for a future release.
---
.../vec/exec/format/table/lakesoul_jni_reader.cpp | 3 ++
be/src/vec/exec/format/table/lakesoul_jni_reader.h | 3 ++
build.sh | 6 ++--
fe/be-java-extensions/lakesoul-scanner/pom.xml | 1 +
.../apache/doris/lakesoul/LakeSoulJniScanner.java | 4 +++
.../org/apache/doris/lakesoul/LakeSoulUtils.java | 4 +++
.../apache/doris/lakesoul/arrow/ArrowUtils.java | 4 +++
.../lakesoul/arrow/LakeSoulArrowJniScanner.java | 4 +++
fe/be-java-extensions/pom.xml | 3 +-
fe/fe-core/pom.xml | 5 ++-
.../apache/doris/datasource/CatalogFactory.java | 4 +--
.../lakesoul/LakeSoulExternalCatalog.java | 40 +++++++++++++---------
.../lakesoul/LakeSoulExternalDatabase.java | 4 +++
.../datasource/lakesoul/LakeSoulExternalTable.java | 4 +++
.../doris/datasource/lakesoul/LakeSoulUtils.java | 4 +++
.../lakesoul/source/LakeSoulScanNode.java | 4 +++
.../datasource/lakesoul/source/LakeSoulSplit.java | 4 +++
17 files changed, 78 insertions(+), 23 deletions(-)
diff --git a/be/src/vec/exec/format/table/lakesoul_jni_reader.cpp
b/be/src/vec/exec/format/table/lakesoul_jni_reader.cpp
index cccf9ffb649..2fe821c49ea 100644
--- a/be/src/vec/exec/format/table/lakesoul_jni_reader.cpp
+++ b/be/src/vec/exec/format/table/lakesoul_jni_reader.cpp
@@ -15,6 +15,9 @@
// specific language governing permissions and limitations
// under the License.
+// DEPRECATED: LakeSoul catalog support has been deprecated and will be
removed in a future version.
+// This file is kept for backward compatibility but should not be used in new
code.
+
#include "lakesoul_jni_reader.h"
#include <map>
diff --git a/be/src/vec/exec/format/table/lakesoul_jni_reader.h
b/be/src/vec/exec/format/table/lakesoul_jni_reader.h
index b733cad2801..6a659cddc9e 100644
--- a/be/src/vec/exec/format/table/lakesoul_jni_reader.h
+++ b/be/src/vec/exec/format/table/lakesoul_jni_reader.h
@@ -15,6 +15,9 @@
// specific language governing permissions and limitations
// under the License.
+// DEPRECATED: LakeSoul catalog support has been deprecated and will be
removed in a future version.
+// This file is kept for backward compatibility but should not be used in new
code.
+
#pragma once
#include <string>
diff --git a/build.sh b/build.sh
index 048fa48484d..6f599c98159 100755
--- a/build.sh
+++ b/build.sh
@@ -550,7 +550,8 @@ if [[ "${BUILD_BE_JAVA_EXTENSIONS}" -eq 1 ]]; then
modules+=("be-java-extensions/trino-connector-scanner")
modules+=("be-java-extensions/max-compute-scanner")
modules+=("be-java-extensions/avro-scanner")
- modules+=("be-java-extensions/lakesoul-scanner")
+ # lakesoul-scanner has been deprecated
+ # modules+=("be-java-extensions/lakesoul-scanner")
modules+=("be-java-extensions/preload-extensions")
# If the BE_EXTENSION_IGNORE variable is not empty, remove the modules
that need to be ignored from FE_MODULES
@@ -879,7 +880,8 @@ EOF
extensions_modules+=("trino-connector-scanner")
extensions_modules+=("max-compute-scanner")
extensions_modules+=("avro-scanner")
- extensions_modules+=("lakesoul-scanner")
+ # lakesoul-scanner has been deprecated
+ # extensions_modules+=("lakesoul-scanner")
extensions_modules+=("preload-extensions")
extensions_modules+=("iceberg-metadata-scanner")
diff --git a/fe/be-java-extensions/lakesoul-scanner/pom.xml
b/fe/be-java-extensions/lakesoul-scanner/pom.xml
index be2927300b3..32f853bc76c 100644
--- a/fe/be-java-extensions/lakesoul-scanner/pom.xml
+++ b/fe/be-java-extensions/lakesoul-scanner/pom.xml
@@ -53,6 +53,7 @@ under the License.
<artifactId>lakesoul-io-java</artifactId>
<version>${lakesoul.version}</version>
<classifier>shaded</classifier>
+ <scope>provided</scope>
<exclusions>
<exclusion>
<groupId>*</groupId>
diff --git
a/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/LakeSoulJniScanner.java
b/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/LakeSoulJniScanner.java
index 18b7bea03bb..0ff491b246a 100644
---
a/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/LakeSoulJniScanner.java
+++
b/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/LakeSoulJniScanner.java
@@ -39,6 +39,10 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
+/**
+ * @deprecated LakeSoul catalog support has been deprecated and will be
removed in a future version.
+ */
+@Deprecated
public class LakeSoulJniScanner extends LakeSoulArrowJniScanner {
private static final Logger LOG =
LoggerFactory.getLogger(LakeSoulJniScanner.class);
diff --git
a/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/LakeSoulUtils.java
b/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/LakeSoulUtils.java
index ca07a81d0da..df55675b8c7 100644
---
a/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/LakeSoulUtils.java
+++
b/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/LakeSoulUtils.java
@@ -20,6 +20,10 @@ package org.apache.doris.lakesoul;
import java.util.Arrays;
import java.util.List;
+/**
+ * @deprecated LakeSoul catalog support has been deprecated and will be
removed in a future version.
+ */
+@Deprecated
public class LakeSoulUtils {
public static final String FILE_NAMES = "file_paths";
public static final String PRIMARY_KEYS = "primary_keys";
diff --git
a/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/arrow/ArrowUtils.java
b/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/arrow/ArrowUtils.java
index 94ac32935e8..48c278672e2 100644
---
a/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/arrow/ArrowUtils.java
+++
b/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/arrow/ArrowUtils.java
@@ -30,6 +30,10 @@ import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.List;
+/**
+ * @deprecated LakeSoul catalog support has been deprecated and will be
removed in a future version.
+ */
+@Deprecated
public class ArrowUtils {
public static long reloadTimeStampSecVectorBuffer(final ArrowBuf
sourceDataBuffer,
final int valueCount) {
diff --git
a/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/arrow/LakeSoulArrowJniScanner.java
b/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/arrow/LakeSoulArrowJniScanner.java
index 3c73c2f1ab4..9e490fabff6 100644
---
a/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/arrow/LakeSoulArrowJniScanner.java
+++
b/fe/be-java-extensions/lakesoul-scanner/src/main/java/org/apache/doris/lakesoul/arrow/LakeSoulArrowJniScanner.java
@@ -52,6 +52,10 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+/**
+ * @deprecated LakeSoul catalog support has been deprecated and will be
removed in a future version.
+ */
+@Deprecated
public class LakeSoulArrowJniScanner extends JniScanner {
protected static final Logger LOG =
Logger.getLogger(LakeSoulArrowJniScanner.class);
diff --git a/fe/be-java-extensions/pom.xml b/fe/be-java-extensions/pom.xml
index 67c415e4550..39a457bcd78 100644
--- a/fe/be-java-extensions/pom.xml
+++ b/fe/be-java-extensions/pom.xml
@@ -29,7 +29,8 @@ under the License.
<module>paimon-scanner</module>
<module>max-compute-scanner</module>
<module>avro-scanner</module>
- <module>lakesoul-scanner</module>
+ <!-- lakesoul-scanner module has been deprecated -->
+ <!-- <module>lakesoul-scanner</module> -->
<module>preload-extensions</module>
<module>trino-connector-scanner</module>
</modules>
diff --git a/fe/fe-core/pom.xml b/fe/fe-core/pom.xml
index d5c213f6732..144115657cf 100644
--- a/fe/fe-core/pom.xml
+++ b/fe/fe-core/pom.xml
@@ -517,6 +517,7 @@ under the License.
<groupId>com.dmetasoul</groupId>
<artifactId>lakesoul-io-java</artifactId>
<version>${lakesoul.version}</version>
+ <scope>provided</scope>
<exclusions>
<exclusion>
<groupId>io.netty</groupId>
@@ -576,16 +577,18 @@ under the License.
</exclusion>
</exclusions>
</dependency>
+ <!-- LakeSoul dependencies - provided scope as lakesoul is deprecated
-->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.3</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
- <scope>compile</scope>
+ <scope>provided</scope>
</dependency>
<dependency>
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogFactory.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogFactory.java
index d401929d7d1..3819d582531 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogFactory.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogFactory.java
@@ -25,7 +25,6 @@ import org.apache.doris.datasource.es.EsExternalCatalog;
import org.apache.doris.datasource.hive.HMSExternalCatalog;
import org.apache.doris.datasource.iceberg.IcebergExternalCatalogFactory;
import org.apache.doris.datasource.jdbc.JdbcExternalCatalog;
-import org.apache.doris.datasource.lakesoul.LakeSoulExternalCatalog;
import org.apache.doris.datasource.maxcompute.MaxComputeExternalCatalog;
import org.apache.doris.datasource.paimon.PaimonExternalCatalogFactory;
import org.apache.doris.datasource.test.TestExternalCatalog;
@@ -108,8 +107,7 @@ public class CatalogFactory {
catalog = new MaxComputeExternalCatalog(catalogId, name,
resource, props, comment);
break;
case "lakesoul":
- catalog = new LakeSoulExternalCatalog(catalogId, name,
resource, props, comment);
- break;
+ throw new DdlException("Lakesoul catalog is no longer
supported");
case "test":
if (!FeConstants.runningUnitTest) {
throw new DdlException("test catalog is only for FE unit
test");
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulExternalCatalog.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulExternalCatalog.java
index 7f8fcfb599a..0d44e41dce9 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulExternalCatalog.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulExternalCatalog.java
@@ -22,7 +22,6 @@ import org.apache.doris.datasource.ExternalCatalog;
import org.apache.doris.datasource.InitCatalogLog;
import org.apache.doris.datasource.SessionContext;
-import com.dmetasoul.lakesoul.meta.DBManager;
import com.dmetasoul.lakesoul.meta.DBUtil;
import com.dmetasoul.lakesoul.meta.entity.PartitionInfo;
import com.dmetasoul.lakesoul.meta.entity.TableInfo;
@@ -33,11 +32,15 @@ import org.apache.logging.log4j.Logger;
import java.util.List;
import java.util.Map;
+/**
+ * @deprecated LakeSoul catalog support has been deprecated and will be
removed in a future version.
+ */
+@Deprecated
public class LakeSoulExternalCatalog extends ExternalCatalog {
private static final Logger LOG =
LogManager.getLogger(LakeSoulExternalCatalog.class);
- private DBManager lakesoulMetadataManager;
+ // private transient DBManager lakesoulMetadataManager;
private final Map<String, String> props;
@@ -52,25 +55,28 @@ public class LakeSoulExternalCatalog extends
ExternalCatalog {
@Override
protected List<String> listDatabaseNames() {
initLocalObjectsImpl();
- return lakesoulMetadataManager.listNamespaces();
+ // return lakesoulMetadataManager.listNamespaces();
+ return Lists.newArrayList();
}
@Override
public List<String> listTableNames(SessionContext ctx, String dbName) {
- makeSureInitialized();
- List<TableInfo> tifs =
lakesoulMetadataManager.getTableInfosByNamespace(dbName);
- List<String> tableNames = Lists.newArrayList();
- for (TableInfo item : tifs) {
- tableNames.add(item.getTableName());
- }
- return tableNames;
+ // makeSureInitialized();
+ // List<TableInfo> tifs =
lakesoulMetadataManager.getTableInfosByNamespace(dbName);
+ // List<String> tableNames = Lists.newArrayList();
+ // for (TableInfo item : tifs) {
+ // tableNames.add(item.getTableName());
+ // }
+ // return tableNames;
+ return Lists.newArrayList();
}
@Override
public boolean tableExist(SessionContext ctx, String dbName, String
tblName) {
- makeSureInitialized();
- TableInfo tableInfo =
lakesoulMetadataManager.getTableInfoByNameAndNamespace(tblName, dbName);
- return null != tableInfo;
+ // makeSureInitialized();
+ // TableInfo tableInfo =
lakesoulMetadataManager.getTableInfoByNameAndNamespace(tblName, dbName);
+ // return null != tableInfo;
+ return false;
}
@Override
@@ -86,17 +92,19 @@ public class LakeSoulExternalCatalog extends
ExternalCatalog {
System.setProperty(DBUtil.passwordKey,
props.get(DBUtil.passwordKey));
}
}
- lakesoulMetadataManager = new DBManager();
+ // lakesoulMetadataManager = new DBManager();
}
public TableInfo getLakeSoulTable(String dbName, String tblName) {
makeSureInitialized();
- return lakesoulMetadataManager.getTableInfoByNameAndNamespace(tblName,
dbName);
+ // return
lakesoulMetadataManager.getTableInfoByNameAndNamespace(tblName, dbName);
+ return null;
}
public List<PartitionInfo> listPartitionInfo(String tableId) {
makeSureInitialized();
- return lakesoulMetadataManager.getAllPartitionInfo(tableId);
+ // return lakesoulMetadataManager.getAllPartitionInfo(tableId);
+ return Lists.newArrayList();
}
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulExternalDatabase.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulExternalDatabase.java
index 32e389f52d3..c753397417c 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulExternalDatabase.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulExternalDatabase.java
@@ -21,6 +21,10 @@ import org.apache.doris.datasource.ExternalCatalog;
import org.apache.doris.datasource.ExternalDatabase;
import org.apache.doris.datasource.InitDatabaseLog;
+/**
+ * @deprecated LakeSoul catalog support has been deprecated and will be
removed in a future version.
+ */
+@Deprecated
public class LakeSoulExternalDatabase extends
ExternalDatabase<LakeSoulExternalTable> {
public LakeSoulExternalDatabase(ExternalCatalog extCatalog, long id,
String name, String remoteName) {
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulExternalTable.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulExternalTable.java
index e5e0447f1cb..22d2a94c092 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulExternalTable.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulExternalTable.java
@@ -50,6 +50,10 @@ import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
+/**
+ * @deprecated LakeSoul catalog support has been deprecated and will be
removed in a future version.
+ */
+@Deprecated
public class LakeSoulExternalTable extends ExternalTable {
private static final Logger LOG =
LogManager.getLogger(LakeSoulExternalTable.class);
public static final int LAKESOUL_TIMESTAMP_SCALE_MS = 6;
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulUtils.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulUtils.java
index b009c08371f..f9a1559bb3c 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulUtils.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/LakeSoulUtils.java
@@ -62,6 +62,10 @@ import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
+/**
+ * @deprecated LakeSoul catalog support has been deprecated and will be
removed in a future version.
+ */
+@Deprecated
public class LakeSoulUtils {
public static final String FILE_NAMES = "file_paths";
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/source/LakeSoulScanNode.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/source/LakeSoulScanNode.java
index 72366c46b91..a5e673a6cd5 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/source/LakeSoulScanNode.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/source/LakeSoulScanNode.java
@@ -60,6 +60,10 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
+/**
+ * @deprecated LakeSoul catalog support has been deprecated and will be
removed in a future version.
+ */
+@Deprecated
public class LakeSoulScanNode extends FileQueryScanNode {
private static final Logger LOG =
LogManager.getLogger(LakeSoulScanNode.class);
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/source/LakeSoulSplit.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/source/LakeSoulSplit.java
index 6a1f6ced065..404ca218620 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/source/LakeSoulSplit.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/lakesoul/source/LakeSoulSplit.java
@@ -25,6 +25,10 @@ import lombok.Data;
import java.util.List;
import java.util.Map;
+/**
+ * @deprecated LakeSoul catalog support has been deprecated and will be
removed in a future version.
+ */
+@Deprecated
@Data
public class LakeSoulSplit extends FileSplit {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]