[ https://issues.apache.org/jira/browse/JCR-1666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Köll reopened JCR-1666: ----------------------------- Hudson Build failed .. must take a closer look ... > After transaction rollback session may become 'corrupt' > ------------------------------------------------------- > > Key: JCR-1666 > URL: https://issues.apache.org/jira/browse/JCR-1666 > Project: Jackrabbit Content Repository > Issue Type: Bug > Components: jackrabbit-core, transactions, versioning > Affects Versions: core 1.4.5 > Reporter: Roman Puchkovskiy > Assignee: Claus Köll > Fix For: 1.6.0 > > > Here's the test case. This method should be added to the > org.apache.jackrabbit.core.XATest class. > public void testRollbackRefreshSave() throws Exception { > // get user transaction object > UserTransaction utx = new UserTransactionImpl(superuser); > // start transaction > utx.begin(); > // add node and save > Node n = testRootNode.addNode("n"); > n.addMixin(mixVersionable); > superuser.save(); > // assertion: node exists in this session > String uuid = n.getUUID(); > try { > superuser.getNodeByUUID(uuid); > } catch (ItemNotFoundException e) { > fail("New node not visible after save()"); > } > // rollback > utx.rollback(); > superuser.refresh(false); > // assertion: node does not exist in this session > try { > superuser.getNodeByUUID(uuid); > fail("Node still visible after rollback()"); > } catch (ItemNotFoundException e) { > /* expected */ > } > utx = new UserTransactionImpl(superuser); > utx.begin(); > Node m = superuser.getRootNode().addNode("m"); > m.addMixin(mixVersionable); > superuser.save(); > utx.commit(); > } > This method creates a versionable node inside a tx, but the tx is rolled > back. Then another versionable node is tried to be created through the same > session, and this causes an exception to be thrown. > Please note that if one of the nodes is not versionable this problem does not > arise. > As for the use case, it seems to be the sequence that happens when sessions > are acquired through a connection pool. So when a rollback happens on some > session, it becomes 'corrupt' because its next users get this exception when > trying to create a versionable node. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.