From cfec3fbea265198ff6c90fc4ea0907bc324bf9bb Mon Sep 17 00:00:00 2001 From: Volodymyr Babak Date: Thu, 26 Feb 2026 08:34:18 +0200 Subject: [PATCH] Update edge inside session --- .../service/edge/rpc/EdgeGrpcSession.java | 5 ++++ .../server/dao/edge/EdgeService.java | 2 -- .../server/dao/edge/EdgeServiceImpl.java | 23 +++++++------------ 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java index 41a5916e7b..474a6860d4 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java @@ -243,6 +243,11 @@ public abstract class EdgeGrpcSession implements Closeable { log.debug("[{}] onConfigurationUpdate [{}]", sessionId, edge); this.tenantId = edge.getTenantId(); this.edge = edge; + if (!this.edge.getCustomerId().equals(edge.getCustomerId())) { + // do not send edge configuration message on customer update + // message send by separate flow from assign_to or unassing_from customer + return; + } EdgeUpdateMsg edgeConfig = EdgeUpdateMsg.newBuilder() .setConfiguration(EdgeMsgConstructorUtils.constructEdgeConfiguration(edge)).build(); ResponseMsg edgeConfigMsg = ResponseMsg.newBuilder() diff --git a/common/dao-api/src/main/java/org/thingsboard/server/dao/edge/EdgeService.java b/common/dao-api/src/main/java/org/thingsboard/server/dao/edge/EdgeService.java index 52ff515918..7bf03a6a69 100644 --- a/common/dao-api/src/main/java/org/thingsboard/server/dao/edge/EdgeService.java +++ b/common/dao-api/src/main/java/org/thingsboard/server/dao/edge/EdgeService.java @@ -51,8 +51,6 @@ public interface EdgeService extends EntityDaoService { Edge saveEdge(Edge edge); - Edge saveEdge(Edge edge, boolean publishEvent); - Edge assignEdgeToCustomer(TenantId tenantId, EdgeId edgeId, CustomerId customerId); Edge unassignEdgeFromCustomer(TenantId tenantId, EdgeId edgeId); diff --git a/dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java index 91ee06aed2..5daf9b5aeb 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/edge/EdgeServiceImpl.java @@ -5,7 +5,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -66,7 +66,6 @@ import org.thingsboard.server.dao.entity.EntityCountService; import org.thingsboard.server.dao.eventsourcing.ActionEntityEvent; import org.thingsboard.server.dao.eventsourcing.DeleteEntityEvent; import org.thingsboard.server.dao.eventsourcing.SaveEntityEvent; -import org.thingsboard.server.exception.DataValidationException; import org.thingsboard.server.dao.relation.RelationService; import org.thingsboard.server.dao.rule.RuleChainService; import org.thingsboard.server.dao.service.DataValidator; @@ -75,6 +74,7 @@ import org.thingsboard.server.dao.service.Validator; import org.thingsboard.server.dao.sql.JpaExecutorService; import org.thingsboard.server.dao.timeseries.TimeseriesService; import org.thingsboard.server.dao.user.UserService; +import org.thingsboard.server.exception.DataValidationException; import java.util.ArrayList; import java.util.Collections; @@ -203,25 +203,18 @@ public class EdgeServiceImpl extends AbstractCachedEntityService doSaveEdge(edge, publishEvent)); + return saveEntity(edge, () -> doSaveEdge(edge)); } - private Edge doSaveEdge(Edge edge, boolean publishEvent) { + private Edge doSaveEdge(Edge edge) { log.trace("Executing saveEdge [{}]", edge); Edge oldEdge = edgeValidator.validate(edge, Edge::getTenantId); EdgeCacheEvictEvent evictEvent = new EdgeCacheEvictEvent(edge.getTenantId(), edge.getName(), oldEdge != null ? oldEdge.getName() : null); try { Edge savedEdge = edgeDao.save(edge.getTenantId(), edge); publishEvictEvent(evictEvent); - if (publishEvent) { - eventPublisher.publishEvent(SaveEntityEvent.builder().tenantId(savedEdge.getTenantId()) - .entityId(savedEdge.getId()).entity(savedEdge).created(edge.getId() == null).build()); - } + eventPublisher.publishEvent(SaveEntityEvent.builder().tenantId(savedEdge.getTenantId()) + .entityId(savedEdge.getId()).entity(savedEdge).created(edge.getId() == null).build()); if (edge.getId() == null) { countService.publishCountEntityEvictEvent(savedEdge.getTenantId(), EntityType.EDGE); } @@ -246,7 +239,7 @@ public class EdgeServiceImpl extends AbstractCachedEntityService