[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