diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/EsResource.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/EsResource.java index fa1a4a1182..8203a05112 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/EsResource.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/EsResource.java @@ -77,6 +77,10 @@ public class EsResource extends Resource { @SerializedName(value = "properties") private Map properties; + public EsResource() { + super(); + } + public EsResource(String name) { super(name, Resource.ResourceType.ES); properties = Maps.newHashMap(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/HMSResource.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/HMSResource.java index 4ccf2792bc..0a3b422fc1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/HMSResource.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/HMSResource.java @@ -44,6 +44,10 @@ public class HMSResource extends Resource { @SerializedName(value = "properties") private Map properties; + public HMSResource() { + super(); + } + public HMSResource(String name) { super(name, ResourceType.HMS); this.properties = Maps.newHashMap(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/HdfsResource.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/HdfsResource.java index 8ebd66c709..6d44170742 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/HdfsResource.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/HdfsResource.java @@ -54,6 +54,10 @@ public class HdfsResource extends Resource { @SerializedName(value = "properties") private Map properties; + public HdfsResource() { + super(); + } + public HdfsResource(String name) { super(name, Resource.ResourceType.HDFS); properties = Maps.newHashMap(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OdbcCatalogResource.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/OdbcCatalogResource.java index 152db3a176..dbe03ce4db 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OdbcCatalogResource.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OdbcCatalogResource.java @@ -65,7 +65,6 @@ public class OdbcCatalogResource extends Resource { @SerializedName(value = "configs") private Map configs; - // only for deep copy public OdbcCatalogResource() { super(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Resource.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Resource.java index 88d3786e13..6bb7a1b004 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Resource.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Resource.java @@ -111,6 +111,9 @@ public abstract class Resource implements Writable, GsonPostProcessable { lock.readLock().unlock(); } + // https://programmerr47.medium.com/gson-unsafe-problem-d1ff29d4696f + // Resource subclass also MUST define default ctor, otherwise when reloading object from json + // some not serialized field (i.e. `lock`) will be `null`. public Resource() { } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/S3Resource.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/S3Resource.java index 2013b4ff49..5bcb5123c6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/S3Resource.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/S3Resource.java @@ -70,10 +70,9 @@ public class S3Resource extends Resource { @SerializedName(value = "properties") private Map properties; - // for Gson fromJson - // TODO(plat1ko): other Resource subclass also MUST define default ctor, otherwise when reloading object from json - // some not serialized field (i.e. `lock`) will be `null`. - public S3Resource() {} + public S3Resource() { + super(); + } public S3Resource(String name) { super(name, ResourceType.S3); diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/SparkResource.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/SparkResource.java index 453a50ad11..704d8e512d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/SparkResource.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/SparkResource.java @@ -117,6 +117,11 @@ public class SparkResource extends Resource { @SerializedName(value = "envConfigs") private Map envConfigs; + + public SparkResource() { + super(); + } + public SparkResource(String name) { this(name, Maps.newHashMap(), null, null, Maps.newHashMap(), Maps.newHashMap()); }