Browse Source

minor refactoring

pull/14474/head
IrynaMatveieva 8 months ago
parent
commit
9c6ab72915
  1. 8
      application/src/main/data/upgrade/basic/schema_update.sql
  2. 2
      application/src/main/java/org/thingsboard/server/controller/SystemInfoController.java
  3. 4
      application/src/main/java/org/thingsboard/server/controller/TenantProfileController.java
  4. 8
      application/src/main/java/org/thingsboard/server/service/cf/ctx/state/CalculatedFieldCtx.java
  5. 31
      application/src/main/java/org/thingsboard/server/service/cf/ctx/state/aggregation/single/EntityAggregationCalculatedFieldState.java
  6. 2
      common/data/src/main/java/org/thingsboard/server/common/data/SystemParams.java
  7. 2
      common/data/src/main/java/org/thingsboard/server/common/data/tenant/profile/DefaultTenantProfileConfiguration.java

8
application/src/main/data/upgrade/basic/schema_update.sql

@ -26,7 +26,9 @@ SET profile_data = jsonb_set(
'maxRelatedEntitiesToReturnPerCfArgument', 100,
'minAllowedDeduplicationIntervalInSecForCF', 10,
'minAllowedAggregationIntervalInSecForCF', 60,
'minAllowedRealtimeAggregationIntervalInSecForCF', 300
'minAllowedIntermediateAggregationIntervalInSecForCF', 300,
'cfReevaluationCheckInterval', 60,
'alarmsReevaluationInterval', 60
)
||
jsonb_strip_nulls(profile_data -> 'configuration')
@ -38,7 +40,9 @@ WHERE NOT (
'maxRelatedEntitiesToReturnPerCfArgument',
'minAllowedDeduplicationIntervalInSecForCF',
'minAllowedAggregationIntervalInSecForCF',
'minAllowedRealtimeAggregationIntervalInSecForCF'
'minAllowedIntermediateAggregationIntervalInSecForCF',
'cfReevaluationCheckInterval',
'alarmsReevaluationInterval'
]
);

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

