[MGNLTOOLS-45] Running RemoveNode on a UUID doesn't free that UUID for reuse Created: 31/May/11  Updated: 01/Jul/11  Resolved: 27/Jun/11

Status: Closed
Project: Repository Tools
Component/s: None
Affects Version/s: 1.1.2
Fix Version/s: 1.1.4

Type: Bug Priority: Major
Reporter: Sean McMains Assignee: Jan Haderka
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
causality
caused by MGNLTOOLS-2 Provide binary/executable assembly Closed
relation
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   

Steps to reproduce:

1. Start a clean instance of Magnolia
2. Create a new page
3. Export the new page
4. Shut down Magnolia
5. Use removenode to delete the page
6. Start Magnolia back up
7. Import the exported page using the "Replace existing nodes with the same id" option

Expected result:

  • Page should import without an issue.

Actual result:

java.lang.RuntimeException: Error importing /Users/seanmctex/Desktop/magnolia-enterprise-4.4.1/apache-tomcat-6.0.29/webapps/magnoliaAuthor/tmp/website.Test1.xml: node /: no child node entry with id 8c02ca78-273e-4a5e-82aa-9bfa9a642bc0
	at info.magnolia.importexport.DataTransporter.importXmlStream(DataTransporter.java:339)
	at info.magnolia.importexport.DataTransporter.importFile(DataTransporter.java:162)
	at info.magnolia.importexport.DataTransporter.importDocument(DataTransporter.java:139)
	at info.magnolia.module.admininterface.pages.ImportPage.importxml(ImportPage.java:163)
	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 info.magnolia.cms.servlets.MVCServletHandlerImpl.execute(MVCServletHandlerImpl.java:118)
	at info.magnolia.cms.servlets.CommandBasedMVCServletHandler.execute(CommandBasedMVCServletHandler.java:83)
	at info.magnolia.cms.servlets.MVCServlet.doPost(MVCServlet.java:123)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:119)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
	at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:66)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:69)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:57)
	at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:122)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:60)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:75)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.module.extendedtemplatingkit.filters.MultiSiteFilter.doFilter(MultiSiteFilter.java:94)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:73)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:60)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
	at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:64)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:88)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:60)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:77)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:51)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
	at info.magnolia.cms.filters.CosMultipartRequestFilter.doFilter(CosMultipartRequestFilter.java:86)
	at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:60)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:102)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:120)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
	at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
	at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:66)
	at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
	at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:105)
	at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:216)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:680)
Caused by: javax.jcr.ItemNotFoundException: node /: no child node entry with id 8c02ca78-273e-4a5e-82aa-9bfa9a642bc0
	at org.apache.jackrabbit.core.xml.SysViewImportHandler.processNode(SysViewImportHandler.java:98)
	at org.apache.jackrabbit.core.xml.SysViewImportHandler.startElement(SysViewImportHandler.java:127)
	at org.apache.jackrabbit.core.xml.ImportHandler.startElement(ImportHandler.java:165)
	at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
	at info.magnolia.importexport.filters.ImportXmlRootFilter.startElement(ImportXmlRootFilter.java:147)
	at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
	at info.magnolia.importexport.filters.RemoveMixversionableFilter.startElement(RemoveMixversionableFilter.java:86)
	at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
	at info.magnolia.importexport.filters.VersionFilter.startElement(VersionFilter.java:120)
	at org.xml.sax.helpers.XMLFilterImpl.startElement(XMLFilterImpl.java:527)
	at info.magnolia.importexport.filters.MagnoliaV2Filter.startElement(MagnoliaV2Filter.java:157)
	at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
	at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(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.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333)
	at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333)
	at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333)
	at org.xml.sax.helpers.XMLFilterImpl.parse(XMLFilterImpl.java:333)
	at info.magnolia.importexport.DataTransporter.importXmlStream(DataTransporter.java:310)
	... 78 more
Caused by: javax.jcr.ItemNotFoundException: node /: no child node entry with id 8c02ca78-273e-4a5e-82aa-9bfa9a642bc0
	at org.apache.jackrabbit.core.NodeImpl.replaceChildNode(NodeImpl.java:1977)
	at org.apache.jackrabbit.core.xml.SessionImporter.resolveUUIDConflict(SessionImporter.java:150)
	at org.apache.jackrabbit.core.xml.SessionImporter.startNode(SessionImporter.java:241)
	at org.apache.jackrabbit.core.xml.SysViewImportHandler.processNode(SysViewImportHandler.java:86)
	... 101 more


 Comments   
Comment by Sean McMains [ 31/May/11 ]

We discovered this problem while working on this support issue.

Comment by Jan Haderka [ 27/Jun/11 ]

The issue is actually with the command line parameters. The way cli treat booleans is that they are either set (means true) or not used (means false). So you should execute with

./bin/removenode\
 --webapp webapps/magnoliaRestored\
 --workspace website\
 --uuid 674469eb-31c2-4dc3-aaa9-935469790539\
 --cleanupversions\
 --detachonly

if you want to set detachonly and cleanupversions or not use those parameters at all.
To remove the node and release the UUID you should run it as

./bin/removenode\
 --webapp webapps/magnoliaRestored\
 --workspace website\
 --uuid 674469eb-31c2-4dc3-aaa9-935469790539\
 --cleanupversions\

Documentation has been updated. Furthermore we have added extra messages describing what is going to happen to the node and whether the UUID will be freed as part of the process or not.

Generated at Mon Feb 12 10:40:35 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.