[midPoint-git] [Evolveum/midpoint] 9dd53f: Improve RESTART conflict resolution action

mederly noreply at github.com
Sat May 30 01:31:30 CEST 2026


  Branch: refs/heads/fix/10714-4.8
  Home:   https://github.com/Evolveum/midpoint
  Commit: 9dd53fbda3bf3e63cf47d63535805fe8b8ce9b70
      https://github.com/Evolveum/midpoint/commit/9dd53fbda3bf3e63cf47d63535805fe8b8ce9b70
  Author: Pavol Mederly <mederly at evolveum.com>
  Date:   2026-05-30 (Sat, 30 May 2026)

  Changed paths:
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/Clockwork.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/ClockworkConflictResolver.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/FocusConflictResolutionContext.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensContext.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensElementContext.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensFocusContext.java
    M model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/LensProjectionContext.java
    M model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestRaceConditions.java
    A model/model-intest/src/test/resources/contract/resource-dummy-conflict-1.xml
    A model/model-intest/src/test/resources/contract/resource-dummy-conflict-2.xml
    A model/model-intest/src/test/resources/contract/resource-dummy-conflict-3.xml
    A model/model-intest/src/test/resources/contract/resource-dummy-conflict-4.xml
    A model/model-intest/src/test/resources/contract/resource-dummy-conflict-abstract.xml
    A model/model-intest/src/test/resources/contract/task-live-sync-conflict-1.xml
    A model/model-intest/src/test/resources/contract/task-live-sync-conflict-2.xml
    A model/model-intest/src/test/resources/contract/task-live-sync-conflict-3.xml
    A model/model-intest/src/test/resources/contract/task-live-sync-conflict-4.xml

  Log Message:
  -----------
  Improve RESTART conflict resolution action

What

1. When restarting the processing after focus update conflict is
detected, we now use a (simplified) copy of the original LensContext,
instead of trying to construct it from scratch.

2. If the operation cannot be succesfully completed after given #
of attempts, we throw an exception - instead of quietly continuing.

These changes are supported by TestRaceConditions#test150 that
checks that ALL conflicting operations are really executed.

Why

1. This is to preserve many settings and options that can be set on the
context by the caller. (Note that the current solution is quite
brittle, and should be improved later - see
FocusConflictResolutionContext#contextCopy).

2. It is to let the user clearly known that there is a problem.
Note that RECOMPUTE/RECONCILE action is completely different.
It leaves the object in more-or-less adequate state, so continuing
a good option there.

Related to: #10714 (duplicate assignments creation)



To unsubscribe from these emails, change your notification settings at https://github.com/Evolveum/midpoint/settings/notifications


More information about the midPoint-svn mailing list