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.