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]

Reply via email to