From 6a092860c9f80f4ecf1ee8a8835201a9c96a3daf Mon Sep 17 00:00:00 2001 From: dshvaika Date: Tue, 7 Jul 2026 15:02:56 +0300 Subject: [PATCH] refactor(rpc): align JpaRpcDao injection and unify RE-notify error handling Address review feedback on the batched RPC persistence PR: - JpaRpcDao: replace field @Autowired with @RequiredArgsConstructor + final fields, matching the sibling batch DAOs (JpaBaseEventDao, JpaBaseEdgeEventDao). - TbRpcService: route the update path's post-persist notification through notifyRuleEngine() so create and update share identical try/catch + logging. --- .../server/service/rpc/TbRpcService.java | 2 +- .../thingsboard/server/dao/sql/rpc/JpaRpcDao.java | 15 ++++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/rpc/TbRpcService.java b/application/src/main/java/org/thingsboard/server/service/rpc/TbRpcService.java index 0e11658451..c7c9a1e188 100644 --- a/application/src/main/java/org/thingsboard/server/service/rpc/TbRpcService.java +++ b/application/src/main/java/org/thingsboard/server/service/rpc/TbRpcService.java @@ -85,7 +85,7 @@ public class TbRpcService { DonAsynchron.withCallback(future, persisted -> { if (Boolean.TRUE.equals(persisted)) { - pushRpcMsgToRuleEngine(tenantId, rpc); + notifyRuleEngine(tenantId, rpc); } else { log.debug("[{}][{}][{}] Skipping rule engine notification for status [{}] - RPC row no longer exists", tenantId, rpc.getDeviceId(), rpc.getId(), rpc.getStatus()); diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/rpc/JpaRpcDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/rpc/JpaRpcDao.java index 2340e4b64a..fcdfa17088 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/rpc/JpaRpcDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/rpc/JpaRpcDao.java @@ -18,8 +18,8 @@ package org.thingsboard.server.dao.sql.rpc; import com.google.common.util.concurrent.ListenableFuture; import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; @@ -49,16 +49,13 @@ import java.util.function.Function; @Slf4j @Component @SqlDao +@RequiredArgsConstructor public class JpaRpcDao extends JpaAbstractDao implements RpcDao, TenantEntityDao { - @Autowired - private RpcRepository rpcRepository; - @Autowired - private RpcUpdateRepository rpcUpdateRepository; - @Autowired - private ScheduledLogExecutorComponent logExecutor; - @Autowired - private StatsFactory statsFactory; + private final RpcRepository rpcRepository; + private final RpcUpdateRepository rpcUpdateRepository; + private final ScheduledLogExecutorComponent logExecutor; + private final StatsFactory statsFactory; @Value("${sql.rpc.batch_size:1000}") private int batchSize;