This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 83cdd44d6ba branch-2.1: [fix](catalog) synchronize reset methods in
catalog classes and remove Lombok annotations (#53168)
83cdd44d6ba is described below
commit 83cdd44d6bab2691ec2c97daa03db19fb49fe4f8
Author: zy-kkk <[email protected]>
AuthorDate: Wed Jul 16 12:28:50 2025 +0800
branch-2.1: [fix](catalog) synchronize reset methods in catalog classes and
remove Lombok annotations (#53168)
pick (#51787)
---
.../apache/doris/datasource/ExternalCatalog.java | 36 +++++++++++++++++++---
.../apache/doris/datasource/ExternalDatabase.java | 2 +-
.../org/apache/doris/datasource/ExternalTable.java | 34 ++++++++++++++++++--
.../doris/datasource/hive/HMSExternalCatalog.java | 2 +-
.../doris/datasource/jdbc/JdbcExternalCatalog.java | 8 +++--
.../datasource/iceberg/CreateIcebergTableTest.java | 4 +--
.../paimon/PaimonExternalCatalogTest.java | 2 +-
.../apache/doris/planner/HiveTableSinkTest.java | 2 +-
8 files changed, 74 insertions(+), 16 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java
index 6052be35f57..527d08f94e0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalCatalog.java
@@ -71,7 +71,6 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.gson.annotations.SerializedName;
-import lombok.Data;
import org.apache.commons.lang3.NotImplementedException;
import org.apache.commons.lang3.StringUtils;
import org.apache.hadoop.conf.Configuration;
@@ -98,7 +97,6 @@ import java.util.stream.Collectors;
/**
* The abstract class for all types of external catalogs.
*/
-@Data
public abstract class ExternalCatalog
implements CatalogIf<ExternalDatabase<? extends ExternalTable>>,
Writable, GsonPostProcessable {
private static final Logger LOG =
LogManager.getLogger(ExternalCatalog.class);
@@ -337,7 +335,7 @@ public abstract class ExternalCatalog
// check if all required properties are set when creating catalog
public void checkProperties() throws DdlException {
// check refresh parameter of catalog
- Map<String, String> properties = getCatalogProperty().getProperties();
+ Map<String, String> properties = catalogProperty.getProperties();
if (properties.containsKey(CatalogMgr.METADATA_REFRESH_INTERVAL_SEC)) {
try {
Integer metadataRefreshIntervalSec = Integer.valueOf(
@@ -368,7 +366,7 @@ public abstract class ExternalCatalog
* isDryRun: if true, it will try to create the custom access controller,
but will not add it to the access manager.
*/
public void initAccessController(boolean isDryRun) {
- Map<String, String> properties = getCatalogProperty().getProperties();
+ Map<String, String> properties = catalogProperty.getProperties();
// 1. get access controller class name
String className =
properties.getOrDefault(CatalogMgr.ACCESS_CONTROLLER_CLASS_PROP, "");
if (Strings.isNullOrEmpty(className)) {
@@ -534,7 +532,7 @@ public abstract class ExternalCatalog
* @param invalidCache if {@code true}, the catalog cache will be
invalidated
* and reloaded during the refresh process.
*/
- public void resetToUninitialized(boolean invalidCache) {
+ public synchronized void resetToUninitialized(boolean invalidCache) {
this.objectCreated = false;
this.initialized = false;
synchronized (this.propLock) {
@@ -986,6 +984,14 @@ public abstract class ExternalCatalog
dbNameToId.put(ClusterNamespace.getNameFromFullName(db.getFullName()),
db.getId());
}
+ /**
+ * Set the initialized status for testing purposes only.
+ * This method should only be used in test cases.
+ */
+ public void setInitializedForTest(boolean initialized) {
+ this.initialized = initialized;
+ }
+
@Override
public void createDb(CreateDbStmt stmt) throws DdlException {
makeSureInitialized();
@@ -1182,4 +1188,24 @@ public abstract class ExternalCatalog
public ThreadPoolExecutor getThreadPoolExecutor() {
return threadPoolWithPreAuth;
}
+
+ public CatalogProperty getCatalogProperty() {
+ return catalogProperty;
+ }
+
+ public Optional<Boolean> getUseMetaCache() {
+ return useMetaCache;
+ }
+
+ public Map<Pair<String, String>, String> getTableAutoAnalyzePolicy() {
+ return tableAutoAnalyzePolicy;
+ }
+
+ public TransactionManager getTransactionManager() {
+ return transactionManager;
+ }
+
+ public ThreadPoolExecutor getThreadPoolWithPreAuth() {
+ return threadPoolWithPreAuth;
+ }
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalDatabase.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalDatabase.java
index 2f547351da6..8608a578761 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalDatabase.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalDatabase.java
@@ -132,7 +132,7 @@ public abstract class ExternalDatabase<T extends
ExternalTable>
}
}
- public void setUnInitialized(boolean invalidCache) {
+ public synchronized void setUnInitialized(boolean invalidCache) {
this.initialized = false;
this.invalidCacheInInit = invalidCache;
if (extCatalog.getUseMetaCache().isPresent()) {
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalTable.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalTable.java
index 82609c62e58..eb28dc94468 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalTable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/ExternalTable.java
@@ -45,7 +45,6 @@ import org.apache.doris.thrift.TTableDescriptor;
import com.google.common.base.Objects;
import com.google.common.collect.Lists;
import com.google.gson.annotations.SerializedName;
-import lombok.Getter;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.NotImplementedException;
import org.apache.logging.log4j.LogManager;
@@ -65,7 +64,6 @@ import java.util.stream.Collectors;
* External table represent tables that are not self-managed by Doris.
* Such as tables from hive, iceberg, es, etc.
*/
-@Getter
public class ExternalTable implements TableIf, Writable, GsonPostProcessable {
private static final Logger LOG =
LogManager.getLogger(ExternalTable.class);
@@ -479,4 +477,36 @@ public class ExternalTable implements TableIf, Writable,
GsonPostProcessable {
public int hashCode() {
return Objects.hashCode(name, db);
}
+
+ public long getSchemaUpdateTime() {
+ return schemaUpdateTime;
+ }
+
+ public long getDbId() {
+ return dbId;
+ }
+
+ public boolean isObjectCreated() {
+ return objectCreated;
+ }
+
+ public ExternalCatalog getCatalog() {
+ return catalog;
+ }
+
+ public ExternalDatabase getDb() {
+ return db;
+ }
+
+ public long getTimestamp() {
+ return timestamp;
+ }
+
+ public String getDbName() {
+ return dbName;
+ }
+
+ public TableAttributes getTableAttributes() {
+ return tableAttributes;
+ }
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HMSExternalCatalog.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HMSExternalCatalog.java
index 73598adfcaf..45eec9d6da3 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HMSExternalCatalog.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HMSExternalCatalog.java
@@ -213,7 +213,7 @@ public class HMSExternalCatalog extends ExternalCatalog {
}
@Override
- public void resetToUninitialized(boolean invalidCache) {
+ public synchronized void resetToUninitialized(boolean invalidCache) {
super.resetToUninitialized(invalidCache);
if (metadataOps != null) {
metadataOps.close();
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/JdbcExternalCatalog.java
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/JdbcExternalCatalog.java
index bbe43ce1fee..594b2cebceb 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/JdbcExternalCatalog.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/JdbcExternalCatalog.java
@@ -49,7 +49,6 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.protobuf.ByteString;
-import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -62,7 +61,6 @@ import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
-@Getter
public class JdbcExternalCatalog extends ExternalCatalog {
private static final Logger LOG =
LogManager.getLogger(JdbcExternalCatalog.class);
@@ -124,7 +122,7 @@ public class JdbcExternalCatalog extends ExternalCatalog {
}
@Override
- public void resetToUninitialized(boolean invalidCache) {
+ public synchronized void resetToUninitialized(boolean invalidCache) {
super.resetToUninitialized(invalidCache);
this.identifierMapping = new JdbcIdentifierMapping(
(Env.isTableNamesCaseInsensitive() ||
Env.isStoredTableNamesLowerCase()),
@@ -297,6 +295,10 @@ public class JdbcExternalCatalog extends ExternalCatalog {
return jdbcClient.getColumnsFromJdbc(remoteDbName, remoteTblName);
}
+ public IdentifierMapping getIdentifierMapping() {
+ return identifierMapping;
+ }
+
@Override
public void checkWhenCreating() throws DdlException {
super.checkWhenCreating();
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/datasource/iceberg/CreateIcebergTableTest.java
b/fe/fe-core/src/test/java/org/apache/doris/datasource/iceberg/CreateIcebergTableTest.java
index 2300ece6253..45fe7738783 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/datasource/iceberg/CreateIcebergTableTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/datasource/iceberg/CreateIcebergTableTest.java
@@ -72,7 +72,7 @@ public class CreateIcebergTableTest {
if (icebergCatalog.getUseMetaCache().get()) {
icebergCatalog.makeSureInitialized();
} else {
- icebergCatalog.setInitialized(true);
+ icebergCatalog.setInitializedForTest(true);
}
// create db
@@ -82,7 +82,7 @@ public class CreateIcebergTableTest {
if (icebergCatalog.getUseMetaCache().get()) {
icebergCatalog.makeSureInitialized();
} else {
- icebergCatalog.setInitialized(true);
+ icebergCatalog.setInitializedForTest(true);
}
IcebergExternalDatabase db = new
IcebergExternalDatabase(icebergCatalog, 1L, dbName, dbName);
icebergCatalog.addDatabaseForTest(db);
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/datasource/paimon/PaimonExternalCatalogTest.java
b/fe/fe-core/src/test/java/org/apache/doris/datasource/paimon/PaimonExternalCatalogTest.java
index 35dd64515b6..da66b3c5ba9 100644
---
a/fe/fe-core/src/test/java/org/apache/doris/datasource/paimon/PaimonExternalCatalogTest.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/datasource/paimon/PaimonExternalCatalogTest.java
@@ -31,7 +31,7 @@ public class PaimonExternalCatalogTest {
HashMap<String, String> props = new HashMap<>();
props.put("warehouse", "not_exist");
PaimonExternalCatalog catalog = new PaimonFileExternalCatalog(1,
"name", "resource", props, "comment");
- catalog.setInitialized(true);
+ catalog.setInitializedForTest(true);
try {
catalog.getPaimonTable("dbName", "tblName");
diff --git
a/fe/fe-core/src/test/java/org/apache/doris/planner/HiveTableSinkTest.java
b/fe/fe-core/src/test/java/org/apache/doris/planner/HiveTableSinkTest.java
index b57bbcb51a2..602b2c8a18a 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/planner/HiveTableSinkTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/planner/HiveTableSinkTest.java
@@ -88,7 +88,7 @@ public class HiveTableSinkTest {
mockDifferLocationTable(location);
HMSExternalCatalog hmsExternalCatalog = new HMSExternalCatalog();
- hmsExternalCatalog.setInitialized(true);
+ hmsExternalCatalog.setInitializedForTest(true);
HMSExternalDatabase db = new
HMSExternalDatabase(hmsExternalCatalog, 10000, "hive_db1", "hive_db1");
HMSExternalTable tbl = new HMSExternalTable(10001, "hive_tbl1",
"hive_db1", hmsExternalCatalog, db);
HiveTableSink hiveTableSink = new HiveTableSink(tbl);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]