[Bugfix]修复ZK四字命令解析错误的问题

1、四字命令结果为Float类型的字符串时,使用Long.valueOf()会抛出格式转换失败异常。因此为了方便处理,将使用ConvertUtil.string2Float()方法进行转换。
2、规范调整过程中,涉及到的代码。
This commit is contained in:
ZQKC
2023-03-17 20:15:05 +08:00
parent 258385dc9a
commit c71865f623
6 changed files with 52 additions and 48 deletions

View File

@@ -27,6 +27,10 @@ public abstract class BaseMetrics implements Serializable {
protected Map<String, Float> metrics = new ConcurrentHashMap<>();
public void putMetric(String key, Float value){
if (value == null || key == null) {
return;
}
metrics.put(key, value);
}

View File

@@ -25,15 +25,15 @@ public class MonitorCmdData extends BaseFourLetterWordCmdData {
private Float zkAvgLatency;
private Float zkMaxLatency;
private Float zkMinLatency;
private Long zkPacketsReceived;
private Long zkPacketsSent;
private Long zkNumAliveConnections;
private Long zkOutstandingRequests;
private Float zkPacketsReceived;
private Float zkPacketsSent;
private Float zkNumAliveConnections;
private Float zkOutstandingRequests;
private String zkServerState;
private Long zkZnodeCount;
private Long zkWatchCount;
private Long zkEphemeralsCount;
private Long zkApproximateDataSize;
private Long zkOpenFileDescriptorCount;
private Long zkMaxFileDescriptorCount;
private Float zkZnodeCount;
private Float zkWatchCount;
private Float zkEphemeralsCount;
private Float zkApproximateDataSize;
private Float zkOpenFileDescriptorCount;
private Float zkMaxFileDescriptorCount;
}

View File

@@ -20,11 +20,11 @@ public class ServerCmdData extends BaseFourLetterWordCmdData {
private Float zkAvgLatency;
private Float zkMaxLatency;
private Float zkMinLatency;
private Long zkPacketsReceived;
private Long zkPacketsSent;
private Long zkNumAliveConnections;
private Long zkOutstandingRequests;
private Float zkPacketsReceived;
private Float zkPacketsSent;
private Float zkNumAliveConnections;
private Float zkOutstandingRequests;
private String zkServerState;
private Long zkZnodeCount;
private Float zkZnodeCount;
private Long zkZxid;
}

View File

@@ -51,7 +51,7 @@ public class MonitorCmdDataParser implements FourLetterWordDataParser<MonitorCmd
}
MonitorCmdData monitorCmdData = new MonitorCmdData();
dataMap.entrySet().stream().forEach(elem -> {
dataMap.entrySet().forEach(elem -> {
try {
switch (elem.getKey()) {
case "zk_version":
@@ -67,37 +67,37 @@ public class MonitorCmdDataParser implements FourLetterWordDataParser<MonitorCmd
monitorCmdData.setZkMinLatency(ConvertUtil.string2Float(elem.getValue()));
break;
case "zk_packets_received":
monitorCmdData.setZkPacketsReceived(Long.valueOf(elem.getValue()));
monitorCmdData.setZkPacketsReceived(ConvertUtil.string2Float(elem.getValue()));
break;
case "zk_packets_sent":
monitorCmdData.setZkPacketsSent(Long.valueOf(elem.getValue()));
monitorCmdData.setZkPacketsSent(ConvertUtil.string2Float(elem.getValue()));
break;
case "zk_num_alive_connections":
monitorCmdData.setZkNumAliveConnections(Long.valueOf(elem.getValue()));
monitorCmdData.setZkNumAliveConnections(ConvertUtil.string2Float(elem.getValue()));
break;
case "zk_outstanding_requests":
monitorCmdData.setZkOutstandingRequests(Long.valueOf(elem.getValue()));
monitorCmdData.setZkOutstandingRequests(ConvertUtil.string2Float(elem.getValue()));
break;
case "zk_server_state":
monitorCmdData.setZkServerState(elem.getValue());
break;
case "zk_znode_count":
monitorCmdData.setZkZnodeCount(Long.valueOf(elem.getValue()));
monitorCmdData.setZkZnodeCount(ConvertUtil.string2Float(elem.getValue()));
break;
case "zk_watch_count":
monitorCmdData.setZkWatchCount(Long.valueOf(elem.getValue()));
monitorCmdData.setZkWatchCount(ConvertUtil.string2Float(elem.getValue()));
break;
case "zk_ephemerals_count":
monitorCmdData.setZkEphemeralsCount(Long.valueOf(elem.getValue()));
monitorCmdData.setZkEphemeralsCount(ConvertUtil.string2Float(elem.getValue()));
break;
case "zk_approximate_data_size":
monitorCmdData.setZkApproximateDataSize(Long.valueOf(elem.getValue()));
monitorCmdData.setZkApproximateDataSize(ConvertUtil.string2Float(elem.getValue()));
break;
case "zk_open_file_descriptor_count":
monitorCmdData.setZkOpenFileDescriptorCount(Long.valueOf(elem.getValue()));
monitorCmdData.setZkOpenFileDescriptorCount(ConvertUtil.string2Float(elem.getValue()));
break;
case "zk_max_file_descriptor_count":
monitorCmdData.setZkMaxFileDescriptorCount(Long.valueOf(elem.getValue()));
monitorCmdData.setZkMaxFileDescriptorCount(ConvertUtil.string2Float(elem.getValue()));
break;
case "Proposal sizes last/min/max":
case "zk_fsync_threshold_exceed_count":

View File

@@ -46,7 +46,7 @@ public class ServerCmdDataParser implements FourLetterWordDataParser<ServerCmdDa
}
ServerCmdData serverCmdData = new ServerCmdData();
dataMap.entrySet().stream().forEach(elem -> {
dataMap.entrySet().forEach(elem -> {
try {
switch (elem.getKey()) {
case "Zookeeper version":
@@ -59,22 +59,22 @@ public class ServerCmdDataParser implements FourLetterWordDataParser<ServerCmdDa
serverCmdData.setZkMaxLatency(ConvertUtil.string2Float(data[2]));
break;
case "Received":
serverCmdData.setZkPacketsReceived(Long.valueOf(elem.getValue()));
serverCmdData.setZkPacketsReceived(ConvertUtil.string2Float(elem.getValue()));
break;
case "Sent":
serverCmdData.setZkPacketsSent(Long.valueOf(elem.getValue()));
serverCmdData.setZkPacketsSent(ConvertUtil.string2Float(elem.getValue()));
break;
case "Connections":
serverCmdData.setZkNumAliveConnections(Long.valueOf(elem.getValue()));
serverCmdData.setZkNumAliveConnections(ConvertUtil.string2Float(elem.getValue()));
break;
case "Outstanding":
serverCmdData.setZkOutstandingRequests(Long.valueOf(elem.getValue()));
serverCmdData.setZkOutstandingRequests(ConvertUtil.string2Float(elem.getValue()));
break;
case "Mode":
serverCmdData.setZkServerState(elem.getValue());
break;
case "Node count":
serverCmdData.setZkZnodeCount(Long.valueOf(elem.getValue()));
serverCmdData.setZkZnodeCount(ConvertUtil.string2Float(elem.getValue()));
break;
case "Zxid":
serverCmdData.setZkZxid(Long.parseUnsignedLong(elem.getValue().trim().substring(2), 16));