How to reproduce :
1/ On "resource" context, update rights (for example add a user).
2/ Save it
3/ Change the context (for instance go to "général" context).
And come back to "resource" context
=> List of rights is not updated, it stays on previous context.
=> There is no visual error telling that context is not reachable
=> There is no console error nor JS error
Note : First time I update "ressource" context, following error has been encountered, but I didn't reproduce it :
Pile d'appels : javax.jcr.InvalidItemStateException: Unable to update a stale item: item.save() at $1org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation.java:262) at $1org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216) at $1org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91) at $1org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:329) at $1org.apache.jackrabbit.core.session.SessionSaveOperation.perform(SessionSaveOperation.java:65) at $1org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216) at $1org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:363) at $1org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:852) at $1org.ametys.web.synchronization.SynchronizeACLObserver._internalObserve(SynchronizeACLObserver.java:51) at $1org.ametys.web.synchronization.AbstractSynchronizeObserver.observe(AbstractSynchronizeObserver.java:88) at $1org.ametys.core.observation.ObservationManager._observesEvent(ObservationManager.java:359) at $1org.ametys.core.observation.ObservationManager.notify(ObservationManager.java:145) at $1org.ametys.core.ui.right.ProfileAssignmentsToolClientSideElement._notifyObservers(ProfileAssignmentsToolClientSideElement.java:375) at $1org.ametys.core.ui.right.ProfileAssignmentsToolClientSideElement.saveChanges(ProfileAssignmentsToolClientSideElement.java:342) at $1java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at $1java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at $1java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at $1java.base/java.lang.reflect.Method.invoke(Method.java:566) at $1org.ametys.core.ui.ExecuteClientCallsAction._executeMethod(ExecuteClientCallsAction.java:204) at $1org.ametys.core.ui.ExecuteClientCallsAction.act(ExecuteClientCallsAction.java:182) at $1org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode.invoke(ActTypeNode.java:120) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47) at $1org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at $1org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at $1org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at $1org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236) at $1org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194) at $1org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267) at $1org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:111) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47) at $1org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at $1org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at $1org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at $1org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236) at $1org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:194) at $1org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:267) at $1org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:333) at $1org.apache.cocoon.components.source.impl.SitemapSource.<init>(SitemapSource.java:215) at $1org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:68) at $1org.apache.excalibur.source.impl.SourceResolverImpl.resolveURI(SourceResolverImpl.java:208) at $1org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558) at $1org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558) at $1org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558) at $1org.apache.cocoon.components.CocoonComponentManager.resolveURI(CocoonComponentManager.java:558) at $1org.ametys.core.ui.dispatcher.DispatchGenerator._dispatching(DispatchGenerator.java:153) at $1org.ametys.core.ui.dispatcher.DispatchGenerator.generate(DispatchGenerator.java:95) at $1org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.processXMLPipeline(AbstractProcessingPipeline.java:581) at $1org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:301) at $1org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:483) at $1org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:144) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47) at $1org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at $1org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at $1org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at $1org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236) at $1org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178) at $1org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254) at $1org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47) at $1org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at $1org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at $1org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at $1org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236) at $1org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178) at $1org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254) at $1org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47) at $1org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at $1org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at $1org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at $1org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236) at $1org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178) at $1org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254) at $1org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:118) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:47) at $1org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:108) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at $1org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143) at $1org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:69) at $1org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93) at $1org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:236) at $1org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:178) at $1org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:254) at $1org.apache.cocoon.Cocoon.process(Cocoon.java:699) at $1org.ametys.runtime.servlet.RuntimeServlet.service(RuntimeServlet.java:569) at $1javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at $1org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at $1org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at $1org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at $1org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at $1org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at $1org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at $1org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at $1org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) at $1org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at $1org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at $1org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678) at $1org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at $1org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at $1org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) at $1org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at $1org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853) at $1org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587) at $1org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at $1java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at $1java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at $1org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at $1java.base/java.lang.Thread.run(Thread.java:834) Caused by: org.apache.jackrabbit.core.state.StaleItemStateException: 96a86bf2-5094-4958-a3af-640199e4f516/{http://www.ametys.org/jcr/repository/1.0}allowed-profiles has been modified externally at $1org.apache.jackrabbit.core.ItemSaveOperation.removeTransientItems(ItemSaveOperation.java:723) at $1org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation.java:228) ... 117 more