Browse Source

fixed timeout and removed unnecessary abtract classes

pull/14225/head
IrynaMatveieva 10 months ago
parent
commit
5918bbf082
  1. 26
      application/src/main/java/org/thingsboard/server/service/cf/AbstractCalculatedFieldProcessingService.java
  2. 12
      application/src/main/java/org/thingsboard/server/service/cf/DefaultCalculatedFieldProcessingService.java
  3. 6
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/AttributeImmediateOutputStrategy.java
  4. 6
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/AttributeRuleChainOutputStrategy.java
  5. 25
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/ImmediateOutputStrategy.java
  6. 6
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/OutputStrategy.java
  7. 6
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/OutputStrategyType.java
  8. 25
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/RuleChainOutputStrategy.java
  9. 6
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/TimeSeriesImmediateOutputStrategy.java
  10. 6
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/TimeSeriesRuleChainOutputStrategy.java

26
application/src/main/java/org/thingsboard/server/service/cf/AbstractCalculatedFieldProcessingService.java

@ -361,21 +361,19 @@ public abstract class AbstractCalculatedFieldProcessingService {
case TIME_SERIES -> saveTimeSeries(tenantId, entityId, cfResult, cfIds, System.currentTimeMillis(), future);
}
if (log.isTraceEnabled()) {
Futures.addCallback(future, new FutureCallback<>() {
@Override
public void onSuccess(Void v) {
callback.onSuccess();
log.debug("[{}][{}] Saved CF result: {}", tenantId, entityId, cfResult);
}
Futures.addCallback(future, new FutureCallback<>() {
@Override
public void onSuccess(Void v) {
callback.onSuccess();
log.debug("[{}][{}] Saved CF result: {}", tenantId, entityId, cfResult);
}
@Override
public void onFailure(Throwable t) {
callback.onFailure(t);
log.error("[{}][{}] Failed to save CF result {}", tenantId, entityId, cfResult, t);
}
}, MoreExecutors.directExecutor());
}
@Override
public void onFailure(Throwable t) {
callback.onFailure(t);
log.error("[{}][{}] Failed to save CF result {}", tenantId, entityId, cfResult, t);
}
}, MoreExecutors.directExecutor());
}
private void saveAttributes(TenantId tenantId, EntityId entityId, TelemetryCalculatedFieldResult cfResult, List<CalculatedFieldId> cfIds, SettableFuture<Void> future) {

12
application/src/main/java/org/thingsboard/server/service/cf/DefaultCalculatedFieldProcessingService.java

@ -96,8 +96,10 @@ public class DefaultCalculatedFieldProcessingService extends AbstractCalculatedF
@Override
public Map<String, ArgumentEntry> fetchDynamicArgsFromDb(CalculatedFieldCtx ctx, EntityId entityId) {
return switch (ctx.getCfType()) {
case GEOFENCING -> resolveArgumentFutures(fetchGeofencingCalculatedFieldArguments(ctx, entityId, true, System.currentTimeMillis()));
case PROPAGATION -> resolveArgumentFutures(Map.of(PROPAGATION_CONFIG_ARGUMENT, fetchPropagationCalculatedFieldArgument(ctx, entityId)));
case GEOFENCING ->
resolveArgumentFutures(fetchGeofencingCalculatedFieldArguments(ctx, entityId, true, System.currentTimeMillis()));
case PROPAGATION ->
resolveArgumentFutures(Map.of(PROPAGATION_CONFIG_ARGUMENT, fetchPropagationCalculatedFieldArgument(ctx, entityId)));
default -> Collections.emptyMap();
};
}
@ -137,9 +139,9 @@ public class DefaultCalculatedFieldProcessingService extends AbstractCalculatedF
}
TelemetryCalculatedFieldResult telemetryResult = result instanceof TelemetryCalculatedFieldResult telemetryRes
? telemetryRes : ((PropagationCalculatedFieldResult) result).getResult();
switch (telemetryResult.getOutputStrategy().getStrategyType()) {
case IMMEDIATE -> processImmediately(tenantId, entityId, result, cfIds, callback);
case RULE_CHAIN -> pushMsgToRuleEngine(tenantId, entityId, result, cfIds, callback);
switch (telemetryResult.getOutputStrategy().getType()) {
case IMMEDIATE_ATTRIBUTES, IMMEDIATE_TIME_SERIES -> processImmediately(tenantId, entityId, result, cfIds, callback);
case RULE_CHAIN_ATTRIBUTES, RULE_CHAIN_TIME_SERIES -> pushMsgToRuleEngine(tenantId, entityId, result, cfIds, callback);
}
}

