[midPoint-git] [Evolveum/midpoint] c07382: Fix notification listeners leak (MID-5355)

mederly noreply at github.com
Thu May 23 21:29:21 CEST 2019


  Branch: refs/heads/feature/optimizing-repo-access
  Home:   https://github.com/Evolveum/midpoint
  Commit: c07382ad7af85700f8e95b256d41c957e3aee711
      https://github.com/Evolveum/midpoint/commit/c07382ad7af85700f8e95b256d41c957e3aee711
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2019-05-23 (Thu, 23 May 2019)

  Changed paths:
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/caching/AbstractSearchExpressionEvaluatorCache.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/Clockwork.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ChangeNotificationDispatcherImpl.java

  Log Message:
  -----------
  Fix notification listeners leak (MID-5355)

Due to a fault in ChangeNotificationDispatcherImpl change listeners
were not unregistered correctly. This might have a lot of various
consequences, including memory leaks, performance degradation, and
ConcurrentModificationException's on cache content (e.g. MID-5355).

This commit also introduces checks for (future) listener leaks.

(cherry picked from commit 05e83a7a201a245f7e99e71c47a7965d201c276b)


  Commit: 70e0ca13922b672cd9874d656ff4b4034c0cd2c3
      https://github.com/Evolveum/midpoint/commit/70e0ca13922b672cd9874d656ff4b4034c0cd2c3
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2019-05-23 (Thu, 23 May 2019)

  Changed paths:
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/cache/CacheConfigurationManager.java
    M infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd
    M infra/util/src/main/java/com/evolveum/midpoint/util/caching/AbstractThreadLocalCache.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/caching/CacheConfiguration.java
    M infra/util/src/main/java/com/evolveum/midpoint/util/caching/CachePerformanceCollector.java
    A infra/util/src/main/java/com/evolveum/midpoint/util/caching/CacheUtil.java
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AbstractSearchExpressionEvaluator.java
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssignmentTargetSearchExpressionEvaluator.java
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssignmentTargetSearchExpressionEvaluatorFactory.java
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationFromLinkExpressionEvaluatorFactory.java
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationTargetSearchExpressionEvaluator.java
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/AssociationTargetSearchExpressionEvaluatorFactory.java
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/FunctionExpressionEvaluatorFactory.java
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/GenerateExpressionEvaluatorFactory.java
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/PathExpressionEvaluatorFactory.java
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/ReferenceSearchExpressionEvaluator.java
    M model/model-common/src/main/java/com/evolveum/midpoint/model/common/expression/evaluator/ReferenceSearchExpressionEvaluatorFactory.java
    M model/model-common/src/test/java/com/evolveum/midpoint/model/common/expression/ExpressionTestUtil.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/AssignmentHolderProcessor.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/FocusConstraintsChecker.java
    M model/model-impl/src/main/resources/ctx-model.xml
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ConstraintsChecker.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ProvisioningServiceImpl.java
    M provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ShadowCache.java
    M repo/repo-cache/src/main/java/com/evolveum/midpoint/repo/cache/AbstractGlobalCache.java
    M repo/repo-cache/src/main/java/com/evolveum/midpoint/repo/cache/RepositoryCache.java
    M repo/repo-common/src/main/java/com/evolveum/midpoint/repo/common/expression/AbstractObjectResolvableExpressionEvaluatorFactory.java
    M testing/story/src/test/resources/ldap/assoc-perf/system-configuration.xml

  Log Message:
  -----------
  Add configurable cache performance reporting

Now we can report per cache, per object type or turn the reporting
off altogether. Cache miss and pass events can be individually logged.


  Commit: 40105ca543eac430fe2538a6bd4874621b0abdac
      https://github.com/Evolveum/midpoint/commit/40105ca543eac430fe2538a6bd4874621b0abdac
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2019-05-23 (Thu, 23 May 2019)

  Changed paths:
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/CloneUtil.java
    A infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/PrismList.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xjc/AnyArrayList.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xjc/PrismContainerArrayList.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xjc/PrismReferenceArrayList.java
    M infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/impl/xjc/PropertyArrayList.java
    M testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapAssociationPerformance.java

  Log Message:
  -----------
  Fix auxiliary prism lists cloning performance

Originally these were cloned using serialization/deserialization,
creating a huge performance impact.

Now we also (maybe temporarily) log these serialization events at INFO
level, to see them quickly.


  Commit: f23ccda7fd4703f21cba54f9d88cc9ae97d49751
      https://github.com/Evolveum/midpoint/commit/f23ccda7fd4703f21cba54f9d88cc9ae97d49751
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2019-05-23 (Thu, 23 May 2019)

  Changed paths:
    M infra/schema/src/main/java/com/evolveum/midpoint/schema/cache/CacheConfigurationManager.java
    M infra/schema/src/main/resources/xml/ns/public/common/common-core-3.xsd
    M repo/repo-api/src/main/java/com/evolveum/midpoint/repo/api/perf/OperationRecord.java
    M repo/repo-api/src/main/java/com/evolveum/midpoint/repo/api/perf/PerformanceMonitor.java
    M repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java
    M repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlRepositoryServiceImpl.java
    M repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SystemConfigurationChangeDispatcherImpl.java
    M repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/common/dictionary/ExtItemDictionary.java
    M repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/perf/OutputFormatter.java
    M repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/perf/PerformanceInformationImpl.java
    M repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/perf/SqlPerformanceMonitorImpl.java
    M testing/story/src/test/java/com/evolveum/midpoint/testing/story/ldap/TestLdapAssociationPerformance.java
    M testing/story/src/test/resources/ldap/assoc-perf/system-configuration.xml

  Log Message:
  -----------
  Add configurable repository statistics reporting

The schema for cache statistics reporting configuration was unified
to match the schema for repository statistics.


  Commit: 1d67db945d81d7f00becedc6d485ac4ab8eb335a
      https://github.com/Evolveum/midpoint/commit/1d67db945d81d7f00becedc6d485ac4ab8eb335a
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2019-05-23 (Thu, 23 May 2019)

  Changed paths:
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/util/CloneUtil.java
    M infra/prism-api/src/main/java/com/evolveum/midpoint/prism/xml/XmlTypeConverter.java

  Log Message:
  -----------
  Fix cloning of Duration objects

Until now, these were cloned by serialization and deserialization
that is slower than a direct approach.


Compare: https://github.com/Evolveum/midpoint/compare/39708fa3a43b...1d67db945d81


More information about the midPoint-svn mailing list