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

commit 0c71b666d76667365d3d31bbc969f199a967243a
Author: Pxl <[email protected]>
AuthorDate: Mon Mar 4 16:58:53 2024 +0800

    [Bug](resource) fix npe on Resource read from json (#31723)
    
    fix npe on Resource read from json
---
 fe/fe-core/src/main/java/org/apache/doris/catalog/EsResource.java  | 4 ++++
 fe/fe-core/src/main/java/org/apache/doris/catalog/HMSResource.java | 4 ++++
 .../src/main/java/org/apache/doris/catalog/HdfsResource.java       | 4 ++++
 .../main/java/org/apache/doris/catalog/OdbcCatalogResource.java    | 1 -
 fe/fe-core/src/main/java/org/apache/doris/catalog/Resource.java    | 3 +++
 fe/fe-core/src/main/java/org/apache/doris/catalog/S3Resource.java  | 7 +++----
 .../src/main/java/org/apache/doris/catalog/SparkResource.java      | 5 +++++
 7 files changed, 23 insertions(+), 5 deletions(-)

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 fa1a4a11822..8203a051129 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<String, String> 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 4ccf2792bc1..0a3b422fc1a 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<String, String> 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 8ebd66c7093..6d441707420 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<String, String> 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 152db3a1769..dbe03ce4db0 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<String, String> 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 88d3786e136..6bb7a1b0043 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 2013b4ff49c..5bcb5123c64 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<String, String> 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 453a50ad115..704d8e512d7 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<String, String> envConfigs;
 
+
+    public SparkResource() {
+        super();
+    }
+
     public SparkResource(String name) {
         this(name, Maps.newHashMap(), null, null, Maps.newHashMap(), 
Maps.newHashMap());
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to