This is an automated email from the ASF dual-hosted git repository.
gongchao 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 2bd635e1d4 [fix]Fix some systemic issues (#3884)
2bd635e1d4 is described below
commit 2bd635e1d4b9e6340e4c6e377646f2223a0c8e49
Author: Duansg <[email protected]>
AuthorDate: Wed Dec 3 22:25:02 2025 +0800
[fix]Fix some systemic issues (#3884)
Co-authored-by: Tomsun28 <[email protected]>
---
.../apache/hertzbeat/manager/service/impl/MonitorServiceImpl.java | 6 ++++--
.../src/main/resources/db/migration/h2/V180__update_column.sql | 3 ++-
.../src/main/resources/db/migration/mysql/V180__update_column.sql | 3 ++-
.../main/resources/db/migration/postgresql/V180__update_column.sql | 3 ++-
.../store/history/tsdb/greptime/GreptimeDbDataStorage.java | 6 +++++-
5 files changed, 15 insertions(+), 6 deletions(-)
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 43c9e8da5b..2cf3da9371 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
@@ -198,7 +198,8 @@ public class MonitorServiceImpl implements MonitorService {
.filter(param -> PARAM_FIELD_PORT.equals(param.getField()))
.findFirst()
.orElse(null);
- String portWithMark = Objects.isNull(portParam) ? "" :
SignConstants.DOUBLE_MARK + portParam.getParamValue();
+ String portWithMark = (Objects.isNull(portParam) ||
!StringUtils.hasText(portParam.getParamValue()))
+ ? "" : SignConstants.DOUBLE_MARK + portParam.getParamValue();
if (Objects.nonNull(instance)) {
instance = instance + portWithMark;
}
@@ -527,7 +528,8 @@ public class MonitorServiceImpl implements MonitorService {
.filter(param -> PARAM_FIELD_PORT.equals(param.getField()))
.findFirst()
.orElse(null);
- String portWithMark = Objects.isNull(portParam) ? "" :
SignConstants.DOUBLE_MARK + portParam.getParamValue();
+ String portWithMark = (Objects.isNull(portParam) ||
!StringUtils.hasText(portParam.getParamValue()))
+ ? "" : SignConstants.DOUBLE_MARK + portParam.getParamValue();
if (Objects.nonNull(instance)) {
instance = instance + portWithMark;
}
diff --git
a/hertzbeat-startup/src/main/resources/db/migration/h2/V180__update_column.sql
b/hertzbeat-startup/src/main/resources/db/migration/h2/V180__update_column.sql
index 5e67e2fdbc..09a4c8e344 100644
---
a/hertzbeat-startup/src/main/resources/db/migration/h2/V180__update_column.sql
+++
b/hertzbeat-startup/src/main/resources/db/migration/h2/V180__update_column.sql
@@ -58,7 +58,8 @@ DROP ALIAS RENAME_HOST_TO_INSTANCE;
-- Update instance with port
UPDATE HZB_MONITOR m
SET instance = CONCAT(instance, ':', (SELECT param_value FROM HZB_PARAM p
WHERE p.monitor_id = m.id AND p.field = 'port'))
-WHERE EXISTS (SELECT 1 FROM HZB_PARAM p WHERE p.monitor_id = m.id AND p.field
= 'port');
+WHERE EXISTS (SELECT 1 FROM HZB_PARAM p WHERE p.monitor_id = m.id AND p.field
= 'port' AND p.param_value IS NOT NULL AND p.param_value != '')
+ AND instance NOT LIKE CONCAT('%:', (SELECT param_value FROM HZB_PARAM p
WHERE p.monitor_id = m.id AND p.field = 'port'));
-- Migrate history table
CREATE ALIAS MIGRATE_HISTORY_TABLE AS $$
diff --git
a/hertzbeat-startup/src/main/resources/db/migration/mysql/V180__update_column.sql
b/hertzbeat-startup/src/main/resources/db/migration/mysql/V180__update_column.sql
index 2c88874cc3..2f7798360f 100644
---
a/hertzbeat-startup/src/main/resources/db/migration/mysql/V180__update_column.sql
+++
b/hertzbeat-startup/src/main/resources/db/migration/mysql/V180__update_column.sql
@@ -79,7 +79,8 @@ DROP PROCEDURE IF EXISTS RenameHostToInstance;
UPDATE hzb_monitor m
INNER JOIN hzb_param p ON m.id = p.monitor_id AND p.field = 'port'
SET m.instance = CONCAT(m.instance, ':', p.param_value)
-WHERE m.instance IS NOT NULL;
+WHERE m.instance IS NOT NULL AND p.param_value IS NOT NULL AND p.param_value
!= ''
+ AND m.instance NOT LIKE CONCAT('%:', p.param_value);
-- Migrate history table
DELIMITER //
diff --git
a/hertzbeat-startup/src/main/resources/db/migration/postgresql/V180__update_column.sql
b/hertzbeat-startup/src/main/resources/db/migration/postgresql/V180__update_column.sql
index c37ed10229..09cecdb64c 100644
---
a/hertzbeat-startup/src/main/resources/db/migration/postgresql/V180__update_column.sql
+++
b/hertzbeat-startup/src/main/resources/db/migration/postgresql/V180__update_column.sql
@@ -46,7 +46,8 @@ END $$;
UPDATE HZB_MONITOR m
SET instance = m.instance || ':' || p.param_value
FROM HZB_PARAM p
-WHERE m.id = p.monitor_id AND p.field = 'port';
+WHERE m.id = p.monitor_id AND p.field = 'port' AND p.param_value IS NOT NULL
AND p.param_value != ''
+ AND m.instance NOT LIKE ('%:' || p.param_value);
-- Migrate history table
DO $$
diff --git
a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/GreptimeDbDataStorage.java
b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/GreptimeDbDataStorage.java
index c2834f5ab9..3fe4aafd31 100644
---
a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/GreptimeDbDataStorage.java
+++
b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/greptime/GreptimeDbDataStorage.java
@@ -38,6 +38,7 @@ import java.time.ZonedDateTime;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAmount;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -233,10 +234,13 @@ public class GreptimeDbDataStorage extends
AbstractHistoryDataStorage {
Map<String, List<Value>> instanceValuesMap = getHistoryData(start,
end, step, instance, app, metrics, metric);
+ if (instanceValuesMap.isEmpty()) {
+ return Collections.emptyMap();
+ }
// Queries below this point may yield inconsistent results due to
exceeding the valid data range.
// Therefore, we restrict the valid range by obtaining the post-query
timeframe.
// Since `gretime`'s `end` excludes the specified time, we add 4 hours.
- List<Value> values =
instanceValuesMap.get(instanceValuesMap.keySet().stream().toList().get(0));
+ List<Value> values =
instanceValuesMap.get(instanceValuesMap.keySet().iterator().next());
// effective time
long effectiveStart = values.get(0).getTime() / 1000;
long effectiveEnd = values.get(values.size() - 1).getTime() / 1000 +
Duration.ofHours(4).getSeconds();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]