HBASE-25212 Optionally abort requests in progress after deciding a region should...
commitc98e993b238f527fb8cdc7f8a03a3555bb1dc74a
authorAndrew Purtell <apurtell@apache.org>
Tue, 3 Nov 2020 23:20:27 +0000 (3 15:20 -0800)
committerGitHub <noreply@github.com>
Tue, 3 Nov 2020 23:20:27 +0000 (3 15:20 -0800)
treea5bf1fd7130425af3f8ed78716be4e63eff3ced6
parent1eceab69b5d5e6977861b482fdd300d47e2807fc
HBASE-25212 Optionally abort requests in progress after deciding a region should close (#2574)

If hbase.regionserver.close.wait.abort is set to true, interrupt RPC
handler threads holding the region close lock.

Until requests in progress can be aborted, wait on the region close lock for
a configurable interval (specified by hbase.regionserver.close.wait.time.ms,
default 60000 (1 minute)). If we have failed to acquire the close lock after
this interval elapses, if allowed (also specified by
hbase.regionserver.close.wait.abort), abort the regionserver.

We will attempt to interrupt any running handlers every
hbase.regionserver.close.wait.interval.ms (default 10000 (10 seconds)) until
either the close lock is acquired or we reach the maximum wait time.

Define a subset of region operations as interruptible. Track threads holding
the close lock transiting those operations. Set the thread interrupt status
of tracked threads when trying to close the region. Use the thread interrupt
status where safe to break out of request processing.

Signed-off-by: Bharath Vissapragada <bharathv@apache.org>
Signed-off-by: Duo Zhang <zhangduo@apache.org>
Signed-off-by: Reid Chan <reidchan@apache.org>
Signed-off-by: Viraj Jasani <vjasani@apache.org>
14 files changed:
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/Region.java
hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.java
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.java
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegion.java
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.java
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.java
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.java
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionInterrupt.java [new file with mode: 0644]
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestWALLockup.java
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.java
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestFSHLog.java
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/WALDurabilityTestBase.java