You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2021/12/18 15:22:44 UTC
[hbase] branch master updated: HBASE-26580 The message of StoreTooBusy is confused (#3949)
This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new d399799 HBASE-26580 The message of StoreTooBusy is confused (#3949)
d399799 is described below
commit d399799c29fa4d485e664508c4f5f671d3140763
Author: zhengzhuobinzzb <zh...@gmail.com>
AuthorDate: Sat Dec 18 23:22:14 2021 +0800
HBASE-26580 The message of StoreTooBusy is confused (#3949)
Signed-off-by: Duo Zhang <zh...@apache.org>
Reviewed-by: Bryan Beaudreault <bb...@hubspot.com>
---
.../regionserver/throttle/StoreHotnessProtector.java | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/throttle/StoreHotnessProtector.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/throttle/StoreHotnessProtector.java
index b907aa6..7cb3a24 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/throttle/StoreHotnessProtector.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/throttle/StoreHotnessProtector.java
@@ -109,6 +109,8 @@ public class StoreHotnessProtector {
}
String tooBusyStore = null;
+ boolean aboveParallelThreadLimit = false;
+ boolean aboveParallelPrePutLimit = false;
for (Map.Entry<byte[], List<Cell>> e : familyMaps.entrySet()) {
Store store = this.region.getStore(e.getKey());
@@ -123,12 +125,16 @@ public class StoreHotnessProtector {
int preparePutCount = preparePutToStoreMap
.computeIfAbsent(e.getKey(), key -> new AtomicInteger())
.incrementAndGet();
- if (store.getCurrentParallelPutCount() > this.parallelPutToStoreThreadLimit
- || preparePutCount > this.parallelPreparePutToStoreThreadLimit) {
+ boolean storeAboveThread =
+ store.getCurrentParallelPutCount() > this.parallelPutToStoreThreadLimit;
+ boolean storeAbovePrePut = preparePutCount > this.parallelPreparePutToStoreThreadLimit;
+ if (storeAboveThread || storeAbovePrePut) {
tooBusyStore = (tooBusyStore == null ?
store.getColumnFamilyName() :
tooBusyStore + "," + store.getColumnFamilyName());
}
+ aboveParallelThreadLimit |= storeAboveThread;
+ aboveParallelPrePutLimit |= storeAbovePrePut;
if (LOG.isTraceEnabled()) {
LOG.trace(store.getColumnFamilyName() + ": preparePutCount=" + preparePutCount
@@ -137,10 +143,15 @@ public class StoreHotnessProtector {
}
}
- if (tooBusyStore != null) {
+ if (aboveParallelThreadLimit || aboveParallelPrePutLimit) {
String msg =
"StoreTooBusy," + this.region.getRegionInfo().getRegionNameAsString() + ":" + tooBusyStore
- + " Above parallelPutToStoreThreadLimit(" + this.parallelPutToStoreThreadLimit + ")";
+ + " Above "
+ + (aboveParallelThreadLimit ? "parallelPutToStoreThreadLimit("
+ + this.parallelPutToStoreThreadLimit + ")" : "")
+ + (aboveParallelThreadLimit && aboveParallelPrePutLimit ? " or " : "")
+ + (aboveParallelPrePutLimit ? "parallelPreparePutToStoreThreadLimit("
+ + this.parallelPreparePutToStoreThreadLimit + ")" : "");
LOG.trace(msg);
throw new RegionTooBusyException(msg);
}