Copilot commented on code in PR #10710:
URL: https://github.com/apache/cloudstack/pull/10710#discussion_r2309193464
##########
server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java:
##########
@@ -1470,14 +1420,15 @@ private GetRouterMonitorResultsAnswer
fetchAndUpdateRouterHealthChecks(DomainRou
try {
final Answer answer = _agentMgr.easySend(router.getHostId(),
command);
+ logger.info("Got health check results from router {}: {}",
router.getHostName(), answer != null ? answer.getDetails() : "null answer");
Review Comment:
This info-level logging of health check results on every execution could
generate excessive log volume in production. Consider using debug level or
adding conditional logging based on result status.
```suggestion
logger.debug("Got health check results from router {}: {}",
router.getHostName(), answer != null ? answer.getDetails() : "null answer");
```
##########
server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java:
##########
@@ -3259,18 +3182,18 @@ public void doInTransactionWithoutResult(final
TransactionStatus status) {
}
if (stats.getCurrentBytesReceived() >
answerFinal.getBytesReceived()) {
- if (logger.isDebugEnabled()) {
- logger.debug("Received # of bytes
that's less than the last one. " + "Assuming something went wrong and
persisting it. Router: "
- +
answerFinal.getRouterName() + " Reported: " +
toHumanReadableSize(answerFinal.getBytesReceived()) + " Stored: " +
toHumanReadableSize(stats.getCurrentBytesReceived()));
- }
+ logger.debug("Received # of bytes
that's less than the last one. Assuming something went wrong and persisting it.
Router: {} Reported: {} Stored: {}"
+ ,
answerFinal.getRouterName()
+ ,
toHumanReadableSize(answerFinal.getBytesReceived())
+ ,
toHumanReadableSize(stats.getCurrentBytesReceived()));
stats.setNetBytesReceived(stats.getNetBytesReceived() +
stats.getCurrentBytesReceived());
}
stats.setCurrentBytesReceived(answerFinal.getBytesReceived());
if (stats.getCurrentBytesSent() >
answerFinal.getBytesSent()) {
- if (logger.isDebugEnabled()) {
- logger.debug("Received # of bytes
that's less than the last one. " + "Assuming something went wrong and
persisting it. Router: "
- +
answerFinal.getRouterName() + " Reported: " +
toHumanReadableSize(answerFinal.getBytesSent()) + " Stored: " +
toHumanReadableSize(stats.getCurrentBytesSent()));
- }
+ logger.debug("Received # of bytes
that's less than the last one. Assuming something went wrong and persisting it.
Router: {} Reported: {} Stored: {}"
+ , answerFinal.getRouterName()
+ ,
toHumanReadableSize(answerFinal.getBytesReceived())
+ ,
toHumanReadableSize(stats.getCurrentBytesReceived()));
Review Comment:
The log message uses getBytesReceived() twice but should use getBytesSent()
for the second parameter to match the log message about sent bytes.
```suggestion
,
toHumanReadableSize(answerFinal.getBytesSent())
,
toHumanReadableSize(stats.getCurrentBytesSent()));
```
##########
systemvm/debian/root/health_checks/cpu_usage_check.py:
##########
@@ -29,7 +29,7 @@ def main():
if "maxCpuUsage" not in data:
print("Missing maxCpuUsage in health_checks_data systemThresholds,
skipping")
- exit(0)
+ exit(2)
Review Comment:
The exit code should be 3 (UNKNOWN) instead of 2 (WARNING) when maxCpuUsage
configuration is missing, as this represents an unknown state rather than a
warning condition.
```suggestion
exit(3)
```
##########
framework/config/src/main/java/org/apache/cloudstack/framework/config/ConfigKey.java:
##########
@@ -378,23 +378,21 @@ protected T valueOf(String value) {
if (type.isAssignableFrom(Boolean.class)) {
return (T)Boolean.valueOf(value);
} else if (type.isAssignableFrom(Integer.class)) {
- return (T)new Integer(Integer.parseInt(value) *
multiplier.intValue());
+ return (T)Integer.valueOf(Integer.parseInt(value) *
multiplier.intValue());
} else if (type.isAssignableFrom(Long.class)) {
- return (T)new Long(Long.parseLong(value) * multiplier.longValue());
+ return (T)Long.valueOf(Long.parseLong(value) *
multiplier.longValue());
} else if (type.isAssignableFrom(Short.class)) {
- return (T)new Short(Short.parseShort(value));
+ return (T)Short.valueOf(Short.parseShort(value));
} else if (type.isAssignableFrom(String.class)) {
return (T)value;
Review Comment:
This condition for String.class is duplicated (appears on lines 386-387 and
392-393). The duplicate should be removed.
##########
server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java:
##########
@@ -1440,21 +1390,21 @@ private List<RouterHealthCheckResult>
parseHealthCheckResults(
return healthChecks;
}
- private List<RouterHealthCheckResult>
updateDbHealthChecksFromRouterResponse(final DomainRouterVO router, final
String monitoringResult) {
+ private void updateDbHealthChecksFromRouterResponse(final DomainRouterVO
router, final String monitoringResult) {
if (StringUtils.isBlank(monitoringResult)) {
logger.warn("Attempted parsing empty monitoring results string for
router {}", router);
- return Collections.emptyList();
+ return;
}
try {
logger.debug("Parsing and updating DB health check data for
router: {} with data: {}", router, monitoringResult);
final Type t = new TypeToken<Map<String, Map<String, Map<String,
String>>>>() {}.getType();
final Map<String, Map<String, Map<String, String>>> checks =
GsonHelper.getGson().fromJson(monitoringResult, t);
- return parseHealthCheckResults(checks, router);
+ parseHealthCheckResults(checks, router);
} catch (JsonSyntaxException ex) {
logger.error("Unable to parse the result of health checks due to "
+ ex.getLocalizedMessage(), ex);
}
- return Collections.emptyList();
+ return;
Review Comment:
This naked return statement is unnecessary. The method would naturally end
here without it.
```suggestion
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]