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 cb88334e34b8c53fe0234dab15e45516bf21ad31
Author: Mingyu Chen <[email protected]>
AuthorDate: Thu May 30 12:32:36 2024 +0800

    [fix](meta) fix catalog replay error (#35532)
    
    ```
    Caused by: java.lang.NullPointerException
        at 
java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936) 
~[?:1.8.0_301]
        at 
org.apache.doris.catalog.ResourceMgr.getResource(ResourceMgr.java:166) 
~[doris-fe.jar:1.2-SNAPSHOT]
        at 
org.apache.doris.datasource.CatalogProperty.catalogResource(CatalogProperty.java:67)
 ~[doris-fe.jar:1.2-SNAPSHOT]
        at 
org.apache.doris.datasource.CatalogProperty.getOrDefault(CatalogProperty.java:77)
 ~[doris-fe.jar:1.2-SNAPSHOT]
        at 
org.apache.doris.datasource.ExternalCatalog.setDefaultPropsIfMissing(ExternalCatalog.java:173)
 ~[doris-fe.jar:1.2-SNAPSHOT]
        at 
org.apache.doris.datasource.hive.HMSExternalCatalog.setDefaultPropsIfMissing(HMSExternalCatalog.java:238)
 ~[doris-fe.jar:1.2-SNAPSHOT]
        at 
org.apache.doris.datasource.ExternalCatalog.gsonPostProcess(ExternalCatalog.java:687)
 ~[doris-fe.jar:1.2-SNAPSHOT]
        at 
org.apache.doris.persist.gson.GsonUtils$PostProcessTypeAdapterFactory$1.read(GsonUtils.java:640)
 ~[doris-fe.jar:1.2-SNAPSHOT]
        at com.google.gson.TypeAdapter.fromJsonTree(TypeAdapter.java:299) 
~[gson-2.10.1.jar:?]
        at 
org.apache.doris.persist.gson.RuntimeTypeAdapterFactory$1.read(RuntimeTypeAdapterFactory.java:289)
 ~[doris-fe.jar:1.2-SNAPSHOT]
    ```
    
    Introduced from #33610.
    When read meta image, the `resource` maybe null, we should ignore it.
---
 fe/fe-core/src/main/java/org/apache/doris/catalog/ResourceMgr.java   | 5 +++++
 .../src/main/java/org/apache/doris/datasource/CatalogProperty.java   | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/ResourceMgr.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/ResourceMgr.java
index 93cb194c902..e6fac7f07d8 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/ResourceMgr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/ResourceMgr.java
@@ -163,6 +163,11 @@ public class ResourceMgr implements Writable {
     }
 
     public Resource getResource(String name) {
+        // nameToResource == null iff this is in replay thread
+        // just return null to ignore this.
+        if (nameToResource == null) {
+            return null;
+        }
         return nameToResource.get(name);
     }
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogProperty.java 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogProperty.java
index 536ab74b282..50aea847e8f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogProperty.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/CatalogProperty.java
@@ -61,7 +61,7 @@ public class CatalogProperty implements Writable {
     }
 
     private Resource catalogResource() {
-        if (catalogResource == null) {
+        if (!Strings.isNullOrEmpty(resource) && catalogResource == null) {
             synchronized (this) {
                 if (catalogResource == null) {
                     catalogResource = 
Env.getCurrentEnv().getResourceMgr().getResource(resource);


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

Reply via email to