[MAGNOLIA-5759] Activation fails on uuid conflicts of sub-nodes Created: 30/Apr/14 Updated: 07/May/14 Resolved: 01/May/14 |
|
| Status: | Closed |
| Project: | Magnolia |
| Component/s: | activation |
| Affects Version/s: | 5.2.4 |
| Fix Version/s: | 5.2.5 |
| Type: | Bug | Priority: | Critical |
| Reporter: | Christian Ringele | Assignee: | Milan Divilek |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | support | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Template: |
|
||||||||
| Acceptance criteria: |
Empty
|
||||||||
| Task DoD: |
[ ]*
Doc/release notes changes? Comment present?
[ ]*
Downstream builds green?
[ ]*
Solution information and context easily available?
[ ]*
Tests
[ ]*
FixVersion filled and not yet released
[ ] 
Architecture Decision Record (ADR)
|
||||||||
| Bug DoR: |
[ ]*
Steps to reproduce, expected, and actual results filled
[ ]*
Affected version filled
|
||||||||
| Date of First Response: | |||||||||
| Description |
|
Tested on 5.2.3 and 5.2.4. On 5.2.3 it worked properly as expected. When a sub-node of a page (area node) has on the author a different UUID than on the public, the activation is fails with this error: 2014-04-30 14:15:54,182 ERROR dule.exchangetransactional.TransactionalSyndicator: Failed to activate content. info.magnolia.cms.exchange.ExchangeException: Message received from subscriber: Activation failed : Node with the same UUID exists:node /test/sub1/metaNavigation at info.magnolia.module.activation.BaseSyndicatorImpl.activate(BaseSyndicatorImpl.java:426) at info.magnolia.module.exchangetransactional.TransactionalSyndicator$2.run(TransactionalSyndicator.java:181) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Thread.java:695) 2014-04-30 14:15:54,185 ERROR dule.exchangetransactional.TransactionalSyndicator: Message received from subscriber: Activation failed : Node with the same UUID exists:node /test/sub1/metaNavigation info.magnolia.cms.exchange.ExchangeException: Message received from subscriber: Activation failed : Node with the same UUID exists:node /test/sub1/metaNavigation at info.magnolia.module.activation.BaseSyndicatorImpl.activate(BaseSyndicatorImpl.java:426) at info.magnolia.module.exchangetransactional.TransactionalSyndicator$2.run(TransactionalSyndicator.java:181) at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Thread.java:695) Valid use case where this happens:
How to reproduce:
|
| Comments |
| Comment by Daniel Lipp [ 30/Apr/14 ] |
|
first suspicion was that it's related to new mgnlactivation 5.2.4: but testing a 5.2.4 bundle with mgnlactivation still showed the prob. So the issue is somewhere else... |
| Comment by Christian Ringele [ 30/Apr/14 ] |
|
Now I got the full stakc trace: 2014-04-30 16:20:30,515 ERROR info.magnolia.module.activation.ReceiveFilter : Exception caught javax.jcr.ItemExistsException: Node with the same UUID exists:node /test/sub3/sub11/metaNavigation at org.apache.jackrabbit.core.xml.SessionImporter.startNode(SessionImporter.java:380) at org.apache.jackrabbit.core.xml.SysViewImportHandler.processNode(SysViewImportHandler.java:93) at org.apache.jackrabbit.core.xml.SysViewImportHandler.endElement(SysViewImportHandler.java:248) at org.apache.jackrabbit.core.xml.ImportHandler.endElement(ImportHandler.java:195) at org.apache.jackrabbit.commons.xml.DefaultContentHandler.endElement(DefaultContentHandler.java:83) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source) at org.apache.jackrabbit.commons.xml.ParsingContentHandler.parse(ParsingContentHandler.java:62) at org.apache.jackrabbit.commons.AbstractSession.importXML(AbstractSession.java:344) at info.magnolia.jcr.wrapper.DelegateSessionWrapper.importXML(DelegateSessionWrapper.java:247) at info.magnolia.jcr.wrapper.DelegateSessionWrapper.importXML(DelegateSessionWrapper.java:247) at info.magnolia.module.activation.ReceiveFilter.importResource(ReceiveFilter.java:630) at info.magnolia.module.activation.ReceiveFilter.importOnExisting(ReceiveFilter.java:573) at info.magnolia.module.exchangetransactional.XAReceiveFilter.update(XAReceiveFilter.java:205) at info.magnolia.module.exchangetransactional.XAReceiveFilter.receive(XAReceiveFilter.java:146) at info.magnolia.module.activation.ReceiveFilter.doFilter(ReceiveFilter.java:178) at info.magnolia.module.exchangetransactional.XAReceiveFilter.doFilter(XAReceiveFilter.java:100) at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:89) at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80) at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:104) at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:89) at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80) at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:56) at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:89) at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80) at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82) at info.magnolia.cms.filters.CosMultipartRequestFilter.doFilter(CosMultipartRequestFilter.java:89) at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58) at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80) at info.magnolia.module.devicedetection.filter.DeviceDetectionFilter.doFilter(DeviceDetectionFilter.java:71) at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:58) at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80) at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:103) at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:89) at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80) at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:129) at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:89) at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:80) at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65) at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:89) at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:106) at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:66) at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:107) at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:93) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:695) |
| Comment by Christian Ringele [ 30/Apr/14 ] |
|
Seems as its triggered on line 630 in class info.magnolia.module.activation.ReceiveFilter: hm.getWorkspace().getSession().importXML(parentPath, inputStream, ImportUUIDBehavior.IMPORT_UUID_COLLISION_REMOVE_EXISTING); Checked JCR version in use between 5.2.3 and 5.2.4 -> same version: jackrabbit-jcr-commons-2.6.4.jar & jcr-2.0.jar |
| Comment by Christian Ringele [ 30/Apr/14 ] |
|
Checked the UUID of the Node which it complains about: The situation is as described above: |
| Comment by Jan Haderka [ 02/May/14 ] |
|
While this is indeed a very serious issue, it is at the same time also very uncommon use case. Normally editors actually edit pages after they create them and before they publish them, and if not editors, then publisher surely does. |