@ -166,7 +166,7 @@ public class SystemInfoController extends BaseController {
systemParams.setMaxRelationLevelPerCfArgument(tenantProfileConfiguration.getMaxRelationLevelPerCfArgument());
systemParams.setMinAllowedDeduplicationIntervalInSecForCF(tenantProfileConfiguration.getMinAllowedDeduplicationIntervalInSecForCF());
systemParams.setMinAllowedAggregationIntervalInSecForCF(tenantProfileConfiguration.getMinAllowedAggregationIntervalInSecForCF());
systemParams.setMinAllowedRealtimeAggregationIntervalInSecForCF(tenantProfileConfiguration.getMinAllowedRealtimeAggregationIntervalInSecForCF());
systemParams.setMinAllowedIntermediateAggregationIntervalInSecForCF(tenantProfileConfiguration.getMinAllowedIntermediateAggregationIntervalInSecForCF());
systemParams.setCfReevaluationCheckInterval(tenantProfileConfiguration.getCfReevaluationCheckInterval());
systemParams.setAlarmsReevaluationInterval(tenantProfileConfiguration.getAlarmsReevaluationInterval());
systemParams.setTrendzSettings(trendzSettingsService.findTrendzSettings(currentUser.getTenantId()));

4
application/src/main/java/org/thingsboard/server/controller/TenantProfileController.java

@ -169,7 +169,9 @@ public class TenantProfileController extends BaseController {
" \"maxSingleValueArgumentSizeInKBytes\": 2," +
" \"minAllowedDeduplicationIntervalInSecForCF\": 10," +
" \"minAllowedAggregationIntervalInSecForCF\": 60," +
" \"minAllowedRealtimeAggregationIntervalInSecForCF\": 300" +
" \"minAllowedIntermediateAggregationIntervalInSecForCF\": 300," +
" \"cfReevaluationCheckInterval\": 60," +
" \"alarmsReevaluationInterval\": 60" +
" }\n" +
" },\n" +
" \"default\": false\n" +

8
application/src/main/java/org/thingsboard/server/service/cf/ctx/state/CalculatedFieldCtx.java

@ -116,7 +116,7 @@ public class CalculatedFieldCtx implements Closeable {
private long maxStateSize;
private long maxSingleValueArgumentSize;
private long realtimeAggregationIntervalMillis;
private long intermediateAggregationIntervalMillis;
private boolean relationQueryDynamicArguments;
private List<String> mainEntityGeofencingArgumentNames;
@ -215,7 +215,7 @@ public class CalculatedFieldCtx implements Closeable {
ApiLimitService apiLimitService = systemContext.getApiLimitService();
this.maxStateSize = apiLimitService.getLimit(tenantId, DefaultTenantProfileConfiguration::getMaxStateSizeInKBytes) * 1024;
this.maxSingleValueArgumentSize = apiLimitService.getLimit(tenantId, DefaultTenantProfileConfiguration::getMaxSingleValueArgumentSizeInKBytes) * 1024;
this.realtimeAggregationIntervalMillis = TimeUnit.SECONDS.toMillis(apiLimitService.getLimit(tenantId, DefaultTenantProfileConfiguration::getMinAllowedRealtimeAggregationIntervalInSecForCF));
this.intermediateAggregationIntervalMillis = TimeUnit.SECONDS.toMillis(apiLimitService.getLimit(tenantId, DefaultTenantProfileConfiguration::getMinAllowedIntermediateAggregationIntervalInSecForCF));
this.cfCheckReevaluationInterval = apiLimitService.getLimit(tenantId, DefaultTenantProfileConfiguration::getCfReevaluationCheckInterval);
this.alarmReevaluationInterval = apiLimitService.getLimit(tenantId, DefaultTenantProfileConfiguration::getAlarmsReevaluationInterval);
}
@ -232,7 +232,7 @@ public class CalculatedFieldCtx implements Closeable {
return true;
}
if (entityAggregationConfig.isProduceIntermediateResult()) {
if (now - lastReevaluationTs >= realtimeAggregationIntervalMillis) {
if (now - lastReevaluationTs >= intermediateAggregationIntervalMillis) {
lastReevaluationTs = now;
return true;
}
@ -306,7 +306,7 @@ public class CalculatedFieldCtx implements Closeable {
ApiLimitService apiLimitService = systemContext.getApiLimitService();
this.maxStateSize = apiLimitService.getLimit(tenantId, DefaultTenantProfileConfiguration::getMaxStateSizeInKBytes) * 1024;
this.maxSingleValueArgumentSize = apiLimitService.getLimit(tenantId, DefaultTenantProfileConfiguration::getMaxSingleValueArgumentSizeInKBytes) * 1024;
this.realtimeAggregationIntervalMillis = TimeUnit.SECONDS.toMillis(apiLimitService.getLimit(tenantId, DefaultTenantProfileConfiguration::getMinAllowedRealtimeAggregationIntervalInSecForCF));
this.intermediateAggregationIntervalMillis = TimeUnit.SECONDS.toMillis(apiLimitService.getLimit(tenantId, DefaultTenantProfileConfiguration::getMinAllowedIntermediateAggregationIntervalInSecForCF));
this.cfCheckReevaluationInterval = apiLimitService.getLimit(tenantId, DefaultTenantProfileConfiguration::getCfReevaluationCheckInterval);
this.alarmReevaluationInterval = apiLimitService.getLimit(tenantId, DefaultTenantProfileConfiguration::getAlarmsReevaluationInterval);
}

31
application/src/main/java/org/thingsboard/server/service/cf/ctx/state/aggregation/single/EntityAggregationCalculatedFieldState.java

@ -206,14 +206,12 @@ public class EntityAggregationCalculatedFieldState extends BaseCalculatedFieldSt
handleExpiredInterval(intervalEntry, args, results);
expiredIntervals.add(intervalEntry);
} else if (now - startTs >= intervalEntry.getIntervalDuration()) {
handleActiveInterval(ctx, intervalEntry, args, results);
handleActiveInterval(ctx.getCfCheckReevaluationInterval(), intervalEntry, args, results);
if (watermarkDuration == 0) {
expiredIntervals.add(intervalEntry);
}
} else if (now - startTs < intervalEntry.getIntervalDuration()) {
if (produceIntermediateResult) {
handleCurrentInterval(ctx, intervalEntry, args, results);
}
} else if (produceIntermediateResult) {
handleActiveInterval(ctx.getIntermediateAggregationIntervalMillis(), intervalEntry, args, results);
}
}
@ -231,31 +229,12 @@ public class EntityAggregationCalculatedFieldState extends BaseCalculatedFieldSt
});
}
private void handleActiveInterval(CalculatedFieldCtx ctx,
private void handleActiveInterval(long cfCheckInterval,
AggIntervalEntry intervalEntry,
Map<String, AggIntervalEntryStatus> args,
Map<AggIntervalEntry, Map<String, ArgumentEntry>> results) {
args.forEach((argName, argEntryIntervalStatus) -> {
if (argEntryIntervalStatus.intervalPassed(ctx.getCfCheckReevaluationInterval())) {
if (argEntryIntervalStatus.argsUpdated()) {
argEntryIntervalStatus.setLastMetricsEvalTs(System.currentTimeMillis());
argEntryIntervalStatus.setLastArgsRefreshTs(-1);
processArgument(intervalEntry, argName, false, results);
} else if (argEntryIntervalStatus.getLastMetricsEvalTs() == -1) {
argEntryIntervalStatus.setLastMetricsEvalTs(System.currentTimeMillis());
processArgument(intervalEntry, argName, true, results);
}
}
});
}
private void handleCurrentInterval(CalculatedFieldCtx ctx,
AggIntervalEntry intervalEntry,
Map<String, AggIntervalEntryStatus> args,
Map<AggIntervalEntry, Map<String, ArgumentEntry>> results) {
long realtimeAggregationInterval = ctx.getRealtimeAggregationIntervalMillis();
args.forEach((argName, argEntryIntervalStatus) -> {
if (argEntryIntervalStatus.intervalPassed(realtimeAggregationInterval)) {
if (argEntryIntervalStatus.intervalPassed(cfCheckInterval)) {
if (argEntryIntervalStatus.argsUpdated()) {
argEntryIntervalStatus.setLastMetricsEvalTs(System.currentTimeMillis());
argEntryIntervalStatus.setLastArgsRefreshTs(-1);

2
common/data/src/main/java/org/thingsboard/server/common/data/SystemParams.java

@ -42,7 +42,7 @@ public class SystemParams {
int maxRelationLevelPerCfArgument;
long minAllowedDeduplicationIntervalInSecForCF;
long minAllowedAggregationIntervalInSecForCF;
long minAllowedRealtimeAggregationIntervalInSecForCF;
long minAllowedIntermediateAggregationIntervalInSecForCF;
long cfReevaluationCheckInterval;
long alarmsReevaluationInterval;
TrendzSettings trendzSettings;

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

@ -195,7 +195,7 @@ public class DefaultTenantProfileConfiguration implements TenantProfileConfigura
@Schema(example = "60")
private long minAllowedAggregationIntervalInSecForCF = 60;
@Schema(example = "300")
private long minAllowedRealtimeAggregationIntervalInSecForCF = 300;
private long minAllowedIntermediateAggregationIntervalInSecForCF = 300;
@Schema(example = "60")
private long cfReevaluationCheckInterval = 60;
@Schema(example = "60")

Loading…
Cancel
Save