Unable to Move Confluence Page within the Same Space Because of Deleted Page
Symptoms
User is unable to move a Confluence page within a same Space.
The following appears in the atlassian-confluence.log
:
2014-08-12 10:06:51,870 ERROR [http-bio-8391-exec-507] [atlassian.event.internal.AsynchronousAbleEventDispatcher] run There was an exception thrown trying to dispatch event [com.atlassian.confluence.event.events.content.page.PageMoveCompletedEvent[source=page: "Page that is failed to be moved" v.14 (11239782)]] from the invoker [SingleParameterMethodListenerInvoker{method=public void com.atlassian.confluence.links.RelatedContentRefactoringListener.handleEvent(com.atlassian.confluence.event.events.content.page.PageMoveCompletedEvent), listener=com.atlassian.confluence.links.RelatedContentRefactoringListener@5f33c0b7}]
-- url: /confluence/pages/movepage.action | userName: PVanhoof | referer: https://wiki.test.com/confluence/pages/listpages-dirview.action?key=spaceKey&openId=11239782#selectedPageInHierarchy | action: movepage
java.lang.RuntimeException: A page already exists with the title "Unrelated with the page you want to move" in the space with key spaceKey
at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:54)
at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$1$1.run(AsynchronousAbleEventDispatcher.java:48)
at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:253)
at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:107)
at com.atlassian.event.internal.EventPublisherImpl.invokeListeners(EventPublisherImpl.java:160)
at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:79)
at com.atlassian.event.legacy.LegacyEventManager.publishEvent(LegacyEventManager.java:36)
at com.atlassian.confluence.event.ConfluenceEventManager.publishEvent(ConfluenceEventManager.java:47)
at sun.reflect.GeneratedMethodAccessor166.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy26.publishEvent(Unknown Source)
at com.atlassian.confluence.pages.DefaultPageManager.publishPageMoveEvents(DefaultPageManager.java:1150)
at com.atlassian.confluence.pages.DefaultPageManager.movePageAsChild(DefaultPageManager.java:714)
...
Caused by: com.atlassian.confluence.pages.DuplicateDataRuntimeException: A page already exists with the title "Unrelated with the page you want to move" in the space with key spaceKey
at com.atlassian.confluence.pages.DefaultPageManager.throwIfDuplicateAbstractPageTitle(DefaultPageManager.java:1067)
at com.atlassian.confluence.pages.DefaultPageManager.saveContentEntity(DefaultPageManager.java:992)
at sun.reflect.GeneratedMethodAccessor1554.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.atlassian.spring.interceptors.SpringProfilingInterceptor.invoke(SpringProfilingInterceptor.java:16)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.atlassian.confluence.util.profiling.ConfluenceMonitoringMethodInterceptor.invoke(ConfluenceMonitoringMethodInterceptor.java:59)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy59.saveContentEntity(Unknown Source)
at com.atlassian.confluence.links.DefaultRelatedContentRefactorer.contractAbsoluteReferencesInContent(DefaultRelatedContentRefactorer.java:429)
at com.atlassian.confluence.links.DefaultRelatedContentRefactorer.contractAbsoluteReferencesInContent(DefaultRelatedContentRefactorer.java:392)
at com.atlassian.confluence.links.RelatedContentRefactoringListener.handleEvent(RelatedContentRefactoringListener.java:57)
at sun.reflect.GeneratedMethodAccessor1800.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:36)
... 326 more
Diagnosis
- Rebuild Ancestor Table
- Flush Content Cache Statistics
- Rebuild Content Index from Scratch
- Try to move the page via Page Tree instead of from Tools menu
- Attempt to move page with different user
If none of the above solves the issue, proceed to the Resolution below. Otherwise, please contact Atlassian Support.
Cause
The page to be moved has a dependency with a deleted page. This is being tracked here: CONF-34649 - Getting issue details... STATUS
Resolution
Option 1:
Change title of the page to be moved
i.e. "Release Notes" to "Release Notes v1.0"
Move page to desired location
The new title can be changed back to the original after completion.
Option 2:
Purging the trash in the affected space (documentation).
When the trash is purged, all attachments on purged pages are permanently removed as well.
Option 3:
Clone the page via _Tools_ > _Copy_ and save the page.
The title of the page will be "Copy of <page_title>".
Move cloned page to desired location.
You may rename the title page to the original after moving operation is successful by removing the "Copy of" words from the title.
- Delete the old page (can't be moved) to remove redundancies.