Browse Source

AI rule node: add AI settings lifecycle events handling in listeners

pull/13371/head
Dmytro Skarzhynets 1 year ago
parent
commit
bdb657e213
No known key found for this signature in database GPG Key ID: 2B51652F224037DF
  1. 4
      application/src/main/java/org/thingsboard/server/service/edge/EdgeEventSourcingListener.java
  2. 8
      application/src/main/java/org/thingsboard/server/service/edge/RelatedEdgesSourcingListener.java
  3. 4
      application/src/main/java/org/thingsboard/server/service/entitiy/EntityStateSourcingListener.java
  4. 22
      application/src/main/java/org/thingsboard/server/service/queue/DefaultTbClusterService.java
  5. 2
      dao/src/main/java/org/thingsboard/server/dao/housekeeper/CleanUpService.java

4
application/src/main/java/org/thingsboard/server/service/edge/EdgeEventSourcingListener.java

@ -112,7 +112,7 @@ public class EdgeEventSourcingListener {
return; return;
} }
try { try {
if (EntityType.TENANT.equals(entityType) || EntityType.EDGE.equals(entityType)) { if (EntityType.TENANT == entityType || EntityType.EDGE == entityType || EntityType.AI_SETTINGS == entityType) {
return; return;
} }
log.trace("[{}] DeleteEntityEvent called: {}", tenantId, event); log.trace("[{}] DeleteEntityEvent called: {}", tenantId, event);
@ -226,7 +226,7 @@ public class EdgeEventSourcingListener {
break; break;
case TENANT: case TENANT:
return !event.getCreated(); return !event.getCreated();
case API_USAGE_STATE, EDGE: case API_USAGE_STATE, EDGE, AI_SETTINGS:
return false; return false;
case DOMAIN: case DOMAIN:
if (entity instanceof Domain domain) { if (entity instanceof Domain domain) {

8
application/src/main/java/org/thingsboard/server/service/edge/RelatedEdgesSourcingListener.java

@ -58,8 +58,7 @@ public class RelatedEdgesSourcingListener {
log.trace("[{}] ActionEntityEvent called: {}", event.getTenantId(), event); log.trace("[{}] ActionEntityEvent called: {}", event.getTenantId(), event);
try { try {
switch (event.getActionType()) { switch (event.getActionType()) {
case ASSIGNED_TO_EDGE, UNASSIGNED_FROM_EDGE -> case ASSIGNED_TO_EDGE, UNASSIGNED_FROM_EDGE -> relatedEdgesService.publishRelatedEdgeIdsEvictEvent(event.getTenantId(), event.getEntityId());
relatedEdgesService.publishRelatedEdgeIdsEvictEvent(event.getTenantId(), event.getEntityId());
} }
} catch (Exception e) { } catch (Exception e) {
log.error("[{}] failed to process ActionEntityEvent: {}", event.getTenantId(), event, e); log.error("[{}] failed to process ActionEntityEvent: {}", event.getTenantId(), event, e);
@ -67,7 +66,10 @@ public class RelatedEdgesSourcingListener {
}); });
} }
@TransactionalEventListener(fallbackExecution = true) @TransactionalEventListener(
fallbackExecution = true,
condition = "#event.entityId.getEntityType() != T(org.thingsboard.server.common.data.EntityType).AI_SETTINGS"
)
public void handleEvent(DeleteEntityEvent<?> event) { public void handleEvent(DeleteEntityEvent<?> event) {
executorService.submit(() -> { executorService.submit(() -> {
log.trace("[{}] DeleteEntityEvent called: {}", event.getTenantId(), event); log.trace("[{}] DeleteEntityEvent called: {}", event.getTenantId(), event);

4
application/src/main/java/org/thingsboard/server/service/entitiy/EntityStateSourcingListener.java

@ -96,7 +96,7 @@ public class EntityStateSourcingListener {
case ASSET -> { case ASSET -> {
onAssetUpdate(event.getEntity(), event.getOldEntity()); onAssetUpdate(event.getEntity(), event.getOldEntity());
} }
case ASSET_PROFILE, ENTITY_VIEW, NOTIFICATION_RULE -> { case ASSET_PROFILE, ENTITY_VIEW, NOTIFICATION_RULE, AI_SETTINGS -> {
tbClusterService.broadcastEntityStateChangeEvent(tenantId, entityId, lifecycleEvent); tbClusterService.broadcastEntityStateChangeEvent(tenantId, entityId, lifecycleEvent);
} }
case RULE_CHAIN -> { case RULE_CHAIN -> {
@ -158,7 +158,7 @@ public class EntityStateSourcingListener {
Asset asset = (Asset) event.getEntity(); Asset asset = (Asset) event.getEntity();
tbClusterService.onAssetDeleted(tenantId, asset, null); tbClusterService.onAssetDeleted(tenantId, asset, null);
} }
case ASSET_PROFILE, ENTITY_VIEW, CUSTOMER, EDGE, NOTIFICATION_RULE -> { case ASSET_PROFILE, ENTITY_VIEW, CUSTOMER, EDGE, NOTIFICATION_RULE, AI_SETTINGS -> {
tbClusterService.broadcastEntityStateChangeEvent(tenantId, entityId, ComponentLifecycleEvent.DELETED); tbClusterService.broadcastEntityStateChangeEvent(tenantId, entityId, ComponentLifecycleEvent.DELETED);
} }
case NOTIFICATION_REQUEST -> { case NOTIFICATION_REQUEST -> {

22
application/src/main/java/org/thingsboard/server/service/queue/DefaultTbClusterService.java

@ -584,16 +584,18 @@ public class DefaultTbClusterService implements TbClusterService {
TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> toRuleEngineProducer = producerProvider.getRuleEngineNotificationsMsgProducer(); TbQueueProducer<TbProtoQueueMsg<ToRuleEngineNotificationMsg>> toRuleEngineProducer = producerProvider.getRuleEngineNotificationsMsgProducer();
Set<String> tbRuleEngineServices = partitionService.getAllServiceIds(ServiceType.TB_RULE_ENGINE); Set<String> tbRuleEngineServices = partitionService.getAllServiceIds(ServiceType.TB_RULE_ENGINE);
EntityType entityType = msg.getEntityId().getEntityType(); EntityType entityType = msg.getEntityId().getEntityType();
if (entityType.equals(EntityType.TENANT) if (entityType.isOneOf(
|| entityType.equals(EntityType.TENANT_PROFILE) EntityType.TENANT,
|| entityType.equals(EntityType.DEVICE_PROFILE) EntityType.API_USAGE_STATE,
|| (entityType.equals(EntityType.ASSET) && msg.getEvent() == ComponentLifecycleEvent.UPDATED) EntityType.ENTITY_VIEW,
|| entityType.equals(EntityType.ASSET_PROFILE) EntityType.NOTIFICATION_RULE,
|| entityType.equals(EntityType.API_USAGE_STATE) EntityType.CALCULATED_FIELD,
|| (entityType.equals(EntityType.DEVICE) && msg.getEvent() == ComponentLifecycleEvent.UPDATED) EntityType.AI_SETTINGS,
|| entityType.equals(EntityType.ENTITY_VIEW) EntityType.TENANT_PROFILE,
|| entityType.equals(EntityType.NOTIFICATION_RULE) EntityType.DEVICE_PROFILE,
|| entityType.equals(EntityType.CALCULATED_FIELD) EntityType.ASSET_PROFILE)
|| (entityType == EntityType.ASSET && msg.getEvent() == ComponentLifecycleEvent.UPDATED)
|| (entityType == EntityType.DEVICE && msg.getEvent() == ComponentLifecycleEvent.UPDATED)
) { ) {
TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> toCoreNfProducer = producerProvider.getTbCoreNotificationsMsgProducer(); TbQueueProducer<TbProtoQueueMsg<ToCoreNotificationMsg>> toCoreNfProducer = producerProvider.getTbCoreNotificationsMsgProducer();
Set<String> tbCoreServices = partitionService.getAllServiceIds(ServiceType.TB_CORE); Set<String> tbCoreServices = partitionService.getAllServiceIds(ServiceType.TB_CORE);

2
dao/src/main/java/org/thingsboard/server/dao/housekeeper/CleanUpService.java

@ -46,7 +46,7 @@ public class CleanUpService {
private final Set<EntityType> skippedEntities = EnumSet.of( private final Set<EntityType> skippedEntities = EnumSet.of(
EntityType.ALARM, EntityType.QUEUE, EntityType.TB_RESOURCE, EntityType.OTA_PACKAGE, EntityType.ALARM, EntityType.QUEUE, EntityType.TB_RESOURCE, EntityType.OTA_PACKAGE,
EntityType.NOTIFICATION_REQUEST, EntityType.NOTIFICATION_TEMPLATE, EntityType.NOTIFICATION_REQUEST, EntityType.NOTIFICATION_TEMPLATE,
EntityType.NOTIFICATION_TARGET, EntityType.NOTIFICATION_RULE EntityType.NOTIFICATION_TARGET, EntityType.NOTIFICATION_RULE, EntityType.AI_SETTINGS
); );
@TransactionalEventListener(fallbackExecution = true) // after transaction commit @TransactionalEventListener(fallbackExecution = true) // after transaction commit

Loading…
Cancel
Save