Browse Source

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.
pull/15853/head
dshvaika 3 months ago
parent
commit
6a092860c9
  1. 2
      application/src/main/java/org/thingsboard/server/service/rpc/TbRpcService.java
  2. 15
      dao/src/main/java/org/thingsboard/server/dao/sql/rpc/JpaRpcDao.java

2
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());

15
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<RpcEntity, Rpc> implements RpcDao, TenantEntityDao<Rpc> {
@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;

Loading…
Cancel
Save