Browse Source

Add createCondition to TbActorCtx

pull/8988/head
ViacheslavKlimov 3 years ago
parent
commit
97e9f43f65
  1. 13
      application/src/main/java/org/thingsboard/server/actors/app/AppActor.java
  2. 3
      application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleChainActorMessageProcessor.java
  3. 3
      application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleChainManagerActor.java
  4. 3
      application/src/main/java/org/thingsboard/server/actors/tenant/TenantActor.java
  5. 2
      common/actor/src/main/java/org/thingsboard/server/actors/TbActorCtx.java
  6. 4
      common/actor/src/main/java/org/thingsboard/server/actors/TbActorMailbox.java

13
application/src/main/java/org/thingsboard/server/actors/app/AppActor.java

@ -198,14 +198,11 @@ public class AppActor extends ContextAwareActor {
} }
private Optional<TbActorRef> getOrCreateTenantActor(TenantId tenantId) { private Optional<TbActorRef> getOrCreateTenantActor(TenantId tenantId) {
if (systemContext.getServiceInfoProvider().isService(ServiceType.TB_CORE) || return Optional.ofNullable(ctx.getOrCreateChildActor(new TbEntityActorId(tenantId),
systemContext.getPartitionService().isManagedByCurrentService(tenantId)) { () -> DefaultActorService.TENANT_DISPATCHER_NAME,
return Optional.of(ctx.getOrCreateChildActor(new TbEntityActorId(tenantId), () -> new TenantActor.ActorCreator(systemContext, tenantId),
() -> DefaultActorService.TENANT_DISPATCHER_NAME, () -> systemContext.getServiceInfoProvider().isService(ServiceType.TB_CORE) ||
() -> new TenantActor.ActorCreator(systemContext, tenantId))); systemContext.getPartitionService().isManagedByCurrentService(tenantId)));
} else {
return Optional.empty();
}
} }
private void onToEdgeSessionMsg(EdgeSessionMsg msg) { private void onToEdgeSessionMsg(EdgeSessionMsg msg) {

3
application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleChainActorMessageProcessor.java

@ -167,7 +167,8 @@ public class RuleChainActorMessageProcessor extends ComponentMsgProcessor<RuleCh
private TbActorRef createRuleNodeActor(TbActorCtx ctx, RuleNode ruleNode) { private TbActorRef createRuleNodeActor(TbActorCtx ctx, RuleNode ruleNode) {
return ctx.getOrCreateChildActor(new TbEntityActorId(ruleNode.getId()), return ctx.getOrCreateChildActor(new TbEntityActorId(ruleNode.getId()),
() -> DefaultActorService.RULE_DISPATCHER_NAME, () -> DefaultActorService.RULE_DISPATCHER_NAME,
() -> new RuleNodeActor.ActorCreator(systemContext, tenantId, entityId, ruleChainName, ruleNode.getId())); () -> new RuleNodeActor.ActorCreator(systemContext, tenantId, entityId, ruleChainName, ruleNode.getId()),
() -> true);
} }
private void initRoutes(RuleChain ruleChain, List<RuleNode> ruleNodeList) { private void initRoutes(RuleChain ruleChain, List<RuleNode> ruleNodeList) {

3
application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleChainManagerActor.java

@ -94,7 +94,8 @@ public abstract class RuleChainManagerActor extends ContextAwareActor {
} else { } else {
return new RuleChainActor.ActorCreator(systemContext, tenantId, ruleChain); return new RuleChainActor.ActorCreator(systemContext, tenantId, ruleChain);
} }
}); },
() -> true);
} }
protected TbActorRef getEntityActorRef(EntityId entityId) { protected TbActorRef getEntityActorRef(EntityId entityId) {

3
application/src/main/java/org/thingsboard/server/actors/tenant/TenantActor.java

@ -274,7 +274,8 @@ public class TenantActor extends RuleChainManagerActor {
private TbActorRef getOrCreateDeviceActor(DeviceId deviceId) { private TbActorRef getOrCreateDeviceActor(DeviceId deviceId) {
return ctx.getOrCreateChildActor(new TbEntityActorId(deviceId), return ctx.getOrCreateChildActor(new TbEntityActorId(deviceId),
() -> DefaultActorService.DEVICE_DISPATCHER_NAME, () -> DefaultActorService.DEVICE_DISPATCHER_NAME,
() -> new DeviceActorCreator(systemContext, tenantId, deviceId)); () -> new DeviceActorCreator(systemContext, tenantId, deviceId),
() -> true);
} }
private void onToEdgeSessionMsg(EdgeSessionMsg msg) { private void onToEdgeSessionMsg(EdgeSessionMsg msg) {

2
common/actor/src/main/java/org/thingsboard/server/actors/TbActorCtx.java

@ -32,7 +32,7 @@ public interface TbActorCtx extends TbActorRef {
void stop(TbActorId target); void stop(TbActorId target);
TbActorRef getOrCreateChildActor(TbActorId actorId, Supplier<String> dispatcher, Supplier<TbActorCreator> creator); TbActorRef getOrCreateChildActor(TbActorId actorId, Supplier<String> dispatcher, Supplier<TbActorCreator> creator, Supplier<Boolean> createCondition);
void broadcastToChildren(TbActorMsg msg); void broadcastToChildren(TbActorMsg msg);

4
common/actor/src/main/java/org/thingsboard/server/actors/TbActorMailbox.java

@ -214,9 +214,9 @@ public final class TbActorMailbox implements TbActorCtx {
} }
@Override @Override
public TbActorRef getOrCreateChildActor(TbActorId actorId, Supplier<String> dispatcher, Supplier<TbActorCreator> creator) { public TbActorRef getOrCreateChildActor(TbActorId actorId, Supplier<String> dispatcher, Supplier<TbActorCreator> creator, Supplier<Boolean> createCondition) {
TbActorRef actorRef = system.getActor(actorId); TbActorRef actorRef = system.getActor(actorId);
if (actorRef == null) { if (actorRef == null && createCondition.get()) {
return system.createChildActor(dispatcher.get(), creator.get(), selfId); return system.createChildActor(dispatcher.get(), creator.get(), selfId);
} else { } else {
return actorRef; return actorRef;

Loading…
Cancel
Save