Apogee synchronization manager should revert program changes before unlocking it.
If not, the following exception is thrown:
org.ametys.plugins.repository.AmetysRepositoryException: Unable to unlock content
at org.ametys.plugins.repository.jcr.DefaultAmetysObject.unlock(DefaultAmetysObject.java:543)
at org.ametys.odf.apogee.program.ApogeeProgramsSynchronizationManager.synchronizePrograms(ApogeeProgramsSynchronizationManager.java:172)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.ametys.runtime.plugin.component.PluginsComponentManager$ComponentInvocationHandler.invoke(PluginsComponentManager.java:159)
at $Proxy30.synchronizePrograms(Unknown Source)
at org.ametys.odf.apogee.synchronization.ApogeeGlobalSynchronizationManager.synchronize(ApogeeGlobalSynchronizationManager.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.ametys.runtime.plugin.component.PluginsComponentManager$ComponentInvocationHandler.invoke(PluginsComponentManager.java:159)
at $Proxy31.synchronize(Unknown Source)
at org.ametys.odf.synchronization.GlobalSynchronizationEngine._synchronize(GlobalSynchronizationEngine.java:126)
at org.ametys.odf.synchronization.GlobalSynchronizationEngine.run(GlobalSynchronizationEngine.java:110)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.jcr.InvalidItemStateException: Unable to perform operation. Session has pending changes.
at org.apache.jackrabbit.core.ItemValidator.checkCondition(ItemValidator.java:269)
at org.apache.jackrabbit.core.ItemValidator.checkModify(ItemValidator.java:248)
at org.apache.jackrabbit.core.lock.SessionLockManager.unlock(SessionLockManager.java:194)
at org.ametys.plugins.repository.jcr.DefaultAmetysObject.unlock(DefaultAmetysObject.java:532)
... 17 more