Merge pull request #11660 from YevhenBondarenko/fix/npe

fixed NPE in RuleNodeActorMessageProcessor
This commit is contained in:
Viacheslav Klimov 2024-09-16 12:31:28 +03:00 committed by GitHub
commit a4370d9b87
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 4 deletions

View File

@ -43,6 +43,7 @@ import org.thingsboard.server.gen.transport.TransportProtos;
@Slf4j
public class RuleNodeActorMessageProcessor extends ComponentMsgProcessor<RuleNodeId> {
private static final String UNKNOWN_NAME = "Unknown";
private final String ruleChainName;
private final TbApiUsageReportClient apiUsageClient;
private final DefaultTbContext defaultCtx;
@ -57,7 +58,7 @@ public class RuleNodeActorMessageProcessor extends ComponentMsgProcessor<RuleNod
this.ruleChainName = ruleChainName;
this.ruleNode = systemContext.getRuleChainService().findRuleNodeById(tenantId, entityId);
this.defaultCtx = new DefaultTbContext(systemContext, ruleChainName, new RuleNodeCtx(tenantId, parent, self, ruleNode));
this.info = new RuleNodeInfo(ruleNodeId, ruleChainName, ruleNode != null ? ruleNode.getName() : "Unknown");
this.info = new RuleNodeInfo(ruleNodeId, ruleChainName, getName(ruleNode));
}
@Override
@ -75,7 +76,7 @@ public class RuleNodeActorMessageProcessor extends ComponentMsgProcessor<RuleNod
public void onUpdate(TbActorCtx context) throws Exception {
RuleNode newRuleNode = systemContext.getRuleChainService().findRuleNodeById(tenantId, entityId);
if (isMyNodePartition(newRuleNode)) {
this.info = new RuleNodeInfo(entityId, ruleChainName, newRuleNode != null ? newRuleNode.getName() : "Unknown");
this.info = new RuleNodeInfo(entityId, ruleChainName, getName(newRuleNode));
boolean restartRequired = state != ComponentLifecycleState.ACTIVE ||
!(ruleNode.getType().equals(newRuleNode.getType()) && ruleNode.getConfiguration().equals(newRuleNode.getConfiguration()));
this.ruleNode = newRuleNode;
@ -167,7 +168,11 @@ public class RuleNodeActorMessageProcessor extends ComponentMsgProcessor<RuleNod
@Override
public String getComponentName() {
return ruleNode.getName();
return getName(ruleNode);
}
private String getName(RuleNode ruleNode) {
return ruleNode != null ? ruleNode.getName() : UNKNOWN_NAME;
}
private TbNode initComponent(RuleNode ruleNode) throws Exception {

View File

@ -240,7 +240,7 @@ public final class TbActorMailbox implements TbActorCtx {
highPriorityMsgs.forEach(msg -> msg.onTbActorStopped(stopReason));
normalPriorityMsgs.forEach(msg -> msg.onTbActorStopped(stopReason));
} catch (Throwable t) {
log.warn("[{}] Failed to destroy actor: {}", selfId, t);
log.warn("[{}] Failed to destroy actor: ", selfId, t);
}
});
}