HBASE-5596 Few minor bugs from HBASE-5209 (David S. Wang)

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1305661 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jonathan Hsieh 2012-03-26 23:06:02 +00:00
parent 080206de01
commit 3fd6997380
4 changed files with 25 additions and 7 deletions

View File

@ -71,7 +71,6 @@ public class ClusterStatus extends VersionedWritable {
*/ */
private static final byte VERSION_MASTER_BACKUPMASTERS = 2; private static final byte VERSION_MASTER_BACKUPMASTERS = 2;
private static final byte VERSION = 2; private static final byte VERSION = 2;
private static final String UNKNOWN_SERVERNAME = "unknown";
private String hbaseVersion; private String hbaseVersion;
private Map<ServerName, HServerLoad> liveServers; private Map<ServerName, HServerLoad> liveServers;
@ -177,11 +176,11 @@ public class ClusterStatus extends VersionedWritable {
return (getVersion() == ((ClusterStatus)o).getVersion()) && return (getVersion() == ((ClusterStatus)o).getVersion()) &&
getHBaseVersion().equals(((ClusterStatus)o).getHBaseVersion()) && getHBaseVersion().equals(((ClusterStatus)o).getHBaseVersion()) &&
this.liveServers.equals(((ClusterStatus)o).liveServers) && this.liveServers.equals(((ClusterStatus)o).liveServers) &&
this.deadServers.equals(((ClusterStatus)o).deadServers) && this.deadServers.containsAll(((ClusterStatus)o).deadServers) &&
Arrays.equals(this.masterCoprocessors, Arrays.equals(this.masterCoprocessors,
((ClusterStatus)o).masterCoprocessors) && ((ClusterStatus)o).masterCoprocessors) &&
this.master.equals(((ClusterStatus)o).master) && this.master.equals(((ClusterStatus)o).master) &&
this.backupMasters.equals(((ClusterStatus)o).backupMasters); this.backupMasters.containsAll(((ClusterStatus)o).backupMasters);
} }
/** /**
@ -344,7 +343,7 @@ public class ClusterStatus extends VersionedWritable {
Bytes.readByteArray(in))); Bytes.readByteArray(in)));
} }
} else { } else {
this.master = new ServerName(UNKNOWN_SERVERNAME, -1, this.master = new ServerName(ServerName.UNKNOWN_SERVERNAME, -1,
ServerName.NON_STARTCODE); ServerName.NON_STARTCODE);
this.backupMasters = new ArrayList<ServerName>(0); this.backupMasters = new ArrayList<ServerName>(0);
} }

View File

@ -73,6 +73,11 @@ public class ServerName implements Comparable<ServerName> {
SERVERNAME_SEPARATOR + Addressing.VALID_PORT_REGEX + SERVERNAME_SEPARATOR + Addressing.VALID_PORT_REGEX +
SERVERNAME_SEPARATOR + Addressing.VALID_PORT_REGEX + "$"); SERVERNAME_SEPARATOR + Addressing.VALID_PORT_REGEX + "$");
/**
* What to use if server name is unknown.
*/
public static final String UNKNOWN_SERVERNAME = "#unknown#";
private final String servername; private final String servername;
private final String hostname; private final String hostname;
private final int port; private final int port;
@ -291,4 +296,4 @@ public class ServerName implements Comparable<ServerName> {
return SERVERNAME_PATTERN.matcher(str).matches()? new ServerName(str): return SERVERNAME_PATTERN.matcher(str).matches()? new ServerName(str):
new ServerName(str, NON_STARTCODE); new ServerName(str, NON_STARTCODE);
} }
} }

View File

@ -168,7 +168,7 @@ class ActiveMasterManager extends ZooKeeperListener {
LOG.info("Adding ZNode for " + backupZNode + LOG.info("Adding ZNode for " + backupZNode +
" in backup master directory"); " in backup master directory");
ZKUtil.createEphemeralNodeAndWatch(this.watcher, backupZNode, ZKUtil.createEphemeralNodeAndWatch(this.watcher, backupZNode,
HConstants.EMPTY_BYTE_ARRAY); this.sn.getVersionedBytes());
String msg; String msg;
byte[] bytes = byte[] bytes =

View File

@ -26,6 +26,8 @@ import java.net.InetAddress;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@ -1522,8 +1524,20 @@ Server {
List<ServerName> backupMasters = new ArrayList<ServerName>( List<ServerName> backupMasters = new ArrayList<ServerName>(
backupMasterStrings.size()); backupMasterStrings.size());
for (String s: backupMasterStrings) { for (String s: backupMasterStrings) {
backupMasters.add(new ServerName(s)); try {
byte[] bytes = ZKUtil.getData(this.zooKeeper, ZKUtil.joinZNode(this.zooKeeper.backupMasterAddressesZNode, s));
if (bytes != null) {
backupMasters.add(ServerName.parseVersionedServerName(bytes));
}
} catch (KeeperException e) {
LOG.warn(this.zooKeeper.prefix("Unable to get information about " +
"backup servers"), e);
}
} }
Collections.sort(backupMasters, new Comparator<ServerName>() {
public int compare(ServerName s1, ServerName s2) {
return s1.getServerName().compareTo(s2.getServerName());
}});
return new ClusterStatus(VersionInfo.getVersion(), return new ClusterStatus(VersionInfo.getVersion(),
this.fileSystemManager.getClusterId(), this.fileSystemManager.getClusterId(),