[Enhance] Show brokers' hostname (#5522)

Show brokers' hostname in table to keep the same with show proc for backends and frontends.
This commit is contained in:
Yingchun Lai
2021-03-21 20:46:25 +08:00
committed by GitHub
parent a91888a68b
commit c97ddd7f35
6 changed files with 32 additions and 21 deletions

View File

@ -27,6 +27,7 @@ import org.apache.doris.common.io.Writable;
import org.apache.doris.common.proc.BaseProcResult;
import org.apache.doris.common.proc.ProcNodeInterface;
import org.apache.doris.common.proc.ProcResult;
import org.apache.doris.common.util.NetUtils;
import org.apache.doris.common.util.TimeUtils;
import com.google.common.collect.ArrayListMultimap;
@ -48,10 +49,12 @@ import java.util.concurrent.locks.ReentrantLock;
*/
public class BrokerMgr {
public static final ImmutableList<String> BROKER_PROC_NODE_TITLE_NAMES = new ImmutableList.Builder<String>()
.add("Name").add("IP").add("Port").add("Alive")
.add("Name").add("IP").add("HostName").add("Port").add("Alive")
.add("LastStartTime").add("LastUpdateTime").add("ErrMsg")
.build();
public static final int HOSTNAME_INDEX = 2;
// we need IP to find the co-location broker.
// { BrokerName -> { IP -> [FsBroker] } }
private final Map<String, ArrayListMultimap<String, FsBroker>> brokersMap = Maps.newHashMap();
@ -341,6 +344,7 @@ public class BrokerMgr {
List<String> row = Lists.newArrayList();
row.add(brokerName);
row.add(broker.ip);
row.add(NetUtils.getHostnameByIp(broker.ip));
row.add(String.valueOf(broker.port));
row.add(String.valueOf(broker.isAlive));
row.add(TimeUtils.longToTimeString(broker.lastStartTime));

View File

@ -25,8 +25,8 @@ import org.apache.doris.common.AnalysisException;
import org.apache.doris.common.Pair;
import org.apache.doris.common.util.DebugUtil;
import org.apache.doris.common.util.ListComparator;
import org.apache.doris.common.util.NetUtils;
import org.apache.doris.common.util.TimeUtils;
import org.apache.doris.service.FrontendOptions;
import org.apache.doris.system.Backend;
import org.apache.doris.system.SystemInfoService;
@ -55,7 +55,6 @@ public class BackendsProcDir implements ProcDirInterface {
.add("MaxDiskUsedPct").add("ErrMsg").add("Version").add("Status")
.build();
public static final int IP_INDEX = 2;
public static final int HOSTNAME_INDEX = 3;
private SystemInfoService clusterInfoService;
@ -120,7 +119,7 @@ public class BackendsProcDir implements ProcDirInterface {
backendInfo.add(backend.getOwnerClusterName());
backendInfo.add(backend.getHost());
if (Strings.isNullOrEmpty(clusterName)) {
backendInfo.add(FrontendOptions.getHostnameByIp(backend.getHost()));
backendInfo.add(NetUtils.getHostnameByIp(backend.getHost()));
backendInfo.add(String.valueOf(backend.getHeartbeatPort()));
backendInfo.add(String.valueOf(backend.getBePort()));
backendInfo.add(String.valueOf(backend.getHttpPort()));

View File

@ -20,8 +20,8 @@ package org.apache.doris.common.proc;
import org.apache.doris.catalog.Catalog;
import org.apache.doris.common.Config;
import org.apache.doris.common.Pair;
import org.apache.doris.common.util.NetUtils;
import org.apache.doris.common.util.TimeUtils;
import org.apache.doris.service.FrontendOptions;
import org.apache.doris.system.Frontend;
import com.google.common.collect.ImmutableList;
@ -95,7 +95,7 @@ public class FrontendsProcNode implements ProcNodeInterface {
info.add(fe.getNodeName());
info.add(fe.getHost());
info.add(FrontendOptions.getHostnameByIp(fe.getHost()));
info.add(NetUtils.getHostnameByIp(fe.getHost()));
info.add(Integer.toString(fe.getEditLogPort()));
info.add(Integer.toString(Config.http_port));

View File

@ -17,14 +17,19 @@
package org.apache.doris.common.util;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
import java.util.List;
public class NetUtils {
private static final Logger LOG = LogManager.getLogger(NetUtils.class);
// Target format is "host:port"
public static InetSocketAddress createSocketAddr(String target) {
@ -57,4 +62,16 @@ public class NetUtils {
}
}
}
public static String getHostnameByIp(String ip) {
String hostName;
try {
InetAddress address = InetAddress.getByName(ip);
hostName = address.getHostName();
} catch (UnknownHostException e) {
LOG.info("unknown host for {}", ip, e);
hostName = "unknown";
}
return hostName;
}
}

View File

@ -72,6 +72,7 @@ import org.apache.doris.backup.AbstractJob;
import org.apache.doris.backup.BackupJob;
import org.apache.doris.backup.Repository;
import org.apache.doris.backup.RestoreJob;
import org.apache.doris.catalog.BrokerMgr;
import org.apache.doris.catalog.Catalog;
import org.apache.doris.catalog.Column;
import org.apache.doris.catalog.Database;
@ -1326,10 +1327,13 @@ public class ShowExecutor {
// Handle show brokers
private void handleShowBroker() {
ShowBrokerStmt showStmt = (ShowBrokerStmt) stmt;
List<List<String>> rowSet = Catalog.getCurrentCatalog().getBrokerMgr().getBrokersInfo();
List<List<String>> brokersInfo = Catalog.getCurrentCatalog().getBrokerMgr().getBrokersInfo();
for (List<String> row : brokersInfo) {
row.remove(BrokerMgr.HOSTNAME_INDEX);
}
// Only success
resultSet = new ShowResultSet(showStmt.getMetaData(), rowSet);
resultSet = new ShowResultSet(showStmt.getMetaData(), brokersInfo);
}
// Handle show resources

View File

@ -19,7 +19,6 @@ package org.apache.doris.service;
import org.apache.doris.common.CIDR;
import org.apache.doris.common.Config;
import org.apache.doris.common.FeConstants;
import org.apache.doris.common.util.NetUtils;
import com.google.common.base.Strings;
@ -101,18 +100,6 @@ public class FrontendOptions {
return localAddr.getHostName();
}
public static String getHostnameByIp(String ip) {
String hostName = FeConstants.null_string;
try {
InetAddress address = InetAddress.getByName(ip);
hostName = address.getHostName();
} catch (UnknownHostException e) {
LOG.info("unknown host for {}", ip, e);
hostName = "unknown";
}
return hostName;
}
private static void analyzePriorityCidrs() {
String prior_cidrs = Config.priority_networks;
if (Strings.isNullOrEmpty(prior_cidrs)) {