enonic / xp

Enonic XP
https://enonic.com
GNU General Public License v3.0
201 stars 34 forks source link

Error deleting content with ElasticSearch 2.4 #6532

Closed aro closed 6 years ago

aro commented 6 years ago

Deleting content in the Java 11 branch (issue-6437), throws an exception.

The issue seems related to the parent-child relation in the mapping: https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html#delete-parent

When deleting a child document its parent id must be specified, otherwise the delete request will be rejected and a RoutingMissingException will be thrown instead.

com.enonic.xp.node.NodeStorageException: Cannot delete node d6b703c0-b45f-4c03-9190-b279f06ab02f_draft
        at com.enonic.xp.repo.impl.elasticsearch.storage.StorageDaoImpl.delete(StorageDaoImpl.java:134)
        at com.enonic.xp.repo.impl.branch.storage.BranchServiceImpl.delete(BranchServiceImpl.java:154)
        at com.enonic.xp.repo.impl.storage.NodeStorageServiceImpl.delete(NodeStorageServiceImpl.java:133)
        at com.enonic.xp.repo.impl.node.AbstractDeleteNodeCommand.deleteNodeWithChildren(AbstractDeleteNodeCommand.java:51)
        at com.enonic.xp.repo.impl.node.DeleteNodeByIdCommand.execute(DeleteNodeByIdCommand.java:28)
        at com.enonic.xp.repo.impl.node.NodeServiceImpl.deleteById(NodeServiceImpl.java:420)
        at com.enonic.xp.core.impl.content.DeleteContentCommand.doDeleteContent(DeleteContentCommand.java:91)
        at com.enonic.xp.core.impl.content.DeleteContentCommand.doExecute(DeleteContentCommand.java:75)
        at com.enonic.xp.core.impl.content.DeleteContentCommand.execute(DeleteContentCommand.java:53)
        at com.enonic.xp.core.impl.content.ContentServiceImpl.deleteWithoutFetch(ContentServiceImpl.java:354)
        at com.enonic.xp.admin.impl.rest.resource.content.task.DeleteRunnableTask.run(DeleteRunnableTask.java:53)
        at com.enonic.xp.impl.task.TaskWrapper.lambda$callTaskWithContext$0(TaskWrapper.java:82)
        at com.enonic.xp.context.ContextImpl.callWith(ContextImpl.java:101)
        at com.enonic.xp.impl.task.TaskWrapper.callTaskWithContext(TaskWrapper.java:81)
        at com.enonic.xp.impl.task.TaskWrapper.doRun(TaskWrapper.java:70)
        at com.enonic.xp.impl.task.TaskWrapper.run(TaskWrapper.java:54)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:514)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: [storage-cms-repo] RoutingMissingException[routing is required for [storage-cms-repo]/[branch]/[d6b703c0-b45f-4c03-9190-b279f06ab02f_draft]]
        at org.elasticsearch.action.delete.TransportDeleteAction.resolveAndValidateRouting(TransportDeleteAction.java:118)
        at org.elasticsearch.action.delete.TransportDeleteAction.resolveRequest(TransportDeleteAction.java:100)
        at org.elasticsearch.action.delete.TransportDeleteAction.resolveRequest(TransportDeleteAction.java:54)
        at org.elasticsearch.action.support.replication.TransportReplicationAction$ReroutePhase.doRun(TransportReplicationAction.java:467)
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
        at org.elasticsearch.action.support.replication.TransportReplicationAction.doExecute(TransportReplicationAction.java:131)
        at org.elasticsearch.action.delete.TransportDeleteAction.innerExecute(TransportDeleteAction.java:125)
        at org.elasticsearch.action.delete.TransportDeleteAction.doExecute(TransportDeleteAction.java:94)
        at org.elasticsearch.action.delete.TransportDeleteAction.doExecute(TransportDeleteAction.java:54)
        at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:137)
        at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:85)
        at org.elasticsearch.client.node.NodeClient.doExecute(NodeClient.java:58)
        at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:359)
        at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:348)
        at org.elasticsearch.client.support.AbstractClient.delete(AbstractClient.java:411)
        at com.enonic.xp.repo.impl.elasticsearch.storage.StorageDaoImpl.delete(StorageDaoImpl.java:126)
        ... 20 more
aro commented 6 years ago

Fixed in issue-6437 branch.