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 <[email protected]>
AuthorDate: Sat Dec 18 23:22:14 2021 +0800
HBASE-26580 The message of StoreTooBusy is confused (#3949)
Signed-off-by: Duo Zhang <[email protected]>
Reviewed-by: Bryan Beaudreault <[email protected]>
---
.../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);
}