jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mat Lowery <mlow...@pentaho.com>
Subject Re: Concurrent modifications to a single node
Date Fri, 23 Dec 2011 21:27:13 GMT
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);
> >>>      }
> >>>
> >>>    }
> >>>
> >>>  }

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message