diff --git a/application/src/main/java/org/thingsboard/server/actors/rule/RuleActorMessageProcessor.java b/application/src/main/java/org/thingsboard/server/actors/rule/RuleActorMessageProcessor.java index 82011c0d3c..1f64a923f1 100644 --- a/application/src/main/java/org/thingsboard/server/actors/rule/RuleActorMessageProcessor.java +++ b/application/src/main/java/org/thingsboard/server/actors/rule/RuleActorMessageProcessor.java @@ -234,18 +234,18 @@ class RuleActorMessageProcessor extends ComponentMsgProcessor { logger.info("[{}] Rule configuration was updated from {} to {}.", entityId, oldRuleMd, ruleMd); try { fetchPluginInfo(); - if (!Objects.equals(oldRuleMd.getFilters(), ruleMd.getFilters())) { + if (filters == null || !Objects.equals(oldRuleMd.getFilters(), ruleMd.getFilters())) { logger.info("[{}] Rule filters require restart due to json change from {} to {}.", entityId, mapper.writeValueAsString(oldRuleMd.getFilters()), mapper.writeValueAsString(ruleMd.getFilters())); stopFilters(); initFilters(); } - if (!Objects.equals(oldRuleMd.getProcessor(), ruleMd.getProcessor())) { + if (processor == null || !Objects.equals(oldRuleMd.getProcessor(), ruleMd.getProcessor())) { logger.info("[{}] Rule processor require restart due to configuration change.", entityId); stopProcessor(); initProcessor(); } - if (!Objects.equals(oldRuleMd.getAction(), ruleMd.getAction())) { + if (action == null || !Objects.equals(oldRuleMd.getAction(), ruleMd.getAction())) { logger.info("[{}] Rule action require restart due to configuration change.", entityId); stopAction(); initAction(); @@ -272,13 +272,15 @@ class RuleActorMessageProcessor extends ComponentMsgProcessor { if (action != null) { if (filters != null) { filters.forEach(f -> f.resume()); + } else { + initFilters(); } if (processor != null) { processor.resume(); + } else { + initProcessor(); } - if (action != null) { - action.resume(); - } + action.resume(); logger.info("[{}] Rule resumed.", entityId); } else { start();