fixed server failure when cf configuration is invalid
This commit is contained in:
parent
dfc0183c41
commit
7ba8e1366c
@ -70,7 +70,6 @@ public class DefaultCalculatedFieldCache implements CalculatedFieldCache {
|
||||
|
||||
@AfterStartUp(order = AfterStartUp.CF_READ_CF_SERVICE)
|
||||
public void init() {
|
||||
//TODO: move to separate place to avoid circular references with the ActorSystemContext (@Lazy for tsSubService)
|
||||
PageDataIterable<CalculatedField> cfs = new PageDataIterable<>(calculatedFieldService::findAllCalculatedFields, initFetchPackSize);
|
||||
cfs.forEach(cf -> {
|
||||
calculatedFields.putIfAbsent(cf.getId(), cf);
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
package org.thingsboard.server.common.data.cf.configuration;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||
import org.thingsboard.server.common.data.cf.CalculatedFieldLink;
|
||||
@ -36,6 +37,7 @@ import java.util.Map;
|
||||
@JsonSubTypes.Type(value = SimpleCalculatedFieldConfiguration.class, name = "SIMPLE"),
|
||||
@JsonSubTypes.Type(value = ScriptCalculatedFieldConfiguration.class, name = "SCRIPT")
|
||||
})
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public interface CalculatedFieldConfiguration {
|
||||
|
||||
@JsonIgnore
|
||||
|
||||
@ -38,6 +38,7 @@ import org.thingsboard.server.common.data.page.PageData;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -79,7 +80,6 @@ public class DefaultNativeCalculatedFieldRepository implements NativeCalculatedF
|
||||
JsonNode configuration = JacksonUtil.toJsonNode((String) row.get("configuration"));
|
||||
long version = row.get("version") != null ? (long) row.get("version") : 0;
|
||||
String debugSettings = (String) row.get("debug_settings");
|
||||
Object externalIdObj = row.get("external_id");
|
||||
|
||||
CalculatedField calculatedField = new CalculatedField();
|
||||
calculatedField.setId(new CalculatedFieldId(id));
|
||||
@ -89,12 +89,17 @@ public class DefaultNativeCalculatedFieldRepository implements NativeCalculatedF
|
||||
calculatedField.setType(type);
|
||||
calculatedField.setName(name);
|
||||
calculatedField.setConfigurationVersion(configurationVersion);
|
||||
calculatedField.setConfiguration(JacksonUtil.treeToValue(configuration, CalculatedFieldConfiguration.class));
|
||||
try {
|
||||
calculatedField.setConfiguration(JacksonUtil.treeToValue(configuration, CalculatedFieldConfiguration.class));
|
||||
} catch (Exception e) {
|
||||
log.error("Invalid configuration for CalculatedField [{}]. Skipping.", id, e);
|
||||
return null;
|
||||
}
|
||||
calculatedField.setVersion(version);
|
||||
calculatedField.setDebugSettings(JacksonUtil.fromString(debugSettings, DebugSettings.class));
|
||||
|
||||
return calculatedField;
|
||||
}).collect(Collectors.toList());
|
||||
}).filter(Objects::nonNull).collect(Collectors.toList());
|
||||
return new PageData<>(data, totalPages, totalElements, hasNext);
|
||||
});
|
||||
}
|
||||
@ -118,7 +123,6 @@ public class DefaultNativeCalculatedFieldRepository implements NativeCalculatedF
|
||||
EntityType entityType = EntityType.valueOf((String) row.get("entity_type"));
|
||||
UUID entityId = (UUID) row.get("entity_id");
|
||||
UUID calculatedFieldId = (UUID) row.get("calculated_field_id");
|
||||
JsonNode configuration = JacksonUtil.toJsonNode((String) row.get("configuration"));
|
||||
|
||||
CalculatedFieldLink calculatedFieldLink = new CalculatedFieldLink();
|
||||
calculatedFieldLink.setId(new CalculatedFieldLinkId(id));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user