This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 8fd27a852c [fix](transaction) fix profile null exception cause txn stuck (#24813) 8fd27a852c is described below commit 8fd27a852cfdfc268a0cd935916dc518ba94e2b5 Author: yujun <yu.jun.re...@gmail.com> AuthorDate: Sun Sep 24 23:46:38 2023 +0800 [fix](transaction) fix profile null exception cause txn stuck (#24813) --- .../src/main/java/org/apache/doris/common/profile/Profile.java | 5 +++-- .../main/java/org/apache/doris/common/util/RuntimeProfile.java | 5 ++--- .../main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java | 4 +++- .../main/java/org/apache/doris/load/loadv2/BulkLoadJob.java | 2 +- fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java | 3 ++- .../org/apache/doris/transaction/DatabaseTransactionMgr.java | 10 +++++++--- 6 files changed, 18 insertions(+), 11 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/profile/Profile.java b/fe/fe-core/src/main/java/org/apache/doris/common/profile/Profile.java index 7f2b7a154c..bc7250ad2f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/profile/Profile.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/profile/Profile.java @@ -61,7 +61,8 @@ public class Profile { executionProfile.addToProfileAsChild(rootProfile); } - public synchronized void update(long startTime, Map<String, String> summaryInfo, boolean isFinished) { + public synchronized void update(long startTime, Map<String, String> summaryInfo, boolean isFinished, + boolean isSimpleProfile) { if (this.isFinished) { return; } @@ -70,7 +71,7 @@ public class Profile { executionProfile.update(startTime, isFinished); } rootProfile.computeTimeInProfile(); - rootProfile.setProfileLevel(); + rootProfile.setProfileLevel(isSimpleProfile); ProfileManager.getInstance().pushProfile(rootProfile); this.isFinished = isFinished; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/RuntimeProfile.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/RuntimeProfile.java index 42b0f46f1d..9f1bdb96b5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/util/RuntimeProfile.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/RuntimeProfile.java @@ -20,7 +20,6 @@ package org.apache.doris.common.util; import org.apache.doris.common.Pair; import org.apache.doris.common.Reference; import org.apache.doris.common.profile.SummaryProfile; -import org.apache.doris.qe.ConnectContext; import org.apache.doris.thrift.TCounter; import org.apache.doris.thrift.TRuntimeProfileNode; import org.apache.doris.thrift.TRuntimeProfileTree; @@ -689,8 +688,8 @@ public class RuntimeProfile { computeTimeInProfile(this.counterTotalTime.getValue()); } - public void setProfileLevel() { - this.enableSimplyProfile = ConnectContext.get().getSessionVariable().getEnableSimplyProfile(); + public void setProfileLevel(boolean isSimpleProfile) { + this.enableSimplyProfile = isSimpleProfile; } private void computeTimeInProfile(long total) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java index 6dd8675b3b..d049e0f508 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/BrokerLoadJob.java @@ -48,6 +48,7 @@ import org.apache.doris.load.EtlJobType; import org.apache.doris.load.FailMsg; import org.apache.doris.qe.ConnectContext; import org.apache.doris.qe.OriginStatement; +import org.apache.doris.qe.SessionVariable; import org.apache.doris.service.FrontendOptions; import org.apache.doris.thrift.TUniqueId; import org.apache.doris.transaction.BeginTransactionException; @@ -321,7 +322,8 @@ public class BrokerLoadJob extends BulkLoadJob { if (!enableProfile) { return; } - jobProfile.update(createTimestamp, getSummaryInfo(true), true); + jobProfile.update(createTimestamp, getSummaryInfo(true), true, + Boolean.valueOf(sessionVariables.getOrDefault(SessionVariable.ENABLE_SIMPLY_PROFILE, "true"))); } private Map<String, String> getSummaryInfo(boolean isFinished) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/BulkLoadJob.java b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/BulkLoadJob.java index a6c5b012e0..d5b173d82f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/BulkLoadJob.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/loadv2/BulkLoadJob.java @@ -88,7 +88,7 @@ public abstract class BulkLoadJob extends LoadJob { // sessionVariable's name -> sessionVariable's value // we persist these sessionVariables due to the session is not available when replaying the job. - private Map<String, String> sessionVariables = Maps.newHashMap(); + protected Map<String, String> sessionVariables = Maps.newHashMap(); public BulkLoadJob(EtlJobType jobType) { super(jobType); diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java index 6b30fc58e2..e0e68180bd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/StmtExecutor.java @@ -885,7 +885,8 @@ public class StmtExecutor { if (!context.getSessionVariable().enableProfile()) { return; } - profile.update(context.startTime, getSummaryInfo(isFinished), isFinished); + profile.update(context.startTime, getSummaryInfo(isFinished), isFinished, + context.getSessionVariable().enableSimplyProfile); } // Analyze one statement to structure in memory. diff --git a/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java b/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java index bbf847d9b2..f7168b0dd3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java @@ -699,7 +699,11 @@ public class DatabaseTransactionMgr { } finally { writeUnlock(); // after state transform - transactionState.afterStateTransform(TransactionStatus.COMMITTED, txnOperated); + try { + transactionState.afterStateTransform(TransactionStatus.COMMITTED, txnOperated); + } catch (Throwable e) { + LOG.warn("afterStateTransform txn {} failed. exception: ", transactionState, e); + } } // update nextVersion because of the failure of persistent transaction resulting in error version @@ -1064,8 +1068,8 @@ public class DatabaseTransactionMgr { writeUnlock(); try { transactionState.afterStateTransform(TransactionStatus.VISIBLE, txnOperated); - } catch (UserException e) { - LOG.warn("afterStateTransform txn {} failed. msg: {}", transactionId, e.getMessage()); + } catch (Throwable e) { + LOG.warn("afterStateTransform txn {} failed. exception: ", transactionState, e); } } updateCatalogAfterVisible(transactionState, db); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org