zkController: try to simplify all the addresses/urls, precompute some also

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1293934 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Yonik Seeley 2012-02-26 21:02:46 +00:00
parent 85013ffd31
commit fced47d33f
1 changed files with 36 additions and 29 deletions

View File

@ -100,14 +100,15 @@ public final class ZkController {
private LeaderElector leaderElector; private LeaderElector leaderElector;
private String zkServerAddress; private String zkServerAddress; // example: 127.0.0.1:54062/solr
private String localHostPort; private final String localHostPort; // example: 54065
private String localHostContext; private final String localHostContext; // example: solr
private String localHostName; private final String localHost; // example: http://127.0.0.1
private String localHost; private final String hostName; // example: 127.0.0.1
private final String nodeName; // example: 127.0.0.1:54065_solr
private final String baseURL; // example: http://127.0.0.1:54065/solr
private String hostName;
private LeaderElector overseerElector; private LeaderElector overseerElector;
@ -172,7 +173,10 @@ public final class ZkController {
this.zkServerAddress = zkServerAddress; this.zkServerAddress = zkServerAddress;
this.localHostPort = locaHostPort; this.localHostPort = locaHostPort;
this.localHostContext = localHostContext; this.localHostContext = localHostContext;
this.localHost = localHost; this.localHost = getHostAddress(localHost);
this.hostName = getHostNameFromAddress(this.localHost);
this.nodeName = this.hostName + ':' + this.localHostPort + '_' + this.localHostContext;
this.baseURL = this.localHost + ":" + this.localHostPort + "/" + this.localHostContext;
zkClient = new SolrZkClient(zkServerAddress, zkClientTimeout, zkClientConnectTimeout, zkClient = new SolrZkClient(zkServerAddress, zkClientTimeout, zkClientConnectTimeout,
// on reconnect, reload cloud info // on reconnect, reload cloud info
@ -300,23 +304,38 @@ public final class ZkController {
return bytes; return bytes;
} }
// TODO: consider how this is done // normalize host to url_prefix://host
private String getHostAddress() throws IOException { // input can be null, host, or url_prefix://host
private String getHostAddress(String host) throws IOException {
if (localHost == null) { if (host == null) {
localHost = "http://" + InetAddress.getLocalHost().getHostName(); host = "http://" + InetAddress.getLocalHost().getHostName();
} else { } else {
Matcher m = URL_PREFIX.matcher(localHost); Matcher m = URL_PREFIX.matcher(host);
if (m.matches()) { if (m.matches()) {
String prefix = m.group(1); String prefix = m.group(1);
localHost = prefix + localHost; host = prefix + host;
} else { } else {
localHost = "http://" + localHost; host = "http://" + host;
} }
} }
return localHost; return host;
} }
// extract host from url_prefix://host
private String getHostNameFromAddress(String addr) {
Matcher m = URL_POST.matcher(addr);
if (m.matches()) {
return m.group(1);
} else {
log.error("Unrecognized host:" + addr);
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR,
"Unrecognized host:" + addr);
}
}
public String getHostName() { public String getHostName() {
return hostName; return hostName;
@ -336,17 +355,6 @@ public final class ZkController {
private void init() { private void init() {
try { try {
localHostName = getHostAddress();
Matcher m = URL_POST.matcher(localHostName);
if (m.matches()) {
hostName = m.group(1);
} else {
log.error("Unrecognized host:" + localHostName);
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR,
"Unrecognized host:" + localHostName);
}
// makes nodes zkNode // makes nodes zkNode
cmdExecutor.ensureExists(ZkStateReader.LIVE_NODES_ZKNODE, zkClient); cmdExecutor.ensureExists(ZkStateReader.LIVE_NODES_ZKNODE, zkClient);
@ -440,7 +448,7 @@ public final class ZkController {
} }
public String getNodeName() { public String getNodeName() {
return hostName + ":" + localHostPort + "_" + localHostContext; return nodeName;
} }
/** /**
@ -694,8 +702,7 @@ public final class ZkController {
public String getBaseUrl() { public String getBaseUrl() {
final String baseUrl = localHostName + ":" + localHostPort + "/" + localHostContext; return baseURL;
return baseUrl;
} }