Index: src/contrib/hbase/CHANGES.txt
===================================================================
--- src/contrib/hbase/CHANGES.txt (revision 567833)
+++ src/contrib/hbase/CHANGES.txt (working copy)
@@ -10,6 +10,8 @@
OPTIMIZATIONS
BUG FIXES
+ HADOOP-1723 If master asks region server to shut down, by-pass return of
+ shutdown message
HADOOP-1729 Recent renaming or META tables breaks hbase shell
HADOOP-1730 unexpected null value causes META scanner to exit (silently)
Index: src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java
===================================================================
--- src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java (revision 567833)
+++ src/contrib/hbase/src/java/org/apache/hadoop/hbase/HRegionServer.java (working copy)
@@ -579,7 +579,8 @@
3 * 60 * 1000), threadWakeFrequency);
// Server
-
+
+ boolean masterRequestedStop = false;
try {
this.server.start();
LOG.info("HRegionServer started at: " +
@@ -663,6 +664,7 @@
if (LOG.isDebugEnabled()) {
LOG.debug("Got regionserver stop message");
}
+ masterRequestedStop = true;
stopRequested = true;
break;
@@ -757,18 +759,20 @@
LOG.error("", e);
}
try {
- HMsg[] exitMsg = new HMsg[closedRegions.size() + 1];
- exitMsg[0] = new HMsg(HMsg.MSG_REPORT_EXITING);
- // Tell the master what regions we are/were serving
- int i = 1;
- for(HRegion region: closedRegions) {
- exitMsg[i++] = new HMsg(HMsg.MSG_REPORT_CLOSE,
- region.getRegionInfo());
+ if (!masterRequestedStop) {
+ HMsg[] exitMsg = new HMsg[closedRegions.size() + 1];
+ exitMsg[0] = new HMsg(HMsg.MSG_REPORT_EXITING);
+ // Tell the master what regions we are/were serving
+ int i = 1;
+ for(HRegion region: closedRegions) {
+ exitMsg[i++] = new HMsg(HMsg.MSG_REPORT_CLOSE,
+ region.getRegionInfo());
+ }
+
+ LOG.info("telling master that region server is shutting down at: " +
+ serverInfo.getServerAddress().toString());
+ hbaseMaster.regionServerReport(serverInfo, exitMsg);
}
-
- LOG.info("telling master that region server is shutting down at: " +
- serverInfo.getServerAddress().toString());
- hbaseMaster.regionServerReport(serverInfo, exitMsg);
} catch (IOException e) {
if (e instanceof RemoteException) {
try {
@@ -1124,6 +1128,7 @@
}
/** {@inheritDoc} */
+ @SuppressWarnings("deprecation")
public long startUpdate(Text regionName, long clientid, Text row)
throws IOException {
requestCount.incrementAndGet();
@@ -1135,6 +1140,7 @@
}
/** {@inheritDoc} */
+ @SuppressWarnings("deprecation")
public void put(final Text regionName, final long clientid,
final long lockid, final Text column, final byte [] val)
throws IOException {
@@ -1145,6 +1151,7 @@
}
/** {@inheritDoc} */
+ @SuppressWarnings("deprecation")
public void delete(Text regionName, long clientid, long lockid, Text column)
throws IOException {
requestCount.incrementAndGet();
@@ -1154,6 +1161,7 @@
}
/** {@inheritDoc} */
+ @SuppressWarnings("deprecation")
public void abort(Text regionName, long clientid, long lockid)
throws IOException {
requestCount.incrementAndGet();
@@ -1163,6 +1171,7 @@
}
/** {@inheritDoc} */
+ @SuppressWarnings("deprecation")
public void commit(Text regionName, final long clientid, final long lockid,
final long timestamp) throws IOException {
requestCount.incrementAndGet();
@@ -1172,6 +1181,7 @@
}
/** {@inheritDoc} */
+ @SuppressWarnings("deprecation")
public void renewLease(long lockid, long clientid) throws IOException {
requestCount.incrementAndGet();
leases.renewLease(clientid, lockid);
Index: src/contrib/hbase/src/test/hbase-site.xml
===================================================================
--- src/contrib/hbase/src/test/hbase-site.xml (revision 567833)
+++ src/contrib/hbase/src/test/hbase-site.xml (working copy)
@@ -60,7 +60,7 @@
hbase.master.lease.period
- 5000
+ 6000
Length of time the master will wait before timing out a region
server lease. Since region servers report in every second (see above), this
value has been reduced so that the master will notice a dead region server
@@ -69,7 +69,7 @@
hbase.master.lease.thread.wakefrequency
- 2500
+ 3000
The interval between checks for expired region server leases.
This value has been reduced due to the other reduced values above so that
the master will notice a dead region server sooner. The default is 15 seconds.