Browse Source

added debug mode default value

pull/11861/head
YevhenBondarenko 2 years ago
parent
commit
8d96de649d
  1. 4
      application/src/main/java/org/thingsboard/server/actors/ActorSystemContext.java
  2. 18
      application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleNodeActorMessageProcessor.java
  3. 5
      application/src/main/java/org/thingsboard/server/controller/SystemInfoController.java
  4. 9
      application/src/main/resources/thingsboard.yml
  5. 8
      common/data/src/main/java/org/thingsboard/server/common/data/tenant/profile/DefaultTenantProfileConfiguration.java
  6. 2
      dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java

4
application/src/main/java/org/thingsboard/server/actors/ActorSystemContext.java

@ -577,10 +577,6 @@ public class ActorSystemContext {
@Getter
private boolean externalNodeForceAck;
@Value("${debug_mode.max_duration:60}")
@Getter
private int maxDebugModeDurationMinutes;
@Value("${state.rule.node.deviceState.rateLimit:1:1,30:60,60:3600}")
@Getter
private String deviceStateNodeRateLimitConfig;

18
application/src/main/java/org/thingsboard/server/actors/ruleChain/RuleNodeActorMessageProcessor.java

@ -16,6 +16,7 @@
package org.thingsboard.server.actors.ruleChain;
import lombok.extern.slf4j.Slf4j;
import org.thingsboard.common.util.DebugModeUtil;
import org.thingsboard.rule.engine.api.TbNode;
import org.thingsboard.rule.engine.api.TbNodeConfiguration;
import org.thingsboard.server.actors.ActorSystemContext;
@ -27,7 +28,6 @@ import org.thingsboard.server.common.data.id.RuleNodeId;
import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.plugin.ComponentLifecycleState;
import org.thingsboard.server.common.data.rule.RuleNode;
import org.thingsboard.common.util.DebugModeUtil;
import org.thingsboard.server.common.msg.TbMsg;
import org.thingsboard.server.common.msg.queue.PartitionChangeMsg;
import org.thingsboard.server.common.msg.queue.RuleNodeException;
@ -78,8 +78,8 @@ public class RuleNodeActorMessageProcessor extends ComponentMsgProcessor<RuleNod
if (isMyNodePartition(newRuleNode)) {
this.info = new RuleNodeInfo(entityId, ruleChainName, getName(newRuleNode));
boolean restartRequired = state != ComponentLifecycleState.ACTIVE ||
!(ruleNode.getType().equals(newRuleNode.getType()) &&
ruleNode.getConfiguration().equals(newRuleNode.getConfiguration()));
!(ruleNode.getType().equals(newRuleNode.getType()) &&
ruleNode.getConfiguration().equals(newRuleNode.getConfiguration()));
this.ruleNode = newRuleNode;
this.defaultCtx.updateSelf(newRuleNode);
if (restartRequired) {
@ -130,8 +130,7 @@ public class RuleNodeActorMessageProcessor extends ComponentMsgProcessor<RuleNod
int maxRuleNodeExecutionsPerMessage = tenantProfileConfiguration.getMaxRuleNodeExecsPerMessage();
if (maxRuleNodeExecutionsPerMessage == 0 || ruleNodeCount < maxRuleNodeExecutionsPerMessage) {
apiUsageClient.report(tenantId, tbMsg.getCustomerId(), ApiUsageRecordKey.RE_EXEC_COUNT);
persistDebugInputIfAllowed(msg.getMsg(), "Self", tenantProfileConfiguration
.getMaxDebugModeDurationMinutes(systemContext.getMaxDebugModeDurationMinutes()));
persistDebugInputIfAllowed(msg.getMsg(), "Self");
try {
tbNode.onMsg(defaultCtx, msg.getMsg());
} catch (Exception e) {
@ -154,8 +153,7 @@ public class RuleNodeActorMessageProcessor extends ComponentMsgProcessor<RuleNod
int maxRuleNodeExecutionsPerMessage = tenantProfileConfiguration.getMaxRuleNodeExecsPerMessage();
if (maxRuleNodeExecutionsPerMessage == 0 || ruleNodeCount < maxRuleNodeExecutionsPerMessage) {
apiUsageClient.report(tenantId, tbMsg.getCustomerId(), ApiUsageRecordKey.RE_EXEC_COUNT);
persistDebugInputIfAllowed(msg.getMsg(), msg.getFromRelationType(), tenantProfileConfiguration
.getMaxDebugModeDurationMinutes(systemContext.getMaxDebugModeDurationMinutes()));
persistDebugInputIfAllowed(msg.getMsg(), msg.getFromRelationType());
try {
tbNode.onMsg(msg.getCtx(), msg.getMsg());
} catch (Exception e) {
@ -197,8 +195,8 @@ public class RuleNodeActorMessageProcessor extends ComponentMsgProcessor<RuleNod
private boolean isMyNodePartition(RuleNode ruleNode) {
boolean result = ruleNode == null || !ruleNode.isSingletonMode()
|| systemContext.getDiscoveryService().isMonolith()
|| defaultCtx.isLocalEntity(ruleNode.getId());
|| systemContext.getDiscoveryService().isMonolith()
|| defaultCtx.isLocalEntity(ruleNode.getId());
if (!result) {
log.trace("[{}][{}] Is not my node partition", tenantId, entityId);
}
@ -218,7 +216,7 @@ public class RuleNodeActorMessageProcessor extends ComponentMsgProcessor<RuleNod
defaultCtx.ack(source);
}
private void persistDebugInputIfAllowed(TbMsg msg, String fromNodeConnectionType, int debugModeDurationMinutes) {
private void persistDebugInputIfAllowed(TbMsg msg, String fromNodeConnectionType) {
if (DebugModeUtil.isDebugAllAvailable(ruleNode)) {
systemContext.persistDebugInput(tenantId, entityId, msg, fromNodeConnectionType);
}

5
application/src/main/java/org/thingsboard/server/controller/SystemInfoController.java

@ -19,7 +19,6 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.PostConstruct;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -71,15 +70,13 @@ public class SystemInfoController extends BaseController {
@Value("${ui.dashboard.max_datapoints_limit}")
private long maxDatapointsLimit;
@Value("${debug_mode.max_duration:60}")
@Value("${debug_mode.max_duration:15}")
private int maxDebugModeDurationMinutes;
@Value("${actors.rule.chain.debug_mode_rate_limits_per_tenant.enabled:true}")
@Getter
private boolean ruleChainDebugPerTenantLimitsEnabled;
@Value("${actors.rule.chain.debug_mode_rate_limits_per_tenant.configuration:50000:3600}")
@Getter
private String ruleChainDebugPerTenantLimitsConfiguration;
@Autowired(required = false)

9
application/src/main/resources/thingsboard.yml

@ -496,9 +496,12 @@ actors:
persist_frequency: "${ACTORS_STATISTICS_PERSIST_FREQUENCY:3600000}"
debug_mode:
# The maximum allowed duration (in minutes) for the debug mode to be used.
# If a specific value is set in the tenant profile, the minimum between value from profile and this setting will be used.
max_duration: "${DEBUG_MODE_MAX_DURATION_MINUTES:60}"
# Maximum duration (in minutes) for debug mode.
# Min value is 1 minute.
# If set in the tenant profile and valid, it will be used.
# Otherwise, the value from this setting is used.
# If value from this setting is invalid, the default value (15 minutes) will be used.
max_duration: "${DEBUG_MODE_MAX_DURATION_MINUTES:15}"
# Cache settings parameters
cache:

8
common/data/src/main/java/org/thingsboard/server/common/data/tenant/profile/DefaultTenantProfileConfiguration.java

@ -36,6 +36,8 @@ public class DefaultTenantProfileConfiguration implements TenantProfileConfigura
@Serial
private static final long serialVersionUID = -7134932690332578595L;
private static final int DEBUG_MODE_DEFAULT_DURATION_MINUTES = 15;
private long maxDevices;
private long maxAssets;
private long maxCustomers;
@ -205,9 +207,7 @@ public class DefaultTenantProfileConfiguration implements TenantProfileConfigura
@Override
public int getMaxDebugModeDurationMinutes(int systemMaxDebugModeDurationMinutes) {
if (maxDebugModeDurationMinutes > 0) {
return Math.min(systemMaxDebugModeDurationMinutes, maxDebugModeDurationMinutes);
}
return systemMaxDebugModeDurationMinutes;
return maxDebugModeDurationMinutes > 0 ? maxDebugModeDurationMinutes : systemMaxDebugModeDurationMinutes > 0 ?
systemMaxDebugModeDurationMinutes : DEBUG_MODE_DEFAULT_DURATION_MINUTES;
}
}

2
dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java

@ -117,7 +117,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC
@Lazy
private TbTenantProfileCache tbTenantProfileCache;
@Value("${debug_mode.max_duration:60}")
@Value("${debug_mode.max_duration:15}")
private int maxDebugModeDurationMinutes;
@Override

Loading…
Cancel
Save