use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.
the class ClusterTest2 method twoNodes.
@Test
public void twoNodes() throws Exception {
MemoryDocumentStore ds = new MemoryDocumentStore();
MemoryBlobStore bs = new MemoryBlobStore();
DocumentMK.Builder builder;
builder = new DocumentMK.Builder();
builder.setDocumentStore(ds).setBlobStore(bs);
DocumentMK mk1 = builder.setClusterId(1).open();
builder = new DocumentMK.Builder();
builder.setDocumentStore(ds).setBlobStore(bs);
DocumentMK mk2 = builder.setClusterId(2).open();
mk1.commit("/", "+\"test\":{\"x\": 1}", null, null);
mk1.backgroundWrite();
mk2.backgroundRead();
String b1 = mk2.branch(mk2.getHeadRevision());
mk2.commit("/", "-\"test\"", b1, null);
String b2 = mk2.branch(mk2.getHeadRevision());
String b2b = mk2.commit("/", "-\"test\"", b2, null);
mk2.merge(b2b, null);
mk2.backgroundWrite();
mk1.backgroundRead();
mk1.commit("/", "+\"test\":{\"x\": 1}", null, null);
mk1.backgroundWrite();
mk2.backgroundRead();
String n1 = mk1.getNodes("/test", mk1.getHeadRevision(), 0, 0, 10, null);
String n2 = mk2.getNodes("/test", mk2.getHeadRevision(), 0, 0, 10, null);
// mk1 now sees both changes
assertEquals("{\"x\":1,\":childNodeCount\":0}", n1);
assertEquals("{\"x\":1,\":childNodeCount\":0}", n2);
mk1.dispose();
mk2.dispose();
}
use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.
the class ClusterNodeRestartTest method restart.
// OAK-3549
@Test
public void restart() throws Exception {
MemoryDocumentStore docStore = new MemoryDocumentStore();
DocumentNodeStore ns1 = builderProvider.newBuilder().setDocumentStore(docStore).setClusterId(1).setAsyncDelay(0).getNodeStore();
DocumentNodeStore ns2 = builderProvider.newBuilder().setDocumentStore(docStore).setClusterId(2).setAsyncDelay(0).getNodeStore();
NodeBuilder builder = ns1.getRoot().builder();
builder.child("foo").child("bar");
merge(ns1, builder);
ns1.runBackgroundOperations();
ns2.runBackgroundOperations();
builder = ns2.getRoot().builder();
builder.child("foo").child("bar").setProperty("p", "v");
merge(ns2, builder);
assertTrue(ns2.getRoot().getChildNode("foo").getChildNode("bar").hasProperty("p"));
ns2.dispose();
ns1.runBackgroundOperations();
assertTrue(ns1.getRoot().getChildNode("foo").getChildNode("bar").hasProperty("p"));
ns2 = builderProvider.newBuilder().setDocumentStore(docStore).setClusterId(2).setAsyncDelay(0).getNodeStore();
assertTrue(ns2.getRoot().getChildNode("foo").getChildNode("bar").hasProperty("p"));
}
use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.
the class ClusterTest method clusterNodeInfoLease.
@Test
public void clusterNodeInfoLease() throws InterruptedException {
MemoryDocumentStore store = new MemoryDocumentStore();
ClusterNodeInfo c1, c2;
c1 = ClusterNodeInfo.getInstance(store, "m1", null);
assertEquals(1, c1.getId());
c1.setLeaseTime(1);
c1.setLeaseUpdateInterval(0);
// this will quickly expire
c1.renewLease();
Thread.sleep(10);
c2 = ClusterNodeInfo.getInstance(store, "m1", null);
assertEquals(1, c2.getId());
}
use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.
the class CheckpointsTest method crossClusterCheckpointNewClusterNode.
@Test
public void crossClusterCheckpointNewClusterNode() throws Exception {
DocumentStore store = new MemoryDocumentStore();
DocumentNodeStore ns1 = builderProvider.newBuilder().setClusterId(1).setDocumentStore(store).setAsyncDelay(0).getNodeStore();
// create 'foo' on ns1
NodeBuilder b1 = ns1.getRoot().builder();
b1.child("foo");
ns1.merge(b1, EmptyHook.INSTANCE, CommitInfo.EMPTY);
// checkpoint sees 'foo' but not 'bar'
String checkpoint = ns1.checkpoint(Long.MAX_VALUE);
// create 'bar' on ns1
b1 = ns1.getRoot().builder();
b1.child("bar");
ns1.merge(b1, EmptyHook.INSTANCE, CommitInfo.EMPTY);
// make visible
ns1.runBackgroundOperations();
// now start second node store
DocumentNodeStore ns2 = builderProvider.newBuilder().setClusterId(2).setDocumentStore(store).setAsyncDelay(0).getNodeStore();
NodeBuilder b2 = ns2.getRoot().builder();
b2.child("baz");
ns2.merge(b2, EmptyHook.INSTANCE, CommitInfo.EMPTY);
NodeState root = ns2.retrieve(checkpoint);
assertNotNull(root);
assertTrue(root.hasChildNode("foo"));
assertFalse(root.hasChildNode("bar"));
assertFalse(root.hasChildNode("baz"));
}
use of org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore in project jackrabbit-oak by apache.
the class CheckpointsTest method sameClusterReadOldCheckpoint.
@Test
public void sameClusterReadOldCheckpoint() throws Exception {
DocumentStore store = new MemoryDocumentStore();
DocumentNodeStore ns1 = builderProvider.newBuilder().setClusterId(1).setDocumentStore(store).setAsyncDelay(0).getNodeStore();
NodeBuilder b1 = ns1.getRoot().builder();
b1.child("foo");
ns1.merge(b1, EmptyHook.INSTANCE, CommitInfo.EMPTY);
ns1.runBackgroundOperations();
// manually create a check point in 1.2 format
Revision headRev = Revision.fromString(ns1.getHeadRevision().toString());
long expires = Long.MAX_VALUE;
String data = "{\"expires\":\"" + expires + "\"}";
UpdateOp update = new UpdateOp("checkpoint", false);
update.setMapEntry("data", headRev, data);
store.createOrUpdate(Collection.SETTINGS, update);
// create another node
NodeBuilder b2 = ns1.getRoot().builder();
b2.child("bar");
ns1.merge(b2, EmptyHook.INSTANCE, CommitInfo.EMPTY);
NodeState root = ns1.retrieve(headRev.toString());
assertNotNull(root);
assertTrue(root.hasChildNode("foo"));
assertFalse(root.hasChildNode("bar"));
}
Aggregations