This is an automated email from the ASF dual-hosted git repository.

kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new ab0f2f2e5f0 [minor](stats) Fix potential npe when loading stats #27200 
(#27241)
ab0f2f2e5f0 is described below

commit ab0f2f2e5f018e86bdd7aa919e66bf2db6d4945d
Author: AKIRA <33112463+kikyou1...@users.noreply.github.com>
AuthorDate: Mon Nov 20 18:43:03 2023 +0900

    [minor](stats) Fix potential npe when loading stats #27200 (#27241)
---
 .../statistics/ColumnStatisticsCacheLoader.java    |  5 ++-
 .../org/apache/doris/statistics/CacheTest.java     | 38 +++++++++++++++++-----
 2 files changed, 31 insertions(+), 12 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatisticsCacheLoader.java
 
b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatisticsCacheLoader.java
index 281a0e82502..22f0cad9d00 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatisticsCacheLoader.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/statistics/ColumnStatisticsCacheLoader.java
@@ -50,11 +50,10 @@ public class ColumnStatisticsCacheLoader extends 
StatisticsCacheLoader<Optional<
         }
         // Load from data source metadata
         try {
-            TableIf table = 
Env.getCurrentEnv().getCatalogMgr().getCatalog(key.catalogId)
-                    
.getDbOrMetaException(key.dbId).getTableOrMetaException(key.tableId);
+            TableIf table = StatisticsUtil.findTable(key.catalogId, key.dbId, 
key.tableId);
             columnStatistic = table.getColumnStatistic(key.colName);
         } catch (Exception e) {
-            LOG.warn(String.format("Exception to get column statistics by 
metadata. [Catalog:%d, DB:%d, Table:%d]",
+            LOG.debug(String.format("Exception to get column statistics by 
metadata. [Catalog:%d, DB:%d, Table:%d]",
                     key.catalogId, key.dbId, key.tableId), e);
         }
         return columnStatistic;
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/statistics/CacheTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/statistics/CacheTest.java
index 95ed5023e36..cde8d20177f 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/statistics/CacheTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/statistics/CacheTest.java
@@ -18,12 +18,17 @@
 package org.apache.doris.statistics;
 
 import org.apache.doris.catalog.Column;
+import org.apache.doris.catalog.DatabaseIf;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.catalog.PrimitiveType;
+import org.apache.doris.catalog.TableIf;
 import org.apache.doris.catalog.Type;
+import org.apache.doris.catalog.external.ExternalDatabase;
+import org.apache.doris.catalog.external.ExternalTable;
 import org.apache.doris.catalog.external.HMSExternalDatabase;
 import org.apache.doris.catalog.external.HMSExternalTable;
 import org.apache.doris.common.ThreadPoolManager;
+import org.apache.doris.datasource.CatalogIf;
 import org.apache.doris.datasource.CatalogMgr;
 import org.apache.doris.datasource.HMSExternalCatalog;
 import org.apache.doris.ha.FrontendNodeType;
@@ -57,6 +62,7 @@ import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Executor;
 import java.util.concurrent.ThreadPoolExecutor;
+import java.util.function.Function;
 
 public class CacheTest extends TestWithFeService {
 
@@ -229,20 +235,34 @@ public class CacheTest extends TestWithFeService {
             }
         };
 
+        new MockUp<CatalogMgr>() {
+            @Mock
+            public <E extends Exception> CatalogIf<? extends DatabaseIf<? 
extends TableIf>>
+                    getCatalogOrException(long id, Function<Long, E> e) throws 
E {
+                return catalog;
+            }
+        };
+
+        new MockUp<HMSExternalCatalog>() {
+            @Mock
+            public ExternalDatabase<? extends ExternalTable> 
getDbNullable(long dbId) {
+                return db;
+            }
+        };
+
+        new MockUp<HMSExternalDatabase>() {
+
+            @Mock
+            public HMSExternalTable getTableNullable(long tableId) {
+                return table;
+            }
+        };
+
         new Expectations() {
             {
                 env.getCatalogMgr();
                 result = mgr;
 
-                mgr.getCatalog(1);
-                result = catalog;
-
-                catalog.getDbOrMetaException(1);
-                result = db;
-
-                db.getTableOrMetaException(1);
-                result = table;
-
                 table.getColumnStatistic("col");
                 result = new ColumnStatistic(1, 2,
                         null, 3, 4, 5, 6, 7,


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to