Search in sources :

Example 21 with BackendMutation

use of com.baidu.hugegraph.backend.store.BackendMutation in project incubator-hugegraph by apache.

the class StoreStateMachine method applyCommand.

private Object applyCommand(StoreType type, StoreAction action, BytesBuffer buffer, boolean forwarded) {
    E.checkState(type != StoreType.ALL, "Can't apply command for all store at one time");
    BackendStore store = this.store(type);
    switch(action) {
        case CLEAR:
            boolean clearSpace = buffer.read() > 0;
            store.clear(clearSpace);
            this.context.clearCache();
            break;
        case TRUNCATE:
            store.truncate();
            this.context.clearCache();
            break;
        case SNAPSHOT:
            assert store == null;
            this.node().snapshot();
            break;
        case BEGIN_TX:
            store.beginTx();
            break;
        case COMMIT_TX:
            List<BackendMutation> mutations = StoreSerializer.readMutations(buffer);
            // RaftBackendStore doesn't write raft log for beginTx
            store.beginTx();
            for (BackendMutation mutation : mutations) {
                store.mutate(mutation);
                this.context.updateCacheIfNeeded(mutation, forwarded);
            }
            store.commitTx();
            break;
        case ROLLBACK_TX:
            store.rollbackTx();
            break;
        case INCR_COUNTER:
            // Do increase counter
            IncrCounter counter = StoreSerializer.readIncrCounter(buffer);
            store.increaseCounter(counter.type(), counter.increment());
            break;
        default:
            throw new IllegalArgumentException("Invalid action " + action);
    }
    return null;
}
Also used : BackendMutation(com.baidu.hugegraph.backend.store.BackendMutation) IncrCounter(com.baidu.hugegraph.backend.store.raft.RaftBackendStore.IncrCounter) BackendStore(com.baidu.hugegraph.backend.store.BackendStore)

Example 22 with BackendMutation

use of com.baidu.hugegraph.backend.store.BackendMutation in project incubator-hugegraph by apache.

the class IndexableTransaction method commit2Backend.

@Override
protected void commit2Backend() {
    BackendMutation mutation = this.prepareCommit();
    BackendMutation idxMutation = this.indexTransaction().prepareCommit();
    assert !mutation.isEmpty() || !idxMutation.isEmpty();
    // Commit graph/schema updates and index updates with graph/schema tx
    this.commitMutation2Backend(mutation, idxMutation);
}
Also used : BackendMutation(com.baidu.hugegraph.backend.store.BackendMutation)

Example 23 with BackendMutation

use of com.baidu.hugegraph.backend.store.BackendMutation in project incubator-hugegraph by apache.

the class BackendMutationTest method testAppendAndAppendEntryWithSameId.

@Test
public void testAppendAndAppendEntryWithSameId() {
    BackendMutation mutation = new BackendMutation();
    BackendEntry entry1 = constructBackendEntry("1", "name", "marko");
    BackendEntry entry2 = constructBackendEntry("1", "city", "Wuhan");
    mutation.add(entry1, Action.APPEND);
    mutation.add(entry2, Action.APPEND);
    Assert.assertEquals(2, get(mutation, "1").size());
    Assert.assertEquals(Action.APPEND, get(mutation, "1").get(0).action());
    Assert.assertEquals(Action.APPEND, get(mutation, "1").get(1).action());
}
Also used : BackendMutation(com.baidu.hugegraph.backend.store.BackendMutation) BackendEntry(com.baidu.hugegraph.backend.store.BackendEntry) TextBackendEntry(com.baidu.hugegraph.backend.serializer.TextBackendEntry) BaseUnitTest(com.baidu.hugegraph.unit.BaseUnitTest) Test(org.junit.Test)

Example 24 with BackendMutation

use of com.baidu.hugegraph.backend.store.BackendMutation in project incubator-hugegraph by apache.

the class BackendMutationTest method testEliminateAndAppendEntryWithSameEntry.

@Test
public void testEliminateAndAppendEntryWithSameEntry() {
    BackendMutation mutation = new BackendMutation();
    BackendEntry entry1 = constructBackendEntry("1", "name", "marko");
    BackendEntry entry2 = constructBackendEntry("1", "name", "marko");
    mutation.add(entry1, Action.ELIMINATE);
    mutation.add(entry2, Action.APPEND);
    Assert.assertEquals(1, get(mutation, "1").size());
    Assert.assertEquals(Action.APPEND, get(mutation, "1").get(0).action());
}
Also used : BackendMutation(com.baidu.hugegraph.backend.store.BackendMutation) BackendEntry(com.baidu.hugegraph.backend.store.BackendEntry) TextBackendEntry(com.baidu.hugegraph.backend.serializer.TextBackendEntry) BaseUnitTest(com.baidu.hugegraph.unit.BaseUnitTest) Test(org.junit.Test)

Example 25 with BackendMutation

use of com.baidu.hugegraph.backend.store.BackendMutation in project incubator-hugegraph by apache.

the class BackendMutationTest method testAppendAndEliminateEntryWithSameId.

@Test
public void testAppendAndEliminateEntryWithSameId() {
    BackendMutation mutation = new BackendMutation();
    BackendEntry entry1 = constructBackendEntry("1", "name", "marko");
    BackendEntry entry2 = constructBackendEntry("1", "city", "Wuhan");
    mutation.add(entry1, Action.APPEND);
    mutation.add(entry2, Action.ELIMINATE);
    Assert.assertEquals(2, get(mutation, "1").size());
    Assert.assertEquals(Action.APPEND, get(mutation, "1").get(0).action());
    Assert.assertEquals(Action.ELIMINATE, get(mutation, "1").get(1).action());
}
Also used : BackendMutation(com.baidu.hugegraph.backend.store.BackendMutation) BackendEntry(com.baidu.hugegraph.backend.store.BackendEntry) TextBackendEntry(com.baidu.hugegraph.backend.serializer.TextBackendEntry) BaseUnitTest(com.baidu.hugegraph.unit.BaseUnitTest) Test(org.junit.Test)

Aggregations

BackendMutation (com.baidu.hugegraph.backend.store.BackendMutation)31 Test (org.junit.Test)22 BackendEntry (com.baidu.hugegraph.backend.store.BackendEntry)21 TextBackendEntry (com.baidu.hugegraph.backend.serializer.TextBackendEntry)20 BaseUnitTest (com.baidu.hugegraph.unit.BaseUnitTest)20 BinaryBackendEntry (com.baidu.hugegraph.backend.serializer.BinaryBackendEntry)3 BytesBuffer (com.baidu.hugegraph.backend.serializer.BytesBuffer)3 BackendAction (com.baidu.hugegraph.backend.store.BackendAction)2 BackendException (com.baidu.hugegraph.backend.BackendException)1 Id (com.baidu.hugegraph.backend.id.Id)1 BackendStore (com.baidu.hugegraph.backend.store.BackendStore)1 IncrCounter (com.baidu.hugegraph.backend.store.raft.RaftBackendStore.IncrCounter)1 StoreCommand (com.baidu.hugegraph.backend.store.raft.StoreCommand)1 Watched (com.baidu.hugegraph.perf.PerfUtil.Watched)1 HugeType (com.baidu.hugegraph.type.HugeType)1 Action (com.baidu.hugegraph.type.define.Action)1 ArrayList (java.util.ArrayList)1