You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2012/04/10 20:29:32 UTC
svn commit: r1311910 - in /hbase/trunk/src/main/java/org/apache/hadoop/hbase:
regionserver/HRegionServer.java zookeeper/MasterAddressTracker.java
Author: stack
Date: Tue Apr 10 18:29:31 2012
New Revision: 1311910
URL: http://svn.apache.org/viewvc?rev=1311910&view=rev
Log:
HBASE-5755 Region sever looking for master forever with cached stale data
Modified:
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.java
Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1311910&r1=1311909&r2=1311910&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Tue Apr 10 18:29:31 2012
@@ -1774,8 +1774,9 @@ public class HRegionServer implements HR
ServerName masterServerName = null;
long previousLogTime = 0;
HMasterRegionInterface master = null;
+ boolean refresh = false; // for the first time, use cached data
while (keepLooping() && master == null) {
- masterServerName = this.masterAddressManager.getMasterAddress();
+ masterServerName = this.masterAddressManager.getMasterAddress(refresh);
if (masterServerName == null) {
if (!keepLooping()) {
// give up with no connection.
@@ -1784,6 +1785,7 @@ public class HRegionServer implements HR
}
LOG.debug("No master found; retry");
previousLogTime = System.currentTimeMillis();
+ refresh = true; // let's try pull it from ZK directly
sleeper.sleep();
continue;
Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.java?rev=1311910&r1=1311909&r2=1311910&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.java Tue Apr 10 18:29:31 2012
@@ -68,7 +68,19 @@ public class MasterAddressTracker extend
* @return Server name or null if timed out.
*/
public ServerName getMasterAddress() {
- return ZKUtil.znodeContentToServerName(super.getData(false));
+ return getMasterAddress(false);
+ }
+
+ /**
+ * Get the address of the current master if one is available. Returns null
+ * if no current master. If refresh is set, try to load the data from ZK again,
+ * otherwise, cached data will be used.
+ *
+ * @param refresh whether to refresh the data by calling ZK directly.
+ * @return Server name or null if timed out.
+ */
+ public ServerName getMasterAddress(final boolean refresh) {
+ return ZKUtil.znodeContentToServerName(super.getData(refresh));
}
/**