Browse Source

added checks when no updated attributes

pull/14225/head
IrynaMatveieva 7 months ago
parent
commit
256f4c3121
  1. 4
      application/src/main/data/upgrade/basic/schema_update.sql
  2. 7
      application/src/main/java/org/thingsboard/server/service/cf/AbstractCalculatedFieldProcessingService.java

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

@ -70,7 +70,7 @@ ALTER TABLE calculated_field ADD CONSTRAINT calculated_field_unq_key UNIQUE (ent
-- CALCULATED FIELD UNIQUE CONSTRAINT UPDATE END
-- CALCULATED FIELD OUTPUT STRATEGY UPGRADE START
-- CALCULATED FIELD OUTPUT STRATEGY UPDATE START
UPDATE calculated_field
SET configuration = jsonb_set(
@ -91,4 +91,4 @@ SET configuration = jsonb_set(
)
WHERE (configuration::jsonb -> 'output' -> 'strategy') IS NULL;
-- CALCULATED FIELD OUTPUT STRATEGY UPGRADE END
-- CALCULATED FIELD OUTPUT STRATEGY UPDATE END

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

@ -398,6 +398,10 @@ public abstract class AbstractCalculatedFieldProcessingService {
DonAsynchron.withCallback(findFuture,
existingAttributes -> {
List<AttributeKvEntry> changed = filterChangedAttr(existingAttributes, newAttributes);
if (changed.isEmpty()) {
future.set(null);
return;
}
saveAttributesInternal(tenantId, entityId, cfResult, cfIds, changed, strategy, future);
},
future::setException,
@ -429,7 +433,8 @@ public abstract class AbstractCalculatedFieldProcessingService {
JsonElement jsonResult = JsonParser.parseString(Objects.requireNonNull(cfResult.stringValue()));
Map<Long, List<KvEntry>> tsKvMap = JsonConverter.convertToTelemetry(jsonResult, ts);
if (tsKvMap.isEmpty()) {
future.setFuture(Futures.immediateFuture(null));
future.set(null);
return;
}
List<TsKvEntry> tsEntries = toTsKvEntryList(tsKvMap);
TimeseriesSaveRequest.Strategy strategy = new TimeseriesSaveRequest.Strategy(outputStrategy.isSaveTimeSeries(), outputStrategy.isSaveLatest(), outputStrategy.isSendWsUpdate(), outputStrategy.isProcessCfs());

Loading…
Cancel
Save