From a4e69f7272ea2c99c6db552d6b7e9150a0e3ed00 Mon Sep 17 00:00:00 2001 From: Jibing-Li <64681310+Jibing-Li@users.noreply.github.com> Date: Wed, 27 Dec 2023 09:59:34 +0800 Subject: [PATCH] [improvement](statistics)Remove retry load when load stats cache fail (#28904) Remove retry load when load stats cache fail. This case usually happens when BE is down or BE OOM, retry doesn't work in these cases and may increase BE work load. --- .../ColumnStatisticsCacheLoader.java | 42 +------------------ .../doris/statistics/StatisticsCache.java | 4 -- 2 files changed, 2 insertions(+), 44 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 22f0cad9d00a8c..08a410b8599265 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 @@ -17,7 +17,6 @@ package org.apache.doris.statistics; -import org.apache.doris.catalog.Env; import org.apache.doris.catalog.TableIf; import org.apache.doris.common.ThreadPoolManager; import org.apache.doris.qe.InternalQueryExecutionException; @@ -64,7 +63,8 @@ private Optional loadFromStatsTable(StatisticsCacheKey key) { try { columnResults = StatisticsRepository.loadColStats(key.tableId, key.idxId, key.colName); } catch (InternalQueryExecutionException e) { - retryLoad(key); + LOG.info("Failed to load stats for table {} column {}. Reason:{}", + key.tableId, key.colName, e.getMessage()); return Optional.empty(); } ColumnStatistic columnStatistics; @@ -80,42 +80,4 @@ private Optional loadFromStatsTable(StatisticsCacheKey key) { return Optional.of(columnStatistics); } } - - private void retryLoad(StatisticsCacheKey key) { - singleThreadPool.submit(new RetryTask(key, 1)); - } - - private static class RetryTask implements Runnable { - StatisticsCacheKey key; - int retryTimes; - - public RetryTask(StatisticsCacheKey key, int retryTimes) { - this.key = key; - this.retryTimes = retryTimes; - } - - @Override - public void run() { - List columnResults = null; - try { - columnResults = StatisticsRepository.loadColStats(key.tableId, key.idxId, key.colName); - } catch (InternalQueryExecutionException e) { - if (this.retryTimes < StatisticConstants.LOAD_RETRY_TIMES) { - retryTimes++; - singleThreadPool.submit(this); - } - return; - } - ColumnStatistic columnStatistics; - try { - columnStatistics = StatisticsUtil.deserializeToColumnStatistics(columnResults); - } catch (Exception e) { - LOG.warn("Exception to deserialize column statistics", e); - return; - } - if (columnStatistics != null) { - Env.getCurrentEnv().getStatisticsCache().putCache(key, columnStatistics); - } - } - } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsCache.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsCache.java index d4b91b07364ebd..fbec9a60fa00e8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsCache.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/StatisticsCache.java @@ -39,9 +39,7 @@ import org.apache.logging.log4j.Logger; import java.time.Duration; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ThreadPoolExecutor; @@ -201,7 +199,6 @@ private void doPreHeat() { if (CollectionUtils.isEmpty(recentStatsUpdatedCols)) { return; } - Map keyToColStats = new HashMap<>(); for (ResultRow r : recentStatsUpdatedCols) { try { StatsId statsId = new StatsId(r); @@ -211,7 +208,6 @@ private void doPreHeat() { final StatisticsCacheKey k = new StatisticsCacheKey(tblId, idxId, colId); final ColumnStatistic c = ColumnStatistic.fromResultRow(r); - keyToColStats.put(k, c); putCache(k, c); } catch (Throwable t) { LOG.warn("Error when preheating stats cache", t);