You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Thomas Mueller (JIRA)" <ji...@apache.org> on 2012/06/14 12:24:42 UTC

[jira] [Commented] (JCR-3340) GarbageCollector should ignore all NoSuchItemStateExceptions

    [ https://issues.apache.org/jira/browse/JCR-3340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13294941#comment-13294941 ] 

Thomas Mueller commented on JCR-3340:
-------------------------------------

As discussed offline with Mete we came to the conclusion not to apply the patch now.
There is a risk we could hide a bigger problem. FYI the underlying exception is:

javax.jcr.RepositoryException: failed to retrieve state of intermediary node
javax.jcr.RepositoryException: javax.jcr.RepositoryException: failed to retrieve state of intermediary node
at org.apache.jackrabbit.core.data.GarbageCollector.stopScan(GarbageCollector.java:240)
at org.apache.jackrabbit.core.data.GarbageCollector.sweep(GarbageCollector.java:258)

Caused by: javax.jcr.RepositoryException: failed to retrieve state of intermediary node
at org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath(CachingHierarchyManager.java:156)
at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath(HierarchyManagerImpl.java:365)
at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:550)
at org.apache.jackrabbit.core.session.SessionItemOperation$4.perform(SessionItemOperation.java:97)
at org.apache.jackrabbit.core.session.SessionItemOperation$4.perform(SessionItemOperation.java:93)
at org.apache.jackrabbit.core.session.SessionItemOperation.perform(SessionItemOperation.java:187)
at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
at org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:355)
at org.apache.jackrabbit.core.SessionImpl.getItem(SessionImpl.java:743)
at org.apache.jackrabbit.core.data.GarbageCollector$Listener.onEvent(GarbageCollector.java:421)
at org.apache.jackrabbit.core.observation.EventConsumer.consumeEvents(EventConsumer.java:248)
at org.apache.jackrabbit.core.observation.ObservationDispatcher.dispatchEvents(ObservationDispatcher.java:214)
at org.apache.jackrabbit.core.observation.EventStateCollection.dispatch(EventStateCollection.java:475)
at org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(SharedItemStateManager.java:798)
at org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:1498)
at org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:398)
at org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:354)
at org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:373)
at org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionItemStateManager.java:274)
at org.apache.jackrabbit.core.ItemSaveOperation.perform(ItemSaveOperation.java:258)
at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
at org.apache.jackrabbit.core.ItemImpl.perform(ItemImpl.java:91)
at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:329)
at org.apache.jackrabbit.core.session.SessionSaveOperation.perform(SessionSaveOperation.java:42)
at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
at org.apache.jackrabbit.core.SessionImpl.perform(SessionImpl.java:355)
at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:758)

Caused by: org.apache.jackrabbit.core.state.NoSuchItemStateException: 1b94274f-431c-4dcd-aac6-b238527fc276
at org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState(SharedItemStateManager.java:282)
at org.apache.jackrabbit.core.state.LocalItemStateManager.getNodeState(LocalItemStateManager.java:109)
at org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:174)
at org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState(SessionItemStateManager.java:161)
at org.apache.jackrabbit.core.HierarchyManagerImpl.getItemState(HierarchyManagerImpl.java:152)
at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath(HierarchyManagerImpl.java:115)
at org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath(CachingHierarchyManager.java:152)


                
> GarbageCollector should ignore all NoSuchItemStateExceptions
> ------------------------------------------------------------
>
>                 Key: JCR-3340
>                 URL: https://issues.apache.org/jira/browse/JCR-3340
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.5
>            Reporter: Mete Atamel
>         Attachments: JCR-3340.patch
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> When GarbageCollector goes through nodes, it can encounter NoSuchItemStateException or PathNotFoundException if a node has been deleted or moved in the meantime. GarbageCollector can safely ignore these exceptions. It tries to do so in some cases but not all.
> For example, Listener#onEvent method in GarbageCollector catches PathNotFoundException and it also catches the generic Exception. The latter is problematic because a NoSuchItemStateException can be thrown by Session#getItem call and currently, GarbageCollector treats that as a valid exception when it should just ignore it.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira