From 0bcc1771f6d2c0915a09a2229b9af30b07126fc3 Mon Sep 17 00:00:00 2001 From: Mingyu Chen Date: Sun, 14 Jul 2024 18:50:23 +0800 Subject: [PATCH] [fix](fe) fix several blocking bugs #37756 (#37758) bp #37756 --- .../org/apache/doris/analysis/FunctionCallExpr.java | 1 - .../org/apache/doris/qe/MasterCatalogExecutor.java | 13 +++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java index 3f92c9596705af..e588e8ca717edc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java @@ -2364,7 +2364,6 @@ public int hashCode() { int result = super.hashCode(); result = 31 * result + Objects.hashCode(opcode); result = 31 * result + Objects.hashCode(fnName); - result = 31 * result + Objects.hashCode(fnParams); return result; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/MasterCatalogExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/MasterCatalogExecutor.java index a1e557b526b5a2..293413e97084c5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/MasterCatalogExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/MasterCatalogExecutor.java @@ -66,11 +66,20 @@ public void forward(long catalogId, long dbId) throws Exception { boolean isReturnToPool = false; try { TInitExternalCtlMetaResult result = client.initExternalCtlMeta(request); - Env.getCurrentEnv().getJournalObservable().waitOn(result.maxJournalId, waitTimeoutMs); if (!result.getStatus().equalsIgnoreCase(STATUS_OK)) { throw new UserException(result.getStatus()); + } else { + // DO NOT wait on journal replayed, this may cause deadlock. + // 1. hold table read lock + // 2. wait on journal replayed + // 3. previous journal (eg, txn journal) replayed need to hold table write lock + // 4. deadlock + // But no waiting on journal replayed may cause some request on non-master FE failed for some time. + // There is no good solution for this. + // In feature version, this whole process is refactored, so we temporarily remove this waiting. + // Env.getCurrentEnv().getJournalObservable().waitOn(result.maxJournalId, timeoutMs); + isReturnToPool = true; } - isReturnToPool = true; } catch (Exception e) { LOG.warn("Failed to finish forward init operation, please try again. ", e); throw e;