6
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/AttributeImmediateOutputStrategy.java

@ -22,7 +22,7 @@ import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttributeImmediateOutputStrategy extends ImmediateOutputStrategy {
public class AttributeImmediateOutputStrategy implements OutputStrategy {
private boolean updateAttributesOnlyOnValueChange;
@ -31,7 +31,7 @@ public class AttributeImmediateOutputStrategy extends ImmediateOutputStrategy {
private boolean processCfs;
@Override
public String getType() {
return "IMMEDIATE_ATTRIBUTES";
public OutputStrategyType getType() {
return OutputStrategyType.IMMEDIATE_ATTRIBUTES;
}
}

6
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/AttributeRuleChainOutputStrategy.java

@ -20,10 +20,10 @@ import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class AttributeRuleChainOutputStrategy extends RuleChainOutputStrategy {
public class AttributeRuleChainOutputStrategy implements OutputStrategy {
@Override
public String getType() {
return "RULE_CHAIN_ATTRIBUTES";
public OutputStrategyType getType() {
return OutputStrategyType.RULE_CHAIN_ATTRIBUTES;
}
}

25
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/ImmediateOutputStrategy.java

@ -1,25 +0,0 @@
/**
* Copyright © 2016-2025 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.common.data.cf.configuration;
public abstract class ImmediateOutputStrategy implements OutputStrategy {
@Override
public OutputStrategyType getStrategyType() {
return OutputStrategyType.IMMEDIATE;
}
}

6
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/OutputStrategy.java

@ -32,14 +32,10 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
@Type(value = AttributeRuleChainOutputStrategy.class, name = "RULE_CHAIN_ATTRIBUTES"),
@Type(value = TimeSeriesRuleChainOutputStrategy.class, name = "RULE_CHAIN_TIME_SERIES")
})
public interface OutputStrategy {
@JsonIgnore
OutputStrategyType getStrategyType();
@JsonIgnore
String getType();
OutputStrategyType getType();
}

6
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/OutputStrategyType.java

@ -17,6 +17,10 @@ package org.thingsboard.server.common.data.cf.configuration;
public enum OutputStrategyType {
IMMEDIATE, RULE_CHAIN
IMMEDIATE_ATTRIBUTES,
IMMEDIATE_TIME_SERIES,
RULE_CHAIN_ATTRIBUTES,
RULE_CHAIN_TIME_SERIES
}

25
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/RuleChainOutputStrategy.java

@ -1,25 +0,0 @@
/**
* Copyright © 2016-2025 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.common.data.cf.configuration;
public abstract class RuleChainOutputStrategy implements OutputStrategy {
@Override
public OutputStrategyType getStrategyType() {
return OutputStrategyType.RULE_CHAIN;
}
}

6
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/TimeSeriesImmediateOutputStrategy.java

@ -22,7 +22,7 @@ import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TimeSeriesImmediateOutputStrategy extends ImmediateOutputStrategy {
public class TimeSeriesImmediateOutputStrategy implements OutputStrategy {
private long ttl;
@ -32,7 +32,7 @@ public class TimeSeriesImmediateOutputStrategy extends ImmediateOutputStrategy {
private boolean processCfs;
@Override
public String getType() {
return "IMMEDIATE_TIME_SERIES";
public OutputStrategyType getType() {
return OutputStrategyType.IMMEDIATE_TIME_SERIES;
}
}

6
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/TimeSeriesRuleChainOutputStrategy.java

@ -20,10 +20,10 @@ import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class TimeSeriesRuleChainOutputStrategy extends RuleChainOutputStrategy {
public class TimeSeriesRuleChainOutputStrategy implements OutputStrategy {
@Override
public String getType() {
return "RULE_CHAIN_TIME_SERIES";
public OutputStrategyType getType() {
return OutputStrategyType.RULE_CHAIN_TIME_SERIES;
}
}

Loading…
Cancel
Save