Thanks for your help. FYI: https://issues.apache.org/jira/browse/JCR-3194 On 12/23/2011 03:49 PM, Stefan Guggisberg wrote: > package test; > >>> > >>> import java.io.File; > >>> import java.util.concurrent.ExecutorService; > >>> import java.util.concurrent.Executors; > >>> import java.util.concurrent.TimeUnit; > >>> import java.util.concurrent.atomic.AtomicBoolean; > >>> import java.util.concurrent.atomic.AtomicInteger; > >>> > >>> import javax.jcr.Repository; > >>> import javax.jcr.RepositoryException; > >>> import javax.jcr.Session; > >>> import javax.jcr.SimpleCredentials; > >>> > >>> import org.apache.jackrabbit.core.TransientRepository; > >>> > >>> public class JackrabbitTest { > >>> > >>> public static void main(final String[] args) throws Exception { > >>> File dir = File.createTempFile("jackrabbit-test", ""); > >>> dir.delete(); > >>> dir.mkdir(); > >>> System.out.println("created temporary directory: " + > >>> dir.getAbsolutePath()); > >>> dir.deleteOnExit(); > >>> > >>> final Repository jcrRepo = new TransientRepository(dir); > >>> final AtomicBoolean passed = new AtomicBoolean(true); > >>> final AtomicInteger counter = new AtomicInteger(0); > >>> ExecutorService executor = Executors.newFixedThreadPool(50); > >>> Runnable runnable = new Runnable() { > >>> > >>> @Override > >>> public void run() { > >>> try { > >>> Session session = jcrRepo.login( > >>> new SimpleCredentials("admin", > >>> "admin".toCharArray())); > >>> session.getRootNode().addNode("n" + > >>> counter.getAndIncrement()); //unique name > >>> session.save(); > >>> session.logout(); > >>> } catch (RepositoryException e) { > >>> e.printStackTrace(); > >>> passed.set(false); > >>> } > >>> } > >>> > >>> }; > >>> System.out.println("Running threads"); > >>> for (int i = 0; i< 500; i++) { > >>> executor.execute(runnable); > >>> } > >>> executor.shutdown(); //Disable new tasks from being submitted > >>> if (!executor.awaitTermination(120, TimeUnit.SECONDS)) { > >>> System.err.println("timeout"); > >>> System.exit(1); > >>> } > >>> if (!passed.get()) { > >>> System.err.println("one or more threads got an exception"); > >>> System.exit(1); > >>> } else { > >>> System.out.println("all threads ran with no exceptions"); > >>> System.exit(0); > >>> } > >>> > >>> } > >>> > >>> }