apurtell commented on a change in pull request #2574:
URL: https://github.com/apache/hbase/pull/2574#discussion_r512165464
##########
File path:
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
##########
@@ -1679,22 +1688,82 @@ public void setTimeoutForWriteLock(long
timeoutForWriteLock) {
}
}
- if (timeoutForWriteLock == null
- || timeoutForWriteLock == Long.MAX_VALUE) {
- // block waiting for the lock for closing
- lock.writeLock().lock(); // FindBugs: Complains
UL_UNRELEASED_LOCK_EXCEPTION_PATH but seems fine
+ // Set the closing flag
+ // From this point new arrivals at the region lock will get NSRE.
+
+ this.closing.set(true);
+ LOG.info("Closing region {}", this);
+
+ // Acquire the close lock
+
+ // The configuration parameter CLOSE_WAIT_ABORT is overloaded to enable
both
+ // the new regionserver abort condition and interrupts for running
requests.
+ // If CLOSE_WAIT_ABORT is not enabled there is no change from earlier
behavior,
+ // we will not attempt to interrupt threads servicing requests nor crash
out
+ // the regionserver if something remains stubborn.
+
+ boolean canAbort = conf.getBoolean(CLOSE_WAIT_ABORT,
DEFAULT_CLOSE_WAIT_ABORT);
+ boolean useTimedWait = false;
+ if (timeoutForWriteLock == null || timeoutForWriteLock == Long.MAX_VALUE) {
+ if (canAbort) {
+ timeoutForWriteLock = conf.getLong(CLOSE_WAIT_TIME,
DEFAULT_CLOSE_WAIT_TIME);
+ useTimedWait = true;
+ }
} else {
+ // convert legacy use of timeoutForWriteLock in seconds to new use in
millis
+ timeoutForWriteLock = TimeUnit.SECONDS.toMillis(timeoutForWriteLock);
+ useTimedWait = true;
+ }
+ if (LOG.isDebugEnabled()) {
+ LOG.debug((useTimedWait ? "Time limited wait" : "Waiting") + " for close
lock on " + this);
Review comment:
Ok
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]