[midPoint-git] [Evolveum/midpoint] bea051: Make ExpressionFactory thread-safe
mederly
noreply at github.com
Tue Aug 25 19:39:40 CEST 2020
Branch: refs/heads/feature/thread-safe-expression-factory
Home: https://github.com/Evolveum/midpoint
Commit: bea051de6a44c1c877a81b1daa0405280d1b1eed
https://github.com/Evolveum/midpoint/commit/bea051de6a44c1c877a81b1daa0405280d1b1eed
Author: Pavol Mederly <mederly at evolveum.com>
Date: 2020-08-25 (Tue, 25 Aug 2020)
Changed paths:
M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/LayerRefinedAttributeDefinitionImpl.java
M infra/common/src/main/java/com/evolveum/midpoint/common/refinery/RefinedResourceSchemaImpl.java
M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/ChangeExecutor.java
M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensProjectionContext.java
M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensUtil.java
M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/assignments/ConditionEvaluator.java
M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/ActivationProcessor.java
M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/policy/PolicyRuleProcessor.java
M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceManager.java
M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ShadowCaretaker.java
M repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionFactory.java
M repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/ExpressionUtil.java
Log Message:
-----------
Make ExpressionFactory thread-safe
In order to make ExpressionFactory thread-safe, more things had to be
done:
1) expression cache should be thread-safe (using ConcurrentHashMap),
2) keys should be really immutable, freezing or cloning them.
Point 2 is being resolved by freezing whatever can be frozen, and
cloning the rest. However, there are many things that are yet to be
frozen. So it's a work in progress.
Also fixing a bug that the cache didn't take expression profiles into
account.
Related to MID-6432.
More information about the midPoint-svn
mailing list