Add Raft RPC messages

Summary:
Basic RPC messages for Raft protocol. They will most likely be updated as we
move along with the implementation.

Reviewers: msantl, teon.banek, mferencevic

Reviewed By: msantl, teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D1726
This commit is contained in:
Ivan Paljak 2018-11-12 13:13:21 +01:00
parent 54fa46541e
commit 7f44b895b4
4 changed files with 66 additions and 0 deletions

4
.gitignore vendored
View File

@ -85,6 +85,10 @@ src/durability/single_node_ha/state_delta.hpp
src/query/plan/distributed_ops.capnp
src/query/plan/distributed_ops.hpp
src/query/plan/operator.hpp
src/raft/log_entry.capnp
src/raft/log_entry.hpp
src/raft/raft_rpc_messages.capnp
src/raft/raft_rpc_messages.hpp
src/stats/stats_rpc_messages.capnp
src/stats/stats_rpc_messages.hpp
src/storage/distributed/rpc/concurrent_id_mapper_rpc_messages.capnp

View File

@ -291,6 +291,10 @@ add_lcp_single_node_ha(database/single_node_ha/serialization.lcp CAPNP_SCHEMA @0
add_capnp_single_node_ha(database/single_node_ha/serialization.capnp)
add_lcp_single_node_ha(query/frontend/ast/ast.lcp)
add_lcp_single_node_ha(query/plan/operator.lcp)
add_lcp_single_node_ha(raft/raft_rpc_messages.lcp CAPNP_SCHEMA @0xa6c29b4287233b66)
add_capnp_single_node_ha(raft/raft_rpc_messages.capnp)
add_lcp_single_node_ha(raft/log_entry.lcp CAPNP_SCHEMA @0x96c07fe13850c22a)
add_capnp_single_node_ha(raft/log_entry.capnp)
add_custom_target(generate_lcp_single_node_ha DEPENDS ${generated_lcp_single_node_ha_files})

19
src/raft/log_entry.lcp Normal file
View File

@ -0,0 +1,19 @@
#>cpp
#pragma once
#include "database/single_node_ha/serialization.hpp"
#include "durability/single_node_ha/state_delta.hpp"
#include "raft/log_entry.capnp.h"
cpp<#
(lcp:namespace raft)
(lcp:capnp-namespace "raft")
(lcp:capnp-import 'database "/database/single_node_ha/serialization.capnp")
(lcp:define-struct log-entry ()
((deltas "std::vector<database::StateDelta>" :capnp-type "List(Database.StateDelta)"))
(:serialize :capnp))
(lcp:pop-namespace) ;; raft

View File

@ -0,0 +1,39 @@
#>cpp
#pragma once
#include <vector>
#include "communication/rpc/messages.hpp"
#include "raft/log_entry.hpp"
#include "raft/raft_rpc_messages.capnp.h"
cpp<#
(lcp:namespace raft)
(lcp:capnp-namespace "raft")
(lcp:capnp-import 'raft "/raft/log_entry.capnp")
(lcp:define-rpc request-vote
(:request
((candidate-id :uint16_t)
(term :uint64_t)
(last-log-index :uint64_t)
(last-log-term :uint64_t)))
(:response
((vote-granted :bool)
(term :uint64_t))))
(lcp:define-rpc append-entries
(:request
((leader-id :uint16_t)
(leader-commit :uint16_t)
(term :uint64_t)
(prev-log-index :uint64_t)
(prev-log-term :uint64_t)
(entries "std::vector<raft::LogEntry>" :capnp-type "List(Raft.LogEntry)")))
(:response
((success :bool)
(term :uint64_t))))
(lcp:pop-namespace) ;; raft