This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 21db960f973 [branch-2.0](log) add try lock db failed log #34503
(#34504)
21db960f973 is described below
commit 21db960f97351cff8caeb768351aea00fa509610
Author: yujun <[email protected]>
AuthorDate: Wed May 8 14:23:51 2024 +0800
[branch-2.0](log) add try lock db failed log #34503 (#34504)
---
.../src/main/java/org/apache/doris/catalog/Database.java | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java
index 62d2e0bd6d6..9c17f554a8d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java
@@ -29,6 +29,8 @@ import org.apache.doris.common.io.Text;
import org.apache.doris.common.io.Writable;
import org.apache.doris.common.util.DebugUtil;
import org.apache.doris.common.util.PropertyAnalyzer;
+import org.apache.doris.common.util.QueryableReentrantReadWriteLock;
+import org.apache.doris.common.util.Util;
import org.apache.doris.datasource.CatalogIf;
import org.apache.doris.persist.CreateTableInfo;
import org.apache.doris.persist.gson.GsonUtils;
@@ -57,7 +59,6 @@ import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.stream.Collectors;
/**
@@ -84,7 +85,7 @@ public class Database extends MetaObject implements Writable,
DatabaseIf<Table>
private volatile String fullQualifiedName;
@SerializedName(value = "clusterName")
private String clusterName;
- private ReentrantReadWriteLock rwLock;
+ private QueryableReentrantReadWriteLock rwLock;
// table family group map
private Map<Long, Table> idToTable;
@@ -134,7 +135,7 @@ public class Database extends MetaObject implements
Writable, DatabaseIf<Table>
if (this.fullQualifiedName == null) {
this.fullQualifiedName = "";
}
- this.rwLock = new ReentrantReadWriteLock(true);
+ this.rwLock = new QueryableReentrantReadWriteLock(true);
this.idToTable = Maps.newConcurrentMap();
this.nameToTable = Maps.newConcurrentMap();
this.lowerCaseToTableName = Maps.newConcurrentMap();
@@ -175,7 +176,14 @@ public class Database extends MetaObject implements
Writable, DatabaseIf<Table>
public boolean tryWriteLock(long timeout, TimeUnit unit) {
try {
- return this.rwLock.writeLock().tryLock(timeout, unit);
+ if (!this.rwLock.writeLock().tryLock(timeout, unit)) {
+ Thread owner = this.rwLock.getOwner();
+ if (owner != null) {
+ LOG.info("database[{}] lock is held by: {}",
getFullName(), Util.dumpThread(owner, 10));
+ }
+ return false;
+ }
+ return true;
} catch (InterruptedException e) {
LOG.warn("failed to try write lock at db[" + id + "]", e);
return false;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]