Search in sources :

Example 76 with MemoryDocumentStore

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();
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) MemoryBlobStore(org.apache.jackrabbit.oak.spi.blob.MemoryBlobStore) Test(org.junit.Test)

Example 77 with MemoryDocumentStore

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"));
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) NodeBuilder(org.apache.jackrabbit.oak.spi.state.NodeBuilder) Test(org.junit.Test)

Example 78 with MemoryDocumentStore

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());
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) Test(org.junit.Test)

Example 79 with MemoryDocumentStore

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"));
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) NodeState(org.apache.jackrabbit.oak.spi.state.NodeState) MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) NodeBuilder(org.apache.jackrabbit.oak.spi.state.NodeBuilder) Test(org.junit.Test)

Example 80 with MemoryDocumentStore

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"));
}
Also used : MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) NodeState(org.apache.jackrabbit.oak.spi.state.NodeState) MemoryDocumentStore(org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore) NodeBuilder(org.apache.jackrabbit.oak.spi.state.NodeBuilder) Test(org.junit.Test)

Aggregations

MemoryDocumentStore (org.apache.jackrabbit.oak.plugins.document.memory.MemoryDocumentStore)132 Test (org.junit.Test)113 NodeBuilder (org.apache.jackrabbit.oak.spi.state.NodeBuilder)72 Clock (org.apache.jackrabbit.oak.stats.Clock)21 NodeState (org.apache.jackrabbit.oak.spi.state.NodeState)19 Before (org.junit.Before)13 CommitFailedException (org.apache.jackrabbit.oak.api.CommitFailedException)11 MemoryBlobStore (org.apache.jackrabbit.oak.spi.blob.MemoryBlobStore)10 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)9 Utils.getRootDocument (org.apache.jackrabbit.oak.plugins.document.util.Utils.getRootDocument)9 Random (java.util.Random)8 CONSTRAINT (org.apache.jackrabbit.oak.api.CommitFailedException.CONSTRAINT)8 DocumentNodeStore (org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore)7 ChildNodeEntry (org.apache.jackrabbit.oak.spi.state.ChildNodeEntry)6 ArrayList (java.util.ArrayList)5 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)5 StringSort (org.apache.jackrabbit.oak.commons.sort.StringSort)5 List (java.util.List)4 Semaphore (java.util.concurrent.Semaphore)4 VersionGCStats (org.apache.jackrabbit.oak.plugins.document.VersionGarbageCollector.VersionGCStats)4