Hi,

I get the bellow exception [0] when at least 2 JCRs are instantiated at the 
same time on different cluster nodes.Is this a bug, should be this situation 
managed or not?
I attached a test that can reproduce the scenario on a single non-cluster 
mongod instance.

Thanks,
Tudor





[0]

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:system/oak:namedChildNodeDefinitions/jcr:versionStorage":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:system/oak:namedChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:system/jcr:childNodeDefinition[3]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:system/jcr:childNodeDefinition[6]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:system/jcr:childNodeDefinition[5]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:system/jcr:childNodeDefinition[4]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:system":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Authorizable/oak:residualChildNodeDefinitions/nt:base":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Authorizable/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Authorizable/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Authorizable":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Members/oak:residualChildNodeDefinitions/rep:Members":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Members/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Members/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Members":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:versionStorage/jcr:childNodeDefinition[2]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:versionStorage/oak:residualChildNodeDefinitions/rep:versionStorage":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:versionStorage/oak:residualChildNodeDefinitions/nt:versionHistory":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:versionStorage/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:versionStorage/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:versionStorage":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/oak:namedPropertyDefinitions/oak:residualChildNodeDefinitions/oak:propertyDefinitions":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/oak:namedPropertyDefinitions/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/oak:namedPropertyDefinitions/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/oak:namedPropertyDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/oak:propertyDefinitions/oak:residualChildNodeDefinitions/nt:propertyDefinition":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/oak:propertyDefinitions/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/oak:propertyDefinitions/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/oak:propertyDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:nodeTypes/oak:residualChildNodeDefinitions/nt:nodeType":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:nodeTypes/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:nodeTypes/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:nodeTypes":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:unstructured/oak:residualChildNodeDefinitions/nt:base":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:unstructured/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:unstructured/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:unstructured":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/oak:namedChildNodeDefinitions/oak:residualChildNodeDefinitions/oak:childNodeDefinitions":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/oak:namedChildNodeDefinitions/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/oak:namedChildNodeDefinitions/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/oak:namedChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:version/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:version/oak:namedChildNodeDefinitions/jcr:frozenNode/nt:frozenNode":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:version/oak:namedChildNodeDefinitions/jcr:frozenNode":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:version/oak:namedChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:version":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:MergeConflict/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:MergeConflict/oak:namedChildNodeDefinitions/rep:ours/nt:unstructured":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:MergeConflict/oak:namedChildNodeDefinitions/rep:ours":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:MergeConflict/oak:namedChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:MergeConflict":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:RepoAccessControllable/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:RepoAccessControllable/oak:namedChildNodeDefinitions/rep:repoPolicy/rep:Policy":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:RepoAccessControllable/oak:namedChildNodeDefinitions/rep:repoPolicy":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:RepoAccessControllable/oak:namedChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:RepoAccessControllable":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:PrincipalAccessControl/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:PrincipalAccessControl/oak:namedChildNodeDefinitions/rep:policy/rep:Policy":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:PrincipalAccessControl/oak:namedChildNodeDefinitions/rep:policy":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:PrincipalAccessControl/oak:namedChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:PrincipalAccessControl":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:nodeType/jcr:childNodeDefinition[2]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:nodeType/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:nodeType/oak:namedChildNodeDefinitions/jcr:childNodeDefinition/nt:childNodeDefinition":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:nodeType/oak:namedChildNodeDefinitions/jcr:childNodeDefinition":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:nodeType/oak:namedChildNodeDefinitions/jcr:propertyDefinition/nt:propertyDefinition":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:nodeType/oak:namedChildNodeDefinitions/jcr:propertyDefinition":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:nodeType/oak:namedChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:nodeType":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:folder/oak:residualChildNodeDefinitions/nt:hierarchyNode":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:folder/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:folder/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:folder":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:root/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:root/oak:namedChildNodeDefinitions/jcr:system/rep:system":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:root/oak:namedChildNodeDefinitions/jcr:system":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:root/oak:namedChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:root":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:ACE/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:ACE/oak:namedChildNodeDefinitions/rep:restrictions/rep:Restrictions":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:ACE/oak:namedChildNodeDefinitions/rep:restrictions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:ACE/oak:namedChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:ACE":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:PermissionStore/jcr:childNodeDefinition[2]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:PermissionStore/oak:residualChildNodeDefinitions/rep:PermissionStore":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:PermissionStore/oak:residualChildNodeDefinitions/rep:Permissions":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:PermissionStore/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:PermissionStore/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:PermissionStore":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:versionHistory/jcr:childNodeDefinition[2]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:versionHistory/oak:residualChildNodeDefinitions/nt:version":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:versionHistory/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:versionHistory/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:versionHistory/oak:namedChildNodeDefinitions/jcr:versionLabels/nt:versionLabels":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:versionHistory/oak:namedChildNodeDefinitions/jcr:versionLabels":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:versionHistory/oak:namedChildNodeDefinitions/jcr:rootVersion/nt:version":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:versionHistory/oak:namedChildNodeDefinitions/jcr:rootVersion":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:versionHistory/oak:namedChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:versionHistory/jcr:childNodeDefinition[3]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:versionHistory":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:ACL/oak:residualChildNodeDefinitions/rep:ACE":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:ACL/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:ACL/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:ACL":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:frozenNode/oak:residualChildNodeDefinitions/nt:base":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:frozenNode/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:frozenNode/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/nt:frozenNode":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Configurations/jcr:childNodeDefinition[2]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Configurations/oak:residualChildNodeDefinitions/rep:Configurations":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Configurations/oak:residualChildNodeDefinitions/nt:configuration":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Configurations/oak:residualChildNodeDefinitions":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Configurations/jcr:childNodeDefinition[1]":{"match":true}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes/rep:Configurations":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system/jcr:nodeTypes":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition/jcr:system":{}

+"/oak:index/nodetype/:index/nt%3AchildNodeDefinition":{}

+"/oak:index/nodetype/:index":{}

+"/oak:index/nodetype":{"jcr:primaryType":"nam:oak:queryIndexDefinition","propertyNames":["str:jcr:primaryType","str:jcr:mixinTypes"],"reindex":false,"type":"p2"}

+"/oak:index/uuid/:index":{}

+"/oak:index/uuid":{"jcr:primaryType":"nam:oak:queryIndexDefinition","propertyNames":["str:jcr:uuid"],"reindex":false,"type":"p2","unique":true}

+"/oak:index":{"jcr:primaryType":"nam:nt:unstructured"}

    at 
org.apache.jackrabbit.mongomk.prototype.Commit.applyToDocumentStore(Commit.java:237)

    at 
org.apache.jackrabbit.mongomk.prototype.Commit.applyToDocumentStore(Commit.java:136)

    at org.apache.jackrabbit.mongomk.prototype.Commit.apply(Commit.java:120)

    at org.apache.jackrabbit.mongomk.prototype.MongoMK.commit(MongoMK.java:892)

    at 
org.apache.jackrabbit.oak.kernel.KernelNodeStoreBranch.merge(KernelNodeStoreBranch.java:160)

    ... 7 more

Caused by: org.apache.jackrabbit.mk.api.MicroKernelException: The node / was changed in revision r505f18d001-3c4, which was applied after the base revision r505f18d000-242; before 
r505f198000-242; document {_commitRoot={ "r505f18d001-3c4" : 0}, _deleted={ "r505f18d000-242" : "false" , "r505f18d001-3c4" : "false"}, 
_id=0:/, _lastRev={ "964" : "r505f18d001-3c4"}, _revisions={ "r505f18d000-242" : "true" , "r505f18d001-3c4" : "true"}}

    at 
org.apache.jackrabbit.mongomk.prototype.Commit.createOrUpdateNode(Commit.java:276)

    at 
org.apache.jackrabbit.mongomk.prototype.Commit.applyToDocumentStore(Commit.java:230)

    ... 11 more

java.lang.RuntimeException: org.apache.jackrabbit.oak.api.CommitFailedException: org.apache.jackrabbit.mk.api.MicroKernelException: Exception committing 
+"/rep:security/rep:authorizables/rep:users/a/an/anonymous":{"jcr:primaryType":"nam:rep:User","jcr:uuid":"294de355-7d9d-30b3-92d8-a1e6aab028cf","rep:authorizableId":"anonymous","rep:principalName":"anonymous"}

+"/rep:security/rep:authorizables/rep:users/a/an":{"jcr:primaryType":"nam:rep:AuthorizableFolder"}

+"/rep:security/rep:authorizables/rep:users/a/ad/admin":{"jcr:primaryType":"nam:rep:User","jcr:uuid":"21232f29-7a57-35a7-8389-4a0e4a801fc3","rep:authorizableId":"admin","rep:password":"{SHA-256}74243e82795fc044-1000-62cebfb029032670ac4d972dda4f84471a08560d1faa5b0ece79de83f2cded00","rep:principalName":"admin"}

+"/rep:security/rep:authorizables/rep:users/a/ad":{"jcr:primaryType":"nam:rep:

package org.apache.jackrabbit.oak.run;

import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;

import org.apache.jackrabbit.mongomk.impl.MongoConnection;
import org.apache.jackrabbit.mongomk.prototype.MongoMK;
import org.apache.jackrabbit.oak.jcr.Jcr;
import org.junit.Before;
import org.junit.Test;

public class ConcurrentRepos {

	int concurrentWriters = 2;
	ExecutorService threadExecutor;

	@Before
	public void before() throws Exception {

		threadExecutor = Executors.newFixedThreadPool(concurrentWriters);
	}

	@Test
	public void testConcurrentWriting() throws InterruptedException {

		CreateRepo task;
		for (int i = 0; i < concurrentWriters; i++) {
			task = new CreateRepo();
			threadExecutor.execute(task);
		}
		threadExecutor.shutdown();
		threadExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
	}

}

class CreateRepo implements Runnable {

	int id;

	public CreateRepo() {
		Random rand = new Random();
		id = rand.nextInt(1000);
		System.out.println("ClusterId "+id);
	}

	@Override
	public void run() {

		Session adminSession;
		try {
			Repository repo = new Jcr(new MongoMK((new MongoConnection(
					"localhost", 27017, "s1")).getDB(), id)).createRepository();
			adminSession = repo.login(new SimpleCredentials("admin", "admin"
					.toCharArray()));
			adminSession.getRootNode();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Reply via email to