This is an automated email from the ASF dual-hosted git repository.
liuhongyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
The following commit(s) were added to refs/heads/master by this push:
new bd1924b01 [bugfix] fix service discovery host field
NullPointerException (#3767)
bd1924b01 is described below
commit bd1924b016c3a0a0f0d96eb827109095710cddf3
Author: kangli <[email protected]>
AuthorDate: Tue Sep 23 21:23:40 2025 +0800
[bugfix] fix service discovery host field NullPointerException (#3767)
Co-authored-by: kangli <[email protected]>
Co-authored-by: Calvin <[email protected]>
Co-authored-by: Sherlock Yin <[email protected]>
Co-authored-by: aias00 <[email protected]>
---
.../hertzbeat/collector/metrics/HertzBeatMetricsCollector.java | 5 +++++
.../apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java | 8 +++++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git
a/hertzbeat-collector/hertzbeat-collector-collector/src/main/java/org/apache/hertzbeat/collector/metrics/HertzBeatMetricsCollector.java
b/hertzbeat-collector/hertzbeat-collector-collector/src/main/java/org/apache/hertzbeat/collector/metrics/HertzBeatMetricsCollector.java
index 66e4b9995..ebbee45bb 100644
---
a/hertzbeat-collector/hertzbeat-collector-collector/src/main/java/org/apache/hertzbeat/collector/metrics/HertzBeatMetricsCollector.java
+++
b/hertzbeat-collector/hertzbeat-collector-collector/src/main/java/org/apache/hertzbeat/collector/metrics/HertzBeatMetricsCollector.java
@@ -24,6 +24,7 @@ import io.micrometer.core.instrument.Timer;
import lombok.extern.slf4j.Slf4j;
import org.apache.hertzbeat.common.entity.job.Job;
import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
import java.time.Duration;
import java.util.Map;
@@ -58,6 +59,10 @@ public class HertzBeatMetricsCollector {
Map<String, String> metadata = job.getMetadata();
String monitorName = metadata != null ? metadata.get("instancename") :
"unknown";
String monitorTarget = metadata != null ? metadata.get("instancehost")
: "unknown";
+ // todo can not get the host from service discovery
+ if (!StringUtils.hasText(monitorTarget)) {
+ monitorTarget = "unknown";
+ }
// Record collection count
Counter.builder("hertzbeat.collect.total")
diff --git
a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
index 26ada75da..0661d6c1b 100644
---
a/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
+++
b/hertzbeat-manager/src/main/java/org/apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java
@@ -276,7 +276,8 @@ public class MonitorServiceImpl implements MonitorService {
public void validate(MonitorDto monitorDto, Boolean isModify) throws
IllegalArgumentException {
// The request monitoring parameter matches the monitoring parameter
definition mapping check
Monitor monitor = monitorDto.getMonitor();
- monitor.setHost(monitor.getHost().trim());
+ // The Service Discovery host field may be null
+ monitor.setHost(StringUtils.hasText(monitor.getHost()) ?
monitor.getHost().trim() : null);
monitor.setName(monitor.getName().trim());
Map<String, Param> paramMap = monitorDto.getParams()
.stream()
@@ -316,9 +317,14 @@ public class MonitorServiceImpl implements MonitorService {
// Parameter definition structure verification
List<ParamDefine> paramDefines =
appService.getAppParamDefines(monitorDto.getMonitor().getApp());
if (!CollectionUtils.isEmpty(paramDefines)) {
+ boolean isStatic =
CommonConstants.SCRAPE_STATIC.equals(monitor.getScrape()) ||
!StringUtils.hasText(monitor.getScrape());
for (ParamDefine paramDefine : paramDefines) {
String field = paramDefine.getField();
Param param = paramMap.get(field);
+ // Get the host from service discovery
+ if (!isStatic && "host".equals(field)) {
+ continue;
+ }
if (paramDefine.isRequired() && (param == null ||
param.getParamValue() == null)) {
throw new IllegalArgumentException("Params field " + field
+ " is required.");
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]