HBASE-10545 RS Hangs waiting on region to close on shutdown; has to timeout before can go down
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1568707 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
aa111b80b7
commit
f3072b07bf
|
@ -877,13 +877,14 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa
|
|||
} else if (this.stopping) {
|
||||
boolean allUserRegionsOffline = areAllUserRegionsOffline();
|
||||
if (allUserRegionsOffline) {
|
||||
// Set stopped if no requests since last time we went around the loop.
|
||||
// The remaining meta regions will be closed on our way out.
|
||||
if (oldRequestCount == this.requestCount.get()) {
|
||||
// Set stopped if no more write requests tp meta tables
|
||||
// since last time we went around the loop. Any open
|
||||
// meta regions will be closed on our way out.
|
||||
if (oldRequestCount == getWriteRequestCount()) {
|
||||
stop("Stopped; only catalog regions remaining online");
|
||||
break;
|
||||
}
|
||||
oldRequestCount = this.requestCount.get();
|
||||
oldRequestCount = getWriteRequestCount();
|
||||
} else {
|
||||
// Make sure all regions have been closed -- some regions may
|
||||
// have not got it because we were splitting at the time of
|
||||
|
@ -1033,6 +1034,17 @@ public class HRegionServer implements ClientProtos.ClientService.BlockingInterfa
|
|||
return allUserRegionsOffline;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Current write count for all online regions.
|
||||
*/
|
||||
private long getWriteRequestCount() {
|
||||
int writeCount = 0;
|
||||
for (Map.Entry<String, HRegion> e: this.onlineRegions.entrySet()) {
|
||||
writeCount += e.getValue().getWriteRequestsCount();
|
||||
}
|
||||
return writeCount;
|
||||
}
|
||||
|
||||
void tryRegionServerReport(long reportStartTime, long reportEndTime)
|
||||
throws IOException {
|
||||
if (this.rssStub == null) {
|
||||
|
|
Loading…
Reference in New Issue