You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Stefan Egli (JIRA)" <ji...@apache.org> on 2014/07/22 16:02:12 UTC

[jira] [Created] (SLING-3785) Try to work around repository problems during voting

Stefan Egli created SLING-3785:
----------------------------------

             Summary: Try to work around repository problems during voting
                 Key: SLING-3785
                 URL: https://issues.apache.org/jira/browse/SLING-3785
             Project: Sling
          Issue Type: Bug
          Components: Extensions
            Reporter: Stefan Egli
            Assignee: Stefan Egli
            Priority: Critical
             Fix For: Discovery Impl 1.0.10


We've seen race-conditions, where the repository refuses to delete a node, with the following exception:

{code}
16.07.2014 14:58:59.134 *ERROR* [pool-5-thread-5] org.apache.sling.discovery.impl.common.heartbeat.HeartbeatHandler checkView: encountered a persistence exception during view check: org.apache.sling.api.resource.PersistenceException: Unable to delete resource at /var/discovery/impl/previousView/4df5cd91-c99c-45d3-9b27-728c6e84f0f4 org.apache.sling.api.resource.PersistenceException: Unable to delete resource at /var/discovery/impl/previousView/4df5cd91-c99c-45d3-9b27-728c6e84f0f4
    at org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.delete(JcrResourceProvider.java:491)
    at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.delete(ResourceResolverImpl.java:1044)
    at org.apache.sling.discovery.impl.cluster.voting.VotingHandler.promote(VotingHandler.java:314)
    at org.apache.sling.discovery.impl.cluster.voting.VotingHandler.analyzeVotings(VotingHandler.java:141)
    at org.apache.sling.discovery.impl.common.heartbeat.HeartbeatHandler.doCheckView(HeartbeatHandler.java:299)
    at org.apache.sling.discovery.impl.common.heartbeat.HeartbeatHandler.checkView(HeartbeatHandler.java:277)
    at org.apache.sling.discovery.impl.common.heartbeat.HeartbeatHandler.run(HeartbeatHandler.java:153)
    at org.apache.sling.commons.scheduler.impl.QuartzJobExecutor.execute(QuartzJobExecutor.java:105)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:207)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: javax.jcr.ItemNotFoundException: 4f06dc87-401d-44b6-b6da-2e0bff2e2bb6
    at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:384)
    at org.apache.jackrabbit.core.ItemManager.getNode(ItemManager.java:669)
    at org.apache.jackrabbit.core.NodeImpl.onRemove(NodeImpl.java:696)
    at org.apache.jackrabbit.core.NodeImpl.removeChildNode(NodeImpl.java:624)
    at org.apache.jackrabbit.core.ItemRemoveOperation.perform(ItemRemoveOperation.java:78)
    at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216)
    at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
    at org.apache.jackrabbit.core.ItemImpl.remove(ItemImpl.java:322)
    at org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.delete(JcrResourceProvider.java:486)
    ... 11 more
{code}

While this needs to be treated at the repository level, the discovery.impl can help work around this issue by following a tested workaround:
 * when delete fails, try to rename the 'previousview' node to 'previousview_trash_${UUID}' 



--
This message was sent by Atlassian JIRA
(v6.2#6252)