|
|
|
@ -44,6 +44,8 @@ import org.thingsboard.server.common.data.id.EdgeId; |
|
|
|
import org.thingsboard.server.common.data.id.EntityId; |
|
|
|
import org.thingsboard.server.common.data.id.RuleChainId; |
|
|
|
import org.thingsboard.server.common.data.id.TenantId; |
|
|
|
import org.thingsboard.server.common.data.page.PageData; |
|
|
|
import org.thingsboard.server.common.data.page.PageLink; |
|
|
|
import org.thingsboard.server.common.data.plugin.ComponentLifecycleEvent; |
|
|
|
import org.thingsboard.server.common.data.queue.Queue; |
|
|
|
import org.thingsboard.server.common.msg.TbMsg; |
|
|
|
@ -57,6 +59,7 @@ import org.thingsboard.server.common.msg.queue.TopicPartitionInfo; |
|
|
|
import org.thingsboard.server.common.msg.rpc.FromDeviceRpcResponse; |
|
|
|
import org.thingsboard.server.common.msg.rule.engine.DeviceEdgeUpdateMsg; |
|
|
|
import org.thingsboard.server.common.msg.rule.engine.DeviceNameOrTypeUpdateMsg; |
|
|
|
import org.thingsboard.server.dao.edge.EdgeService; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.FromDeviceRPCResponseProto; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg; |
|
|
|
@ -68,8 +71,8 @@ import org.thingsboard.server.queue.TbQueueCallback; |
|
|
|
import org.thingsboard.server.queue.TbQueueProducer; |
|
|
|
import org.thingsboard.server.queue.common.MultipleTbQueueCallbackWrapper; |
|
|
|
import org.thingsboard.server.queue.common.TbProtoQueueMsg; |
|
|
|
import org.thingsboard.server.queue.discovery.TopicService; |
|
|
|
import org.thingsboard.server.queue.discovery.PartitionService; |
|
|
|
import org.thingsboard.server.queue.discovery.TopicService; |
|
|
|
import org.thingsboard.server.queue.provider.TbQueueProducerProvider; |
|
|
|
import org.thingsboard.server.queue.util.DataDecodingEncodingService; |
|
|
|
import org.thingsboard.server.service.gateway_device.GatewayNotificationsService; |
|
|
|
@ -77,6 +80,7 @@ import org.thingsboard.server.service.ota.OtaPackageStateService; |
|
|
|
import org.thingsboard.server.service.profile.TbAssetProfileCache; |
|
|
|
import org.thingsboard.server.service.profile.TbDeviceProfileCache; |
|
|
|
|
|
|
|
import java.util.Optional; |
|
|
|
import java.util.Set; |
|
|
|
import java.util.UUID; |
|
|
|
import java.util.concurrent.atomic.AtomicInteger; |
|
|
|
@ -116,6 +120,7 @@ public class DefaultTbClusterService implements TbClusterService { |
|
|
|
private final TbDeviceProfileCache deviceProfileCache; |
|
|
|
private final TbAssetProfileCache assetProfileCache; |
|
|
|
private final GatewayNotificationsService gatewayNotificationsService; |
|
|
|
private final EdgeService edgeService; |
|
|
|
|
|
|
|
@Override |
|
|
|
public void pushMsgToCore(TenantId tenantId, EntityId entityId, ToCoreMsg msg, TbQueueCallback callback) { |
|
|
|
@ -546,11 +551,17 @@ public class DefaultTbClusterService implements TbClusterService { |
|
|
|
pushMsgToCore(new DeviceEdgeUpdateMsg(tenantId, new DeviceId(entityId.getId()), edgeId), null); |
|
|
|
break; |
|
|
|
case UNASSIGNED_FROM_EDGE: |
|
|
|
pushMsgToCore(new DeviceEdgeUpdateMsg(tenantId, new DeviceId(entityId.getId()), null), null); |
|
|
|
EdgeId relatedEdgeId = findRelatedEdgeEdgeIdIfAny(tenantId, entityId); |
|
|
|
pushMsgToCore(new DeviceEdgeUpdateMsg(tenantId, new DeviceId(entityId.getId()), relatedEdgeId), null); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private EdgeId findRelatedEdgeEdgeIdIfAny(TenantId tenantId, EntityId entityId) { |
|
|
|
PageData<EdgeId> pageData = edgeService.findRelatedEdgeIdsByEntityId(tenantId, entityId, new PageLink(1)); |
|
|
|
return Optional.ofNullable(pageData).filter(pd -> pd.getTotalElements() == 1).map(pd -> pd.getData().get(0)).orElse(null); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onQueueChange(Queue queue) { |
|
|
|
log.trace("[{}][{}] Processing queue change [{}] event", queue.getTenantId(), queue.getId(), queue.getName()); |
|
|
|
|