You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Stefan Guggisberg (JIRA)" <ji...@apache.org> on 2005/10/25 18:19:55 UTC
[jira] Created: (JCR-261) iterative removal of same-name sibling nodes might under certain circumstances throw unexpected exceptions
iterative removal of same-name sibling nodes might under certain circumstances throw unexpected exceptions
----------------------------------------------------------------------------------------------------------
Key: JCR-261
URL: http://issues.apache.org/jira/browse/JCR-261
Project: Jackrabbit
Type: Bug
Components: core
Environment: svn r328092
Reporter: Stefan Guggisberg
Fix For: 1.0
code fragment to reproduce the issue:
// setup test
if (root.hasNode("tmp")) {
root.getNode("tmp").remove();
session.save();
}
Node tmp = root.addNode("tmp");
for (int i = 0; i < 4; i++) {
Node a = tmp.addNode("a");
System.out.println("added " + a.getPath());
}
session.save();
// iterative removal of same name sibling child nodes
NodeIterator ni = tmp.getNodes();
while (ni.hasNext()) {
Node n = ni.nextNode();
System.out.println("removing " + n.getPath());
n.remove();
tmp.save();
}
console output:
added /tmp/a
added /tmp/a[2]
added /tmp/a[3]
added /tmp/a[4]
removing /tmp/a
removing /tmp/a
removing /
javax.jcr.RepositoryException: /: cannot remove root node
at org.apache.jackrabbit.core.ItemImpl.internalRemove(ItemImpl.java:766)
at org.apache.jackrabbit.core.ItemImpl.remove(ItemImpl.java:997)
at org.apache.jackrabbit.core.Test.main(Test.java:141)
note that the msg of the exception is misleading: the above code did never try to remove
the root node.
the exception is caused by a bug in CachingHierarchyManager which fails to update
the cache correctly.
btw: if you comment the first logging stmt, i.e.
//System.out.println("added " + a.getPath());
the problem doesn't occur anymore.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Closed: (JCR-261) iterative removal of same-name sibling nodes might under certain circumstances throw unexpected exceptions
Posted by "Stefan Guggisberg (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/JCR-261?page=all ]
Stefan Guggisberg closed JCR-261:
---------------------------------
Resolution: Fixed
fixed in svn r328639
> iterative removal of same-name sibling nodes might under certain circumstances throw unexpected exceptions
> ----------------------------------------------------------------------------------------------------------
>
> Key: JCR-261
> URL: http://issues.apache.org/jira/browse/JCR-261
> Project: Jackrabbit
> Type: Bug
> Components: core
> Environment: svn r328092
> Reporter: Stefan Guggisberg
> Fix For: 1.0
>
> code fragment to reproduce the issue:
> // setup test
> if (root.hasNode("tmp")) {
> root.getNode("tmp").remove();
> session.save();
> }
> Node tmp = root.addNode("tmp");
> for (int i = 0; i < 4; i++) {
> Node a = tmp.addNode("a");
> System.out.println("added " + a.getPath());
> }
> session.save();
> // iterative removal of same name sibling child nodes
> NodeIterator ni = tmp.getNodes();
> while (ni.hasNext()) {
> Node n = ni.nextNode();
> System.out.println("removing " + n.getPath());
> n.remove();
> tmp.save();
> }
> console output:
> added /tmp/a
> added /tmp/a[2]
> added /tmp/a[3]
> added /tmp/a[4]
> removing /tmp/a
> removing /tmp/a
> removing /
> javax.jcr.RepositoryException: /: cannot remove root node
> at org.apache.jackrabbit.core.ItemImpl.internalRemove(ItemImpl.java:766)
> at org.apache.jackrabbit.core.ItemImpl.remove(ItemImpl.java:997)
> at org.apache.jackrabbit.core.Test.main(Test.java:141)
> note that the msg of the exception is misleading: the above code did never try to remove
> the root node.
> the exception is caused by a bug in CachingHierarchyManager which fails to update
> the cache correctly.
> btw: if you comment the first logging stmt, i.e.
> //System.out.println("added " + a.getPath());
> the problem doesn't occur anymore.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira