You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Jukka Zitting (JIRA)" <ji...@apache.org> on 2007/06/04 22:56:26 UTC

[jira] Updated: (JCR-897) ItemState constructor throws IllegalArgumentException

     [ https://issues.apache.org/jira/browse/JCR-897?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jukka Zitting updated JCR-897:
------------------------------

    Fix Version/s:     (was: 1.4)
                   1.3.1

Merged to the 1.3 branch in revision 544261.

> ItemState constructor throws IllegalArgumentException
> -----------------------------------------------------
>
>                 Key: JCR-897
>                 URL: https://issues.apache.org/jira/browse/JCR-897
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.3
>            Reporter: Marcel Reutegger
>            Assignee: Stefan Guggisberg
>            Priority: Minor
>             Fix For: 1.3.1
>
>
> When running ConcurrentReadWriteTest it may happen that a reading session gets an IllegalArgumentException:
> Exception in thread "Thread-7" java.lang.IllegalArgumentException: illegal status: 0
> 	at org.apache.jackrabbit.core.state.ItemState.<init>(ItemState.java:138)
> 	at org.apache.jackrabbit.core.state.PropertyState.<init>(PropertyState.java:79)
> 	at org.apache.jackrabbit.core.state.LocalItemStateManager.getPropertyState(LocalItemStateManager.java:121)
> 	at org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState(LocalItemStateManager.java:152)
> 	at org.apache.jackrabbit.core.state.XAItemStateManager.getItemState(XAItemStateManager.java:226)
> 	at org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState(SessionItemStateManager.java:175)
> 	at org.apache.jackrabbit.core.ItemManager.createItemInstance(ItemManager.java:495)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:326)
> 	at org.apache.jackrabbit.core.LazyItemIterator.prefetchNext(LazyItemIterator.java:90)
> 	at org.apache.jackrabbit.core.LazyItemIterator.<init>(LazyItemIterator.java:75)
> 	at org.apache.jackrabbit.core.ItemManager.getChildProperties(ItemManager.java:485)
> 	at org.apache.jackrabbit.core.NodeImpl.getProperties(NodeImpl.java:2481)
> 	at org.apache.jackrabbit.core.ConcurrentReadWriteTest$1$1.execute(ConcurrentReadWriteTest.java:61)
> 	at org.apache.jackrabbit.core.AbstractConcurrencyTest$Executor.run(AbstractConcurrencyTest.java:107)
> 	at java.lang.Thread.run(Thread.java:595)
> Status 0 is STATUS_UNDEFINED. I think the following happens: when the reading session retrieves the ItemState from the SharedItemStateManager it is still valid but a short time later the writing session removes the item and changes the status to STATUS_UNDEFINED. Then the reading session tries to create an overlayed ItemState for the LocalItemStateManager using the changed status.
> Adding the STATUS_UNDEFINED to the list of 'valid' status in the ItemState constructor seems to solve the issue, but I'm not sure if that's the right way to do it.
> Opinions?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.