From 0878f8136145b2b912451e71e1b0702fa1cd8316 Mon Sep 17 00:00:00 2001 From: zhouhao Date: Fri, 11 Jul 2025 10:10:38 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=A2=9E=E5=8A=A0=E6=97=B6?= =?UTF-8?q?=E5=BA=8F=E6=A8=A1=E5=9D=97=E9=94=99=E8=AF=AF=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DefaultTimescaleDBDataWriter.java | 5 ++++ .../TimeseriesExceptionAnalyzerReporter.java | 26 +++++++++++++++++++ ...k.web.exception.analyzer.ExceptionAnalyzer | 1 + 3 files changed, 32 insertions(+) create mode 100644 jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/error/TimeseriesExceptionAnalyzerReporter.java create mode 100644 jetlinks-components/timeseries-component/src/main/resources/META-INF/services/org.hswebframework.web.exception.analyzer.ExceptionAnalyzer diff --git a/jetlinks-components/timescaledb-component/src/main/java/org/jetlinks/community/timescaledb/impl/DefaultTimescaleDBDataWriter.java b/jetlinks-components/timescaledb-component/src/main/java/org/jetlinks/community/timescaledb/impl/DefaultTimescaleDBDataWriter.java index 5ba5dfaa..336dd468 100644 --- a/jetlinks-components/timescaledb-component/src/main/java/org/jetlinks/community/timescaledb/impl/DefaultTimescaleDBDataWriter.java +++ b/jetlinks-components/timescaledb-component/src/main/java/org/jetlinks/community/timescaledb/impl/DefaultTimescaleDBDataWriter.java @@ -17,6 +17,7 @@ package org.jetlinks.community.timescaledb.impl; import com.google.common.collect.Collections2; import com.google.common.collect.Maps; +import io.r2dbc.spi.R2dbcBadGrammarException; import io.r2dbc.spi.R2dbcException; import lombok.AllArgsConstructor; import lombok.Getter; @@ -155,6 +156,10 @@ public class DefaultTimescaleDBDataWriter implements TimescaleDBDataWriter, Comm } private boolean needRetry(Throwable err) { + // 数据库语法错误? + if (ErrorUtils.hasException(err, R2dbcBadGrammarException.class)) { + return false; + } return ErrorUtils.hasException( err, R2dbcException.class, diff --git a/jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/error/TimeseriesExceptionAnalyzerReporter.java b/jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/error/TimeseriesExceptionAnalyzerReporter.java new file mode 100644 index 00000000..cb9ec55b --- /dev/null +++ b/jetlinks-components/timeseries-component/src/main/java/org/jetlinks/community/timeseries/error/TimeseriesExceptionAnalyzerReporter.java @@ -0,0 +1,26 @@ +package org.jetlinks.community.timeseries.error; + +import lombok.extern.slf4j.Slf4j; +import org.hswebframework.web.exception.analyzer.ExceptionAnalyzerReporter; +import org.jetlinks.community.timeseries.TimeSeriesManager; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; + +import java.util.Objects; + +@Slf4j +public class TimeseriesExceptionAnalyzerReporter extends ExceptionAnalyzerReporter { + + + public TimeseriesExceptionAnalyzerReporter() { + init(); + } + + void init() { + addReporter( + err -> err instanceof NoSuchBeanDefinitionException && + Objects.equals(((NoSuchBeanDefinitionException) err).getBeanType(), + TimeSeriesManager.class), + err -> + log.warn(wrapLog("请正确配置时序模块. 见文档: https://hanta.yuque.com/px7kg1/dev/xyr9mw8peqwtlhxc"), err)); + } +} diff --git a/jetlinks-components/timeseries-component/src/main/resources/META-INF/services/org.hswebframework.web.exception.analyzer.ExceptionAnalyzer b/jetlinks-components/timeseries-component/src/main/resources/META-INF/services/org.hswebframework.web.exception.analyzer.ExceptionAnalyzer new file mode 100644 index 00000000..8cb6ecb5 --- /dev/null +++ b/jetlinks-components/timeseries-component/src/main/resources/META-INF/services/org.hswebframework.web.exception.analyzer.ExceptionAnalyzer @@ -0,0 +1 @@ +org.jetlinks.community.timeseries.error.TimeseriesExceptionAnalyzerReporter \ No newline at end of file