This is an automated email from the ASF dual-hosted git repository.

Aias00 pushed a commit to branch 2.0.0
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git

commit 20caf898945862d493732601887e9fbdb1d4678e
Author: liuhy <[email protected]>
AuthorDate: Fri Jun 5 14:26:28 2026 +0800

    fix(core): replace silent exception swallowing and assert-based null guards
    
    - MonitorServiceImpl: log warning when detectMonitor fails during addMonitor
      and reapplyMonitors instead of silently swallowing the exception
    - TdEngineDataStorage: replace 4 'assert x != null' with 'if (x != null)'
      guards in finally blocks. Java assertions are disabled by default (-da),
      meaning assert was a no-op and NullPointerException from the subsequent
      close() call would mask the original exception
    
    Co-Authored-By: Claude Opus 4.8 <[email protected]>
---
 .../manager/service/impl/MonitorServiceImpl.java   |  8 +++-
 .../history/tsdb/tdengine/TdEngineDataStorage.java | 43 ++++++++++++----------
 2 files changed, 29 insertions(+), 22 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 9f2db1c6de..bcda65df57 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
@@ -212,7 +212,9 @@ public class MonitorServiceImpl implements MonitorService {
                 : collectJobScheduling.addAsyncCollectJob(appDefine, 
collector);
         try {
             detectMonitor(monitor, params, collector);
-        } catch (Exception ignored) {
+        } catch (Exception e) {
+            log.warn("Monitor detection failed during addMonitor for monitor 
[{}]: {}",
+                    monitor.getName(), e.getMessage());
         }
 
         try {
@@ -621,7 +623,9 @@ public class MonitorServiceImpl implements MonitorService {
             applicationContext.publishEvent(new 
MonitorDeletedEvent(applicationContext, monitor.getId()));
             try {
                 detectMonitor(monitor, params, collector);
-            } catch (Exception ignored) {
+            } catch (Exception e) {
+                log.warn("Monitor detection failed during reapplyMonitors for 
monitor [{}]: {}",
+                        monitor.getName(), e.getMessage());
             }
         }
         
oldMonitorStatusWriteModelService.saveMonitorStatusChanges(unManagedMonitors);
diff --git 
a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/tdengine/TdEngineDataStorage.java
 
b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/tdengine/TdEngineDataStorage.java
index 361d45dbbb..308e15b0bc 100644
--- 
a/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/tdengine/TdEngineDataStorage.java
+++ 
b/hertzbeat-warehouse/src/main/java/org/apache/hertzbeat/warehouse/store/history/tsdb/tdengine/TdEngineDataStorage.java
@@ -295,8 +295,8 @@ public class TdEngineDataStorage extends 
AbstractHistoryDataStorage {
                     fieldSqlBuilder.append(")");
                     String createTableSql = 
String.format(CREATE_SUPER_TABLE_SQL, superTable, fieldSqlBuilder);
                     try {
-                        assert statement != null;
-
+                        // statement is guaranteed non-null here because we 
entered this
+                        // catch block only after statement.execute() threw at 
line 272
                         if (log.isInfoEnabled()) {
                             log.info("[tdengine-data]: create {} use sql: 
{}.", superTable, createTableSql);
                         }
@@ -314,12 +314,13 @@ public class TdEngineDataStorage extends 
AbstractHistoryDataStorage {
                     }
                 }
             } finally {
-                try {
-                    assert connection != null;
-                    connection.close();
-                } catch (Exception e) {
-                    if (log.isErrorEnabled()) {
-                        log.error(e.getMessage());
+                if (connection != null) {
+                    try {
+                        connection.close();
+                    } catch (Exception e) {
+                        if (log.isErrorEnabled()) {
+                            log.error(e.getMessage());
+                        }
                     }
                 }
             }
@@ -444,12 +445,13 @@ public class TdEngineDataStorage extends 
AbstractHistoryDataStorage {
                 log.error(e.getMessage());
             }
         } finally {
-            try {
-                assert connection != null;
-                connection.close();
-            } catch (Exception e) {
-                if (log.isErrorEnabled()) {
-                    log.error(e.getMessage());
+            if (connection != null) {
+                try {
+                    connection.close();
+                } catch (Exception e) {
+                    if (log.isErrorEnabled()) {
+                        log.error(e.getMessage());
+                    }
                 }
             }
         }
@@ -494,12 +496,13 @@ public class TdEngineDataStorage extends 
AbstractHistoryDataStorage {
                     log.error(e.getMessage(), e);
                 }
             } finally {
-                try {
-                    assert conn != null;
-                    conn.close();
-                } catch (Exception e) {
-                    if (log.isErrorEnabled()) {
-                        log.error(e.getMessage());
+                if (conn != null) {
+                    try {
+                        conn.close();
+                    } catch (Exception e) {
+                        if (log.isErrorEnabled()) {
+                            log.error(e.getMessage());
+                        }
                     }
                 }
             }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to