use of com.baidu.hugegraph.backend.store.raft.StoreCommand in project incubator-hugegraph by apache.
the class StoreCommandProcessor method parseStoreCommand.
private StoreCommand parseStoreCommand(StoreCommandRequest request) {
StoreType type = request.getType();
StoreAction action = request.getAction();
byte[] data = request.getData().toByteArray();
return new StoreCommand(type, action, data, true);
}
use of com.baidu.hugegraph.backend.store.raft.StoreCommand in project incubator-hugegraph by apache.
the class StoreCommandProcessor method processRequest.
@Override
public Message processRequest(StoreCommandRequest request, RpcRequestClosure done) {
LOG.debug("Processing StoreCommandRequest: {}", request.getAction());
RaftNode node = this.context.node();
try {
StoreCommand command = this.parseStoreCommand(request);
RaftStoreClosure closure = new RaftStoreClosure(command);
node.submitAndWait(command, closure);
// TODO: return the submitAndWait() result to rpc client
return StoreCommandResponse.newBuilder().setStatus(true).build();
} catch (Throwable e) {
LOG.warn("Failed to process StoreCommandRequest: {}", request.getAction(), e);
StoreCommandResponse.Builder builder = StoreCommandResponse.newBuilder().setStatus(false);
if (e.getMessage() != null) {
builder.setMessage(e.getMessage());
}
return builder.build();
}
}
use of com.baidu.hugegraph.backend.store.raft.StoreCommand in project incubator-hugegraph by apache.
the class StoreSerializerTest method testSerializeStoreCommand.
@Test
public void testSerializeStoreCommand() {
BinaryBackendEntry entry = new BinaryBackendEntry(HugeType.VERTEX, new byte[] { 1, 2 });
entry.column(new byte[] { 1 }, new byte[] { 1 });
entry.column(new byte[] { 2 }, new byte[] { 2 });
entry.column(new byte[] { 127 }, new byte[] { 127 });
BackendMutation origin = new BackendMutation();
origin.add(entry, Action.INSERT);
byte[] mutationBytes = StoreSerializer.writeMutation(origin);
StoreCommand command = new StoreCommand(StoreType.GRAPH, StoreAction.MUTATE, mutationBytes);
Assert.assertEquals(StoreAction.MUTATE, command.action());
Assert.assertArrayEquals(mutationBytes, command.data());
byte[] commandBytes = command.data();
StoreCommand actual = StoreCommand.fromBytes(commandBytes);
Assert.assertEquals(StoreType.GRAPH, command.type());
Assert.assertEquals(command.action(), actual.action());
Assert.assertArrayEquals(command.data(), actual.data());
}
Aggregations