From cb6d7b6c98ea58450668d1c507982030eb525e8e Mon Sep 17 00:00:00 2001 From: Jibing-Li <64681310+Jibing-Li@users.noreply.github.com> Date: Wed, 19 Jun 2024 13:54:15 +0800 Subject: [PATCH] [fix](statistics)Fix AnalysisTaskExecutor unit test timeout. (#36456) Deencapsulation.getField sometime doesn't work as expected, which may cause FE unit test timeout. Add get function in source code to make it easier. --- .../org/apache/doris/statistics/AnalysisTaskExecutor.java | 5 +++++ .../apache/doris/statistics/AnalysisTaskExecutorTest.java | 7 ++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisTaskExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisTaskExecutor.java index 3bdccaca047954..5277d8025fc770 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisTaskExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisTaskExecutor.java @@ -105,4 +105,9 @@ public void clear() { executors.getQueue().clear(); taskQueue.clear(); } + + // For unit test only. + public BlockingQueue getTaskQueue() { + return taskQueue; + } } diff --git a/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisTaskExecutorTest.java b/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisTaskExecutorTest.java index 5698f0e9b20e63..cef9c483f0c261 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisTaskExecutorTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/statistics/AnalysisTaskExecutorTest.java @@ -44,7 +44,6 @@ import java.util.Collections; import java.util.List; import java.util.Map; -import java.util.concurrent.BlockingQueue; import java.util.concurrent.atomic.AtomicBoolean; public class AnalysisTaskExecutorTest extends TestWithFeService { @@ -104,14 +103,12 @@ public boolean cancel(String msg) { OlapAnalysisTask analysisJob = new OlapAnalysisTask(analysisJobInfo); AnalysisTaskExecutor analysisTaskExecutor = new AnalysisTaskExecutor(1); - BlockingQueue b = Deencapsulation.getField(analysisTaskExecutor, "taskQueue"); AnalysisTaskWrapper analysisTaskWrapper = new AnalysisTaskWrapper(analysisTaskExecutor, analysisJob); Deencapsulation.setField(analysisTaskWrapper, "startTime", 5); - b.put(analysisTaskWrapper); + analysisTaskExecutor.putJob(analysisTaskWrapper); analysisTaskExecutor.tryToCancel(); Assertions.assertTrue(cancelled.get()); - Assertions.assertTrue(b.isEmpty()); - + Assertions.assertEquals(0, analysisTaskExecutor.getTaskQueue().size()); } @Test