You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Matthias Reischenbacher (Created) (JIRA)" <ji...@apache.org> on 2011/12/08 21:41:40 UTC

[jira] [Created] (JCR-3173) InvalidItemStateException if accessing VersionHistory before checkin()

InvalidItemStateException if accessing VersionHistory before checkin()
----------------------------------------------------------------------

                 Key: JCR-3173
                 URL: https://issues.apache.org/jira/browse/JCR-3173
             Project: Jackrabbit Content Repository
          Issue Type: Bug
          Components: jackrabbit-core
    Affects Versions: 2.2.10
            Reporter: Matthias Reischenbacher


A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.

--
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

        

[jira] [Updated] (JCR-3173) InvalidItemStateException if accessing VersionHistory before checkin()

Posted by "Matthias Reischenbacher (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-3173?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matthias Reischenbacher updated JCR-3173:
-----------------------------------------

    Attachment: UserTransactionCheckinTest.java

Test case
                
> InvalidItemStateException if accessing VersionHistory before checkin()
> ----------------------------------------------------------------------
>
>                 Key: JCR-3173
>                 URL: https://issues.apache.org/jira/browse/JCR-3173
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.2.10
>            Reporter: Matthias Reischenbacher
>         Attachments: UserTransactionCheckinTest.java
>
>
> A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.

--
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

        

[jira] [Updated] (JCR-3173) InvalidItemStateException if accessing VersionHistory before checkin()

Posted by "Stefan Guggisberg (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-3173?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stefan Guggisberg updated JCR-3173:
-----------------------------------

    Component/s: versioning
                 transactions
    
> InvalidItemStateException if accessing VersionHistory before checkin()
> ----------------------------------------------------------------------
>
>                 Key: JCR-3173
>                 URL: https://issues.apache.org/jira/browse/JCR-3173
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core, transactions, versioning
>    Affects Versions: 2.2.10
>            Reporter: Matthias Reischenbacher
>         Attachments: UserTransactionCheckinTest.java
>
>
> A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.
> -------------------------------------------------------------------------------
> Test set: org.apache.jackrabbit.core.version.UserTransactionCheckinTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.072 sec <<< FAILURE!
> testRestoreWithXA(org.apache.jackrabbit.core.version.UserTransactionCheckinTest)  Time elapsed: 3.858 sec  <<< ERROR!
> javax.jcr.InvalidItemStateException: Could not find child e77834ee-244c-441f-ab94-19847c769fa4 of node 03629609-8049-46ee-9e80-279c70b3a34d
> 	at org.apache.jackrabbit.core.ItemManager.getDefinition(ItemManager.java:207)
> 	at org.apache.jackrabbit.core.ItemData.getDefinition(ItemData.java:99)
> 	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:421)
> 	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:843)
> 	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
> 	at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:493)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:123)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:1)
> 	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:96)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:115)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:101)
> 	at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2830)
> 	at org.apache.jackrabbit.core.version.UserTransactionCheckinTest.testRestoreWithXA(UserTransactionCheckinTest.java:35)

--
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

        

[jira] [Updated] (JCR-3173) InvalidItemStateException if accessing VersionHistory before checkin()

Posted by "Matthias Reischenbacher (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-3173?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matthias Reischenbacher updated JCR-3173:
-----------------------------------------

    Description: 
A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.

-------------------------------------------------------------------------------
Test set: org.apache.jackrabbit.core.version.UserTransactionCheckinTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.072 sec <<< FAILURE!
testRestoreWithXA(org.apache.jackrabbit.core.version.UserTransactionCheckinTest)  Time elapsed: 3.858 sec  <<< ERROR!
javax.jcr.InvalidItemStateException: Could not find child e77834ee-244c-441f-ab94-19847c769fa4 of node 03629609-8049-46ee-9e80-279c70b3a34d
	at org.apache.jackrabbit.core.ItemManager.getDefinition(ItemManager.java:207)
	at org.apache.jackrabbit.core.ItemData.getDefinition(ItemData.java:99)
	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:421)
	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:843)
	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391)
	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328)
	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
	at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:493)
	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:123)
	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:1)
	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
	at org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:96)
	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:115)
	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:101)
	at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2830)
	at org.apache.jackrabbit.core.version.UserTransactionCheckinTest.testRestoreWithXA(UserTransactionCheckinTest.java:35)



  was:A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.

    
> InvalidItemStateException if accessing VersionHistory before checkin()
> ----------------------------------------------------------------------
>
>                 Key: JCR-3173
>                 URL: https://issues.apache.org/jira/browse/JCR-3173
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.2.10
>            Reporter: Matthias Reischenbacher
>         Attachments: UserTransactionCheckinTest.java
>
>
> A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.
> -------------------------------------------------------------------------------
> Test set: org.apache.jackrabbit.core.version.UserTransactionCheckinTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.072 sec <<< FAILURE!
> testRestoreWithXA(org.apache.jackrabbit.core.version.UserTransactionCheckinTest)  Time elapsed: 3.858 sec  <<< ERROR!
> javax.jcr.InvalidItemStateException: Could not find child e77834ee-244c-441f-ab94-19847c769fa4 of node 03629609-8049-46ee-9e80-279c70b3a34d
> 	at org.apache.jackrabbit.core.ItemManager.getDefinition(ItemManager.java:207)
> 	at org.apache.jackrabbit.core.ItemData.getDefinition(ItemData.java:99)
> 	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:421)
> 	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:843)
> 	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
> 	at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:493)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:123)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:1)
> 	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:96)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:115)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:101)
> 	at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2830)
> 	at org.apache.jackrabbit.core.version.UserTransactionCheckinTest.testRestoreWithXA(UserTransactionCheckinTest.java:35)

--
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

        

[jira] [Commented] (JCR-3173) InvalidItemStateException if accessing VersionHistory before checkin()

Posted by "Matthias Reischenbacher (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-3173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13268075#comment-13268075 ] 

Matthias Reischenbacher commented on JCR-3173:
----------------------------------------------

I've found a workaround. Vitali pointed me into the right direction. The ItemManager caches the VersionHistory. If the version history is read after the version history has been modified, no exception occurs, because the item state manager always returns the same instance of the internal node state (stored in the ChangeLog). If the version history is read before the modification, the item manager stores a version history instance in its cache (with its own node state). During the checkin operation the VersionHistory is copied (including its internal node state, see also InternalXAVersionManager.makeLocalCopy(InternalVersionHistoryImpl history)) and all new versions are added as children of the new NodeState object. The NodeState object of the version history inside the ItemManager is not updated, leading to the already known exceptions. The workaround consists of removing the version history from the item managers cache, before the checkin operation is executed. Luckily there is a method which does just that (although I guess it was not intended for this kind of usage). Please be aware that this is a dirty hack:

// cast to jackrabbit impl
SessionImpl impl = (SessionImpl)session;

// read the version history one last time
VersionHistoryImpl versionHistoryImpl = (VersionHistoryImpl)node.getVersionHistory();

// and now remove it from the item managers cache
impl.getItemManager().itemDestroyed(versionHistoryImpl.getId(), null);

// ready for checkin
Version version = node.checkin();

I actually wanted to provide a Patch which fixes this behavior directly inside InternalXAVersionManager but I guess the xa version manager is not meant to manipulate item manager internals like the caching mechanism. It would be really nice if one of the jr committers could have a look at this issue, because I think there is not much to do than placing the right two lines of code at the right place.
                
> InvalidItemStateException if accessing VersionHistory before checkin()
> ----------------------------------------------------------------------
>
>                 Key: JCR-3173
>                 URL: https://issues.apache.org/jira/browse/JCR-3173
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.2.10
>            Reporter: Matthias Reischenbacher
>         Attachments: UserTransactionCheckinTest.java
>
>
> A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.
> -------------------------------------------------------------------------------
> Test set: org.apache.jackrabbit.core.version.UserTransactionCheckinTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.072 sec <<< FAILURE!
> testRestoreWithXA(org.apache.jackrabbit.core.version.UserTransactionCheckinTest)  Time elapsed: 3.858 sec  <<< ERROR!
> javax.jcr.InvalidItemStateException: Could not find child e77834ee-244c-441f-ab94-19847c769fa4 of node 03629609-8049-46ee-9e80-279c70b3a34d
> 	at org.apache.jackrabbit.core.ItemManager.getDefinition(ItemManager.java:207)
> 	at org.apache.jackrabbit.core.ItemData.getDefinition(ItemData.java:99)
> 	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:421)
> 	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:843)
> 	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
> 	at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:493)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:123)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:1)
> 	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:96)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:115)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:101)
> 	at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2830)
> 	at org.apache.jackrabbit.core.version.UserTransactionCheckinTest.testRestoreWithXA(UserTransactionCheckinTest.java:35)

--
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

       

[jira] [Commented] (JCR-3173) InvalidItemStateException if accessing VersionHistory before checkin()

Posted by "Roland Stamm (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-3173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13226036#comment-13226036 ] 

Roland Stamm commented on JCR-3173:
-----------------------------------

Same problem here when trying checkout - change - checkin in one transaction. This did work on the 1.6.x branch but every 2.x version shows this behavior so far.




                
> InvalidItemStateException if accessing VersionHistory before checkin()
> ----------------------------------------------------------------------
>
>                 Key: JCR-3173
>                 URL: https://issues.apache.org/jira/browse/JCR-3173
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.2.10
>            Reporter: Matthias Reischenbacher
>         Attachments: UserTransactionCheckinTest.java
>
>
> A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.
> -------------------------------------------------------------------------------
> Test set: org.apache.jackrabbit.core.version.UserTransactionCheckinTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.072 sec <<< FAILURE!
> testRestoreWithXA(org.apache.jackrabbit.core.version.UserTransactionCheckinTest)  Time elapsed: 3.858 sec  <<< ERROR!
> javax.jcr.InvalidItemStateException: Could not find child e77834ee-244c-441f-ab94-19847c769fa4 of node 03629609-8049-46ee-9e80-279c70b3a34d
> 	at org.apache.jackrabbit.core.ItemManager.getDefinition(ItemManager.java:207)
> 	at org.apache.jackrabbit.core.ItemData.getDefinition(ItemData.java:99)
> 	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:421)
> 	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:843)
> 	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
> 	at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:493)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:123)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:1)
> 	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:96)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:115)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:101)
> 	at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2830)
> 	at org.apache.jackrabbit.core.version.UserTransactionCheckinTest.testRestoreWithXA(UserTransactionCheckinTest.java:35)

--
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

        

[jira] [Commented] (JCR-3173) InvalidItemStateException if accessing VersionHistory before checkin()

Posted by "Matthias Reischenbacher (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-3173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13181279#comment-13181279 ] 

Matthias Reischenbacher commented on JCR-3173:
----------------------------------------------

Is there a known workaround until this issues gets fixed?
                
> InvalidItemStateException if accessing VersionHistory before checkin()
> ----------------------------------------------------------------------
>
>                 Key: JCR-3173
>                 URL: https://issues.apache.org/jira/browse/JCR-3173
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.2.10
>            Reporter: Matthias Reischenbacher
>         Attachments: UserTransactionCheckinTest.java
>
>
> A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.
> -------------------------------------------------------------------------------
> Test set: org.apache.jackrabbit.core.version.UserTransactionCheckinTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.072 sec <<< FAILURE!
> testRestoreWithXA(org.apache.jackrabbit.core.version.UserTransactionCheckinTest)  Time elapsed: 3.858 sec  <<< ERROR!
> javax.jcr.InvalidItemStateException: Could not find child e77834ee-244c-441f-ab94-19847c769fa4 of node 03629609-8049-46ee-9e80-279c70b3a34d
> 	at org.apache.jackrabbit.core.ItemManager.getDefinition(ItemManager.java:207)
> 	at org.apache.jackrabbit.core.ItemData.getDefinition(ItemData.java:99)
> 	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:421)
> 	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:843)
> 	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
> 	at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:493)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:123)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:1)
> 	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:96)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:115)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:101)
> 	at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2830)
> 	at org.apache.jackrabbit.core.version.UserTransactionCheckinTest.testRestoreWithXA(UserTransactionCheckinTest.java:35)

--
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

        

[jira] [Issue Comment Edited] (JCR-3173) InvalidItemStateException if accessing VersionHistory before checkin()

Posted by "Vitali Liubchanka (Issue Comment Edited) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-3173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13184140#comment-13184140 ] 

Vitali Liubchanka edited comment on JCR-3173 at 1/12/12 8:06 AM:
-----------------------------------------------------------------

Experience the same issue with checkout - change - checkin in one transaction.

There is a code in ItemManager.getDefinition(NodeState state):
ItemData parentData = getItemData(parentId, null, false);

It was discovered that this data is retrieved from cache where it's not up-to-date. Invoke several times in debug finally retrieves correct data and operation is finished successfully. 
                
      was (Author: vitalyl):
    Experience the same issue with checkout - change - checkin in one transaction.

There is a code in ItemManager.getDefinition(NodeState state):
ItemData parentData = getItemData(parentId, null, false);

It was discovered that this data is retrieved from cache where it's not up-to-date. Invoke several times in debug finally retrieves correct data and operation is finished successfully. 
I've not founfd workaround at the moment.
                  
> InvalidItemStateException if accessing VersionHistory before checkin()
> ----------------------------------------------------------------------
>
>                 Key: JCR-3173
>                 URL: https://issues.apache.org/jira/browse/JCR-3173
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.2.10
>            Reporter: Matthias Reischenbacher
>         Attachments: UserTransactionCheckinTest.java
>
>
> A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.
> -------------------------------------------------------------------------------
> Test set: org.apache.jackrabbit.core.version.UserTransactionCheckinTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.072 sec <<< FAILURE!
> testRestoreWithXA(org.apache.jackrabbit.core.version.UserTransactionCheckinTest)  Time elapsed: 3.858 sec  <<< ERROR!
> javax.jcr.InvalidItemStateException: Could not find child e77834ee-244c-441f-ab94-19847c769fa4 of node 03629609-8049-46ee-9e80-279c70b3a34d
> 	at org.apache.jackrabbit.core.ItemManager.getDefinition(ItemManager.java:207)
> 	at org.apache.jackrabbit.core.ItemData.getDefinition(ItemData.java:99)
> 	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:421)
> 	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:843)
> 	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
> 	at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:493)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:123)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:1)
> 	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:96)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:115)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:101)
> 	at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2830)
> 	at org.apache.jackrabbit.core.version.UserTransactionCheckinTest.testRestoreWithXA(UserTransactionCheckinTest.java:35)

--
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

        

[jira] [Commented] (JCR-3173) InvalidItemStateException if accessing VersionHistory before checkin()

Posted by "Vitali Liubchanka (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-3173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13184140#comment-13184140 ] 

Vitali Liubchanka commented on JCR-3173:
----------------------------------------

Experience the same issue with checkout - change - checkin in one transaction.

There is a code in ItemManager.getDefinition(NodeState state):
ItemData parentData = getItemData(parentId, null, false);

It was discovered that this data is retrieved from cache where it's not up-to-date. Invoke several times in debug finally retrieves correct data and operation is finished successfully. 
I've not founfd workaround at the moment.
                
> InvalidItemStateException if accessing VersionHistory before checkin()
> ----------------------------------------------------------------------
>
>                 Key: JCR-3173
>                 URL: https://issues.apache.org/jira/browse/JCR-3173
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.2.10
>            Reporter: Matthias Reischenbacher
>         Attachments: UserTransactionCheckinTest.java
>
>
> A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.
> -------------------------------------------------------------------------------
> Test set: org.apache.jackrabbit.core.version.UserTransactionCheckinTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.072 sec <<< FAILURE!
> testRestoreWithXA(org.apache.jackrabbit.core.version.UserTransactionCheckinTest)  Time elapsed: 3.858 sec  <<< ERROR!
> javax.jcr.InvalidItemStateException: Could not find child e77834ee-244c-441f-ab94-19847c769fa4 of node 03629609-8049-46ee-9e80-279c70b3a34d
> 	at org.apache.jackrabbit.core.ItemManager.getDefinition(ItemManager.java:207)
> 	at org.apache.jackrabbit.core.ItemData.getDefinition(ItemData.java:99)
> 	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:421)
> 	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:843)
> 	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
> 	at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:493)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:123)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:1)
> 	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:96)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:115)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:101)
> 	at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2830)
> 	at org.apache.jackrabbit.core.version.UserTransactionCheckinTest.testRestoreWithXA(UserTransactionCheckinTest.java:35)

--
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

        

[jira] [Issue Comment Edited] (JCR-3173) InvalidItemStateException if accessing VersionHistory before checkin()

Posted by "Matthias Reischenbacher (Issue Comment Edited) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-3173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13181279#comment-13181279 ] 

Matthias Reischenbacher edited comment on JCR-3173 at 1/6/12 12:49 PM:
-----------------------------------------------------------------------

Is there a known workaround until this issue gets fixed?
                
      was (Author: matthias8283):
    Is there a known workaround until this issues gets fixed?
                  
> InvalidItemStateException if accessing VersionHistory before checkin()
> ----------------------------------------------------------------------
>
>                 Key: JCR-3173
>                 URL: https://issues.apache.org/jira/browse/JCR-3173
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.2.10
>            Reporter: Matthias Reischenbacher
>         Attachments: UserTransactionCheckinTest.java
>
>
> A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.
> -------------------------------------------------------------------------------
> Test set: org.apache.jackrabbit.core.version.UserTransactionCheckinTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.072 sec <<< FAILURE!
> testRestoreWithXA(org.apache.jackrabbit.core.version.UserTransactionCheckinTest)  Time elapsed: 3.858 sec  <<< ERROR!
> javax.jcr.InvalidItemStateException: Could not find child e77834ee-244c-441f-ab94-19847c769fa4 of node 03629609-8049-46ee-9e80-279c70b3a34d
> 	at org.apache.jackrabbit.core.ItemManager.getDefinition(ItemManager.java:207)
> 	at org.apache.jackrabbit.core.ItemData.getDefinition(ItemData.java:99)
> 	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:421)
> 	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:843)
> 	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
> 	at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:493)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:123)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:1)
> 	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:96)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:115)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:101)
> 	at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2830)
> 	at org.apache.jackrabbit.core.version.UserTransactionCheckinTest.testRestoreWithXA(UserTransactionCheckinTest.java:35)

--
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

        

[jira] [Commented] (JCR-3173) InvalidItemStateException if accessing VersionHistory before checkin()

Posted by "Nick Tuckett (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-3173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13412669#comment-13412669 ] 

Nick Tuckett commented on JCR-3173:
-----------------------------------

Getting the same result as Vitali and Roland mention above, using version 2.4.0. 
For my use cases, this means that transactions containing changes to versionable nodes are broken.
The workaround works for me, but introduces undesirable dependencies on Jackrabbit implementation classes. So I wanted to add my weight to asking for a fix for this!
                
> InvalidItemStateException if accessing VersionHistory before checkin()
> ----------------------------------------------------------------------
>
>                 Key: JCR-3173
>                 URL: https://issues.apache.org/jira/browse/JCR-3173
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.2.10
>            Reporter: Matthias Reischenbacher
>         Attachments: UserTransactionCheckinTest.java
>
>
> A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.
> -------------------------------------------------------------------------------
> Test set: org.apache.jackrabbit.core.version.UserTransactionCheckinTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.072 sec <<< FAILURE!
> testRestoreWithXA(org.apache.jackrabbit.core.version.UserTransactionCheckinTest)  Time elapsed: 3.858 sec  <<< ERROR!
> javax.jcr.InvalidItemStateException: Could not find child e77834ee-244c-441f-ab94-19847c769fa4 of node 03629609-8049-46ee-9e80-279c70b3a34d
> 	at org.apache.jackrabbit.core.ItemManager.getDefinition(ItemManager.java:207)
> 	at org.apache.jackrabbit.core.ItemData.getDefinition(ItemData.java:99)
> 	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:421)
> 	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:843)
> 	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
> 	at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:493)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:123)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:1)
> 	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:96)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:115)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:101)
> 	at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2830)
> 	at org.apache.jackrabbit.core.version.UserTransactionCheckinTest.testRestoreWithXA(UserTransactionCheckinTest.java:35)

--
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

        

[jira] [Commented] (JCR-3173) InvalidItemStateException if accessing VersionHistory before checkin()

Posted by "Nick Tindall (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-3173?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13254478#comment-13254478 ] 

Nick Tindall commented on JCR-3173:
-----------------------------------

It would be awesome if this were fixed. Does anyone have a workaround?
                
> InvalidItemStateException if accessing VersionHistory before checkin()
> ----------------------------------------------------------------------
>
>                 Key: JCR-3173
>                 URL: https://issues.apache.org/jira/browse/JCR-3173
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core
>    Affects Versions: 2.2.10
>            Reporter: Matthias Reischenbacher
>         Attachments: UserTransactionCheckinTest.java
>
>
> A checkin operation fails during a transaction if the VersionHistory of a node is accessed previously. See the attached test case for further details.
> -------------------------------------------------------------------------------
> Test set: org.apache.jackrabbit.core.version.UserTransactionCheckinTest
> -------------------------------------------------------------------------------
> Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.072 sec <<< FAILURE!
> testRestoreWithXA(org.apache.jackrabbit.core.version.UserTransactionCheckinTest)  Time elapsed: 3.858 sec  <<< ERROR!
> javax.jcr.InvalidItemStateException: Could not find child e77834ee-244c-441f-ab94-19847c769fa4 of node 03629609-8049-46ee-9e80-279c70b3a34d
> 	at org.apache.jackrabbit.core.ItemManager.getDefinition(ItemManager.java:207)
> 	at org.apache.jackrabbit.core.ItemData.getDefinition(ItemData.java:99)
> 	at org.apache.jackrabbit.core.ItemManager.canRead(ItemManager.java:421)
> 	at org.apache.jackrabbit.core.ItemManager.createItemData(ItemManager.java:843)
> 	at org.apache.jackrabbit.core.ItemManager.getItemData(ItemManager.java:391)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:328)
> 	at org.apache.jackrabbit.core.ItemManager.getItem(ItemManager.java:622)
> 	at org.apache.jackrabbit.core.SessionImpl.getNodeById(SessionImpl.java:493)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:123)
> 	at org.apache.jackrabbit.core.VersionManagerImpl$1.perform(VersionManagerImpl.java:1)
> 	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:200)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.perform(VersionManagerImpl.java:96)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:115)
> 	at org.apache.jackrabbit.core.VersionManagerImpl.checkin(VersionManagerImpl.java:101)
> 	at org.apache.jackrabbit.core.NodeImpl.checkin(NodeImpl.java:2830)
> 	at org.apache.jackrabbit.core.version.UserTransactionCheckinTest.testRestoreWithXA(UserTransactionCheckinTest.java:35)

--
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