|
|
@ -310,6 +310,7 @@ public class CalculatedFieldManagerMessageProcessor extends AbstractContextAware |
|
|
// Alternative approach would be to use any list but avoid modifications to the list (change the complete map value instead)
|
|
|
// Alternative approach would be to use any list but avoid modifications to the list (change the complete map value instead)
|
|
|
entityIdCalculatedFields.computeIfAbsent(cf.getEntityId(), id -> new CopyOnWriteArrayList<>()).add(cfCtx); |
|
|
entityIdCalculatedFields.computeIfAbsent(cf.getEntityId(), id -> new CopyOnWriteArrayList<>()).add(cfCtx); |
|
|
addLinks(cf); |
|
|
addLinks(cf); |
|
|
|
|
|
scheduleDynamicArgumentsRefreshTaskForCfIfNeeded(cfCtx); |
|
|
initCf(cfCtx, callback, false); |
|
|
initCf(cfCtx, callback, false); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
@ -342,6 +343,7 @@ public class CalculatedFieldManagerMessageProcessor extends AbstractContextAware |
|
|
boolean hasSchedulingConfigChanges = newCfCtx.hasSchedulingConfigChanges(oldCfCtx); |
|
|
boolean hasSchedulingConfigChanges = newCfCtx.hasSchedulingConfigChanges(oldCfCtx); |
|
|
if (hasSchedulingConfigChanges) { |
|
|
if (hasSchedulingConfigChanges) { |
|
|
cancelCfDynamicArgumentsRefreshTaskIfExists(cfId, false); |
|
|
cancelCfDynamicArgumentsRefreshTaskIfExists(cfId, false); |
|
|
|
|
|
scheduleDynamicArgumentsRefreshTaskForCfIfNeeded(newCfCtx); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
List<CalculatedFieldCtx> newCfList = new CopyOnWriteArrayList<>(); |
|
|
List<CalculatedFieldCtx> newCfList = new CopyOnWriteArrayList<>(); |
|
|
@ -365,7 +367,7 @@ public class CalculatedFieldManagerMessageProcessor extends AbstractContextAware |
|
|
// We use copy on write lists to safely pass the reference to another actor for the iteration.
|
|
|
// We use copy on write lists to safely pass the reference to another actor for the iteration.
|
|
|
// Alternative approach would be to use any list but avoid modifications to the list (change the complete map value instead)
|
|
|
// Alternative approach would be to use any list but avoid modifications to the list (change the complete map value instead)
|
|
|
var stateChanges = newCfCtx.hasStateChanges(oldCfCtx); |
|
|
var stateChanges = newCfCtx.hasStateChanges(oldCfCtx); |
|
|
if (stateChanges || newCfCtx.hasOtherSignificantChanges(oldCfCtx) || hasSchedulingConfigChanges) { |
|
|
if (stateChanges || newCfCtx.hasOtherSignificantChanges(oldCfCtx)) { |
|
|
initCf(newCfCtx, callback, stateChanges); |
|
|
initCf(newCfCtx, callback, stateChanges); |
|
|
} else { |
|
|
} else { |
|
|
callback.onSuccess(); |
|
|
callback.onSuccess(); |
|
|
@ -476,7 +478,6 @@ public class CalculatedFieldManagerMessageProcessor extends AbstractContextAware |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private void initCf(CalculatedFieldCtx cfCtx, TbCallback callback, boolean forceStateReinit) { |
|
|
private void initCf(CalculatedFieldCtx cfCtx, TbCallback callback, boolean forceStateReinit) { |
|
|
scheduleDynamicArgumentsRefreshTaskForCfIfNeeded(cfCtx); |
|
|
|
|
|
applyToTargetCfEntityActors(cfCtx, callback, (id, cb) -> initCfForEntity(id, cfCtx, forceStateReinit, cb)); |
|
|
applyToTargetCfEntityActors(cfCtx, callback, (id, cb) -> initCfForEntity(id, cfCtx, forceStateReinit, cb)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|