HBASE-26941 LocalHBaseCluster.waitOnRegionServer should quit while thread is interrupted (#4333)
Signed-off-by: Xin Sun <ddupgs@gmail.com>
This commit is contained in:
parent
ea9bc92ce2
commit
8247b7c722
|
@ -300,7 +300,7 @@ public class LocalHBaseCluster {
|
|||
* Wait for the specified region server to stop. Removes this thread from list of running threads.
|
||||
* @return Name of region server that just went down.
|
||||
*/
|
||||
public String waitOnRegionServer(int serverNumber) {
|
||||
public String waitOnRegionServer(int serverNumber) throws InterruptedException {
|
||||
JVMClusterUtil.RegionServerThread regionServerThread = this.regionThreads.get(serverNumber);
|
||||
return waitOnRegionServer(regionServerThread);
|
||||
}
|
||||
|
@ -309,15 +309,11 @@ public class LocalHBaseCluster {
|
|||
* Wait for the specified region server to stop. Removes this thread from list of running threads.
|
||||
* @return Name of region server that just went down.
|
||||
*/
|
||||
public String waitOnRegionServer(JVMClusterUtil.RegionServerThread rst) {
|
||||
public String waitOnRegionServer(JVMClusterUtil.RegionServerThread rst)
|
||||
throws InterruptedException {
|
||||
while (rst.isAlive()) {
|
||||
try {
|
||||
LOG.info("Waiting on " + rst.getRegionServer().toString());
|
||||
rst.join();
|
||||
} catch (InterruptedException e) {
|
||||
LOG.error("Interrupted while waiting for {} to finish. Retrying join", rst.getName(), e);
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
LOG.info("Waiting on " + rst.getRegionServer().toString());
|
||||
rst.join();
|
||||
}
|
||||
regionThreads.remove(rst);
|
||||
return rst.getName();
|
||||
|
@ -373,7 +369,7 @@ public class LocalHBaseCluster {
|
|||
* Wait for the specified master to stop. Removes this thread from list of running threads.
|
||||
* @return Name of master that just went down.
|
||||
*/
|
||||
public String waitOnMaster(int serverNumber) {
|
||||
public String waitOnMaster(int serverNumber) throws InterruptedException {
|
||||
JVMClusterUtil.MasterThread masterThread = this.masterThreads.get(serverNumber);
|
||||
return waitOnMaster(masterThread);
|
||||
}
|
||||
|
@ -382,16 +378,10 @@ public class LocalHBaseCluster {
|
|||
* Wait for the specified master to stop. Removes this thread from list of running threads.
|
||||
* @return Name of master that just went down.
|
||||
*/
|
||||
public String waitOnMaster(JVMClusterUtil.MasterThread masterThread) {
|
||||
public String waitOnMaster(JVMClusterUtil.MasterThread masterThread) throws InterruptedException {
|
||||
while (masterThread.isAlive()) {
|
||||
try {
|
||||
LOG.info("Waiting on " + masterThread.getMaster().getServerName().toString());
|
||||
masterThread.join();
|
||||
} catch (InterruptedException e) {
|
||||
LOG.error("Interrupted while waiting for {} to finish. Retrying join",
|
||||
masterThread.getName(), e);
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
LOG.info("Waiting on " + masterThread.getMaster().getServerName().toString());
|
||||
masterThread.join();
|
||||
}
|
||||
masterThreads.remove(masterThread);
|
||||
return masterThread.getName();
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
package org.apache.hadoop.hbase;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InterruptedIOException;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
@ -297,7 +298,11 @@ public class SingleProcessHBaseCluster extends HBaseClusterInterface {
|
|||
@Override
|
||||
public void waitForRegionServerToStop(ServerName serverName, long timeout) throws IOException {
|
||||
// ignore timeout for now
|
||||
waitOnRegionServer(getRegionServerIndex(serverName));
|
||||
try {
|
||||
waitOnRegionServer(getRegionServerIndex(serverName));
|
||||
} catch (InterruptedException e) {
|
||||
throw (InterruptedIOException) new InterruptedIOException().initCause(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -393,7 +398,11 @@ public class SingleProcessHBaseCluster extends HBaseClusterInterface {
|
|||
@Override
|
||||
public void waitForMasterToStop(ServerName serverName, long timeout) throws IOException {
|
||||
// ignore timeout for now
|
||||
waitOnMaster(getMasterIndex(serverName));
|
||||
try {
|
||||
waitOnMaster(getMasterIndex(serverName));
|
||||
} catch (InterruptedException e) {
|
||||
throw (InterruptedIOException) new InterruptedIOException().initCause(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -509,7 +518,7 @@ public class SingleProcessHBaseCluster extends HBaseClusterInterface {
|
|||
* Wait for the specified region server to stop. Removes this thread from list of running threads.
|
||||
* @return Name of region server that just went down.
|
||||
*/
|
||||
public String waitOnRegionServer(final int serverNumber) {
|
||||
public String waitOnRegionServer(final int serverNumber) throws InterruptedException {
|
||||
return this.hbaseCluster.waitOnRegionServer(serverNumber);
|
||||
}
|
||||
|
||||
|
@ -601,7 +610,7 @@ public class SingleProcessHBaseCluster extends HBaseClusterInterface {
|
|||
* Wait for the specified master to stop. Removes this thread from list of running threads.
|
||||
* @return Name of master that just went down.
|
||||
*/
|
||||
public String waitOnMaster(final int serverNumber) {
|
||||
public String waitOnMaster(final int serverNumber) throws InterruptedException {
|
||||
return this.hbaseCluster.waitOnMaster(serverNumber);
|
||||
}
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ public class TestMasterMetricsWrapper {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testInfo() {
|
||||
public void testInfo() throws InterruptedException {
|
||||
HMaster master = TEST_UTIL.getHBaseCluster().getMaster();
|
||||
MetricsMasterWrapperImpl info = new MetricsMasterWrapperImpl(master);
|
||||
assertEquals(
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
package org.apache.hadoop.hbase;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InterruptedIOException;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
@ -310,7 +311,11 @@ public class MiniHBaseCluster extends HBaseCluster {
|
|||
@Override
|
||||
public void waitForRegionServerToStop(ServerName serverName, long timeout) throws IOException {
|
||||
//ignore timeout for now
|
||||
waitOnRegionServer(getRegionServerIndex(serverName));
|
||||
try {
|
||||
waitOnRegionServer(getRegionServerIndex(serverName));
|
||||
} catch (InterruptedException e) {
|
||||
throw (InterruptedIOException) new InterruptedIOException().initCause(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -406,7 +411,11 @@ public class MiniHBaseCluster extends HBaseCluster {
|
|||
@Override
|
||||
public void waitForMasterToStop(ServerName serverName, long timeout) throws IOException {
|
||||
//ignore timeout for now
|
||||
waitOnMaster(getMasterIndex(serverName));
|
||||
try {
|
||||
waitOnMaster(getMasterIndex(serverName));
|
||||
} catch (InterruptedException e) {
|
||||
throw (InterruptedIOException) new InterruptedIOException().initCause(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -535,7 +544,7 @@ public class MiniHBaseCluster extends HBaseCluster {
|
|||
* @param serverNumber
|
||||
* @return Name of region server that just went down.
|
||||
*/
|
||||
public String waitOnRegionServer(final int serverNumber) {
|
||||
public String waitOnRegionServer(final int serverNumber) throws InterruptedException {
|
||||
return this.hbaseCluster.waitOnRegionServer(serverNumber);
|
||||
}
|
||||
|
||||
|
@ -640,7 +649,7 @@ public class MiniHBaseCluster extends HBaseCluster {
|
|||
* @param serverNumber
|
||||
* @return Name of master that just went down.
|
||||
*/
|
||||
public String waitOnMaster(final int serverNumber) {
|
||||
public String waitOnMaster(final int serverNumber) throws InterruptedException {
|
||||
return this.hbaseCluster.waitOnMaster(serverNumber);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue