Hi,
Compile and run the following class:
/*
* Created by Behrang Saeedzadeh
* on Sep 29, 2006 @ 5:30:34 PM
*/
package org.behrang.practice.jsr170;
import org.apache.jackrabbit.core.TransientRepository;
import javax.jcr.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author Behrang Saeedzadeh
*/
public class Main {
public static void main(String[] args) throws Exception {
final int BLOG_COUNT = 100;
Repository rep = new TransientRepository();
Session s = rep.login(new SimpleCredentials("username",
"password".toCharArray()));
Node blogs = s.getRootNode().addNode("blogs");
s.save();
for (int i = 0; i < BLOG_COUNT; i++) {
Node blog = blogs.addNode("blog" + i);
System.out.println(blog.getPath());
}
s.save();
s.logout();
List<Session> sessions = new ArrayList<Session>(BLOG_COUNT);
for (int i = 0; i < BLOG_COUNT; i++) {
Session sess = rep.login(new SimpleCredentials("User " + i,
"password".toCharArray()));
sessions.add(sess);
System.out.println(i);
}
{
int id = 0;
for (Session sess : sessions) {
new Thread(new UserThread(sess, id++)).start();
}
}
}
}
class UserThread implements Runnable {
private static final int POST_COUNT = 20;
private Session session;
private long start;
private long end;
private String user;
private int id;
public UserThread(Session session, int id) {
this.session = session;
this.user = session.getUserID();
this.id = id;
}
public void run() {
System.out.println("Started: " + id);
start = System.currentTimeMillis();
try {
Node blogRoot =
session.getRootNode().getNode("blogs").getNode("blog" + id);
for (int i = 0; i < POST_COUNT; i++) {
Node post = blogRoot.addNode("post" + i);
post.setProperty("title", "Title " + i);
post.setProperty("body", "Body" + i);
}
session.save();
session.logout();
end = System.currentTimeMillis();
System.out.println(user + " finished its job at " + (end -
start) / 1000d);
} catch (RepositoryException re) {
re.printStackTrace();
}
}
}
Now, change the value of BLOG_COUNT to 20 and rerun the class. When I do
this, I get 20 exceptions:
javax.jcr.PathNotFoundException: blog11
at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2369)
at org.behrang.practice.jsr170.UserThread.run(Main.java:76)
at java.lang.Thread.run(Thread.java:595)
javax.jcr.PathNotFoundException: blog10
at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2369)
at org.behrang.practice.jsr170.UserThread.run(Main.java:76)
at java.lang.Thread.run(Thread.java:595)
javax.jcr.PathNotFoundException: blog12
at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2369)
at org.behrang.practice.jsr170.UserThread.run(Main.java:76)
at java.lang.Thread.run(Thread.java:595)
javax.jcr.PathNotFoundException: blog13
at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2369)
at org.behrang.practice.jsr170.UserThread.run(Main.java:76)
at java.lang.Thread.run(Thread.java:595)
javax.jcr.PathNotFoundException: blog14
at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2369)
at org.behrang.practice.jsr170.UserThread.run(Main.java:76)
at java.lang.Thread.run(Thread.java:595)
javax.jcr.PathNotFoundException: blog15
at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2369)
at org.behrang.practice.jsr170.UserThread.run(Main.java:76)
at java.lang.Thread.run(Thread.java:595)
javax.jcr.PathNotFoundException: blog16
at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2369)
at org.behrang.practice.jsr170.UserThread.run(Main.java:76)
at java.lang.Thread.run(Thread.java:595)
javax.jcr.PathNotFoundException: blog17
at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2369)
at org.behrang.practice.jsr170.UserThread.run(Main.java:76)
at java.lang.Thread.run(Thread.java:595)
Started: 18
Started: 19
javax.jcr.PathNotFoundException: blog18
at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2369)
at org.behrang.practice.jsr170.UserThread.run(Main.java:76)
at java.lang.Thread.run(Thread.java:595)
javax.jcr.PathNotFoundException: blog19
at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2369)
at org.behrang.practice.jsr170.UserThread.run(Main.java:76)
at java.lang.Thread.run(Thread.java:595)
If I delete the repository directory and repository.xml and derby.log and
rerun the program, the exceptions fade away...
Could someone please confirm this bug?
Tested against Jackrabbit 1.0.1
BTW - How can I add Jackrabbitto my Favorite Forums in Nabble.com!?
-Behi
--
View this message in context:
http://www.nabble.com/TransientRepository-bug--tf2379243.html#a6630619
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.