You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by jo...@apache.org on 2022/09/19 21:11:45 UTC
[impala] 01/03: IMPALA-11573: Certain methods used by the replanning feature can be improved
This is an automated email from the ASF dual-hosted git repository.
joemcdonnell pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/impala.git
commit 17ee89f3db74fce1045ea9bd8e9f9fe727bea70e
Author: Qifan Chen <qc...@cloudera.com>
AuthorDate: Fri Sep 9 18:29:20 2022 -0400
IMPALA-11573: Certain methods used by the replanning feature can be improved
This patch improves certain methods used by the replan feature
(IMPALA-10992) so that they can be called by the external frontend
component in Hive. Specifically, the declaration of these methods
becomes public static, and the initialization of a static data
member checks whether the dependent object exists.
Testing:
1. Run unit tests;
2. Run "core" tests.
Change-Id: I334523f86e4292e9591306179eb1ab43be316c99
Reviewed-on: http://gerrit.cloudera.org:8080/18968
Reviewed-by: Impala Public Jenkins <im...@cloudera.com>
Tested-by: Quanlong Huang <hu...@gmail.com>
---
.../main/java/org/apache/impala/service/Frontend.java | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/fe/src/main/java/org/apache/impala/service/Frontend.java b/fe/src/main/java/org/apache/impala/service/Frontend.java
index f2044377e..99e2ae7f3 100644
--- a/fe/src/main/java/org/apache/impala/service/Frontend.java
+++ b/fe/src/main/java/org/apache/impala/service/Frontend.java
@@ -231,7 +231,8 @@ public class Frontend {
// Maximum number of times to retry a query if it fails due to inconsistent metadata.
private static final int INCONSISTENT_METADATA_NUM_RETRIES =
- BackendConfig.INSTANCE.getLocalCatalogMaxFetchRetries();
+ (BackendConfig.INSTANCE != null) ?
+ BackendConfig.INSTANCE.getLocalCatalogMaxFetchRetries() : 0;
// Maximum number of threads used to check authorization for the user when executing
// show tables/databases.
@@ -1762,7 +1763,7 @@ public class Frontend {
*
* Also imposes the artificial two-executor groups for testing when needed.
*/
- private List<TExecutorGroupSet> setupThresholdsForExecutorGroupSets(
+ public static List<TExecutorGroupSet> setupThresholdsForExecutorGroupSets(
List<TExecutorGroupSet> executorGroupSets, String request_pool,
boolean default_executor_group, boolean test_replan) throws ImpalaException {
RequestPoolService poolService = RequestPoolService.getInstance();
@@ -1854,7 +1855,7 @@ public class Frontend {
// Only the following types of statements are considered auto scalable since each
// can be planned by the distributed planner utilizing the number of executors in
// an executor group as input.
- private boolean canStmtBeAutoScaled(TStmtType type) {
+ public static boolean canStmtBeAutoScaled(TStmtType type) {
return type == TStmtType.EXPLAIN || type == TStmtType.QUERY || type == TStmtType.DML;
}
@@ -1879,11 +1880,11 @@ public class Frontend {
default_executor_group = e.getExec_group_name_prefix() == null
|| e.getExec_group_name_prefix().isEmpty();
}
-
- List<TExecutorGroupSet> executorGroupSetsToUse = setupThresholdsForExecutorGroupSets(
- originalExecutorGroupSets, queryOptions.getRequest_pool(), default_executor_group,
- enable_replan
- && (RuntimeEnv.INSTANCE.isTestEnv() || queryOptions.isTest_replan()));
+ List<TExecutorGroupSet> executorGroupSetsToUse =
+ Frontend.setupThresholdsForExecutorGroupSets(originalExecutorGroupSets,
+ queryOptions.getRequest_pool(), default_executor_group,
+ enable_replan
+ && (RuntimeEnv.INSTANCE.isTestEnv() || queryOptions.isTest_replan()));
int num_executor_group_sets = executorGroupSetsToUse.size();
if (num_executor_group_sets == 0) {
@@ -1938,7 +1939,7 @@ public class Frontend {
} else if (!enable_replan) {
reason = "query option 'enable_replan' is false";
break;
- } else if (!canStmtBeAutoScaled(req.stmt_type)) {
+ } else if (!Frontend.canStmtBeAutoScaled(req.stmt_type)) {
reason = "query is not auto-scalable";
break;
}