Make shard_rsm.hpp a bit more clear

This commit is contained in:
Tyler Neely 2022-08-18 13:34:11 +00:00
parent d50b6c1abb
commit 3794693356
2 changed files with 16 additions and 6 deletions

View File

@ -75,7 +75,7 @@ class RsmClient {
const Time before = io_.Now();
do {
spdlog::debug("client sending CasRequest to Leader {}", leader_.ToString());
spdlog::debug("client sending WriteRequest to Leader {}", leader_.ToString());
ResponseFuture<WriteResponse<WriteResponseT>> response_future =
io_.template Request<WriteRequest<WriteRequestT>, WriteResponse<WriteResponseT>>(leader_, client_req);
ResponseResult<WriteResponse<WriteResponseT>> response_result = std::move(response_future).Wait();
@ -107,7 +107,7 @@ class RsmClient {
const Time before = io_.Now();
do {
spdlog::debug("client sending GetRequest to Leader {}", leader_.ToString());
spdlog::debug("client sending ReadRequest to Leader {}", leader_.ToString());
ResponseFuture<ReadResponse<ReadResponseT>> get_response_future =
io_.template Request<ReadRequest<ReadRequestT>, ReadResponse<ReadResponseT>>(leader_, read_req);

View File

@ -11,6 +11,16 @@
#pragma once
/// The StorageRsm is a simple in-memory raft-backed kv store that can be used for simple testing
/// and implementation of some query engine logic before storage engines are fully implemented.
///
/// To implement multiple read and write commands, change the StorageRead* and StorageWrite* requests
/// and responses to a std::variant of the different options, and route them to specific handlers in
/// the StorageRsm's Read and Apply methods. Remember that Read is called immediately when the Raft
/// leader receives the request, and does not replicate anything over Raft. Apply is called only
/// AFTER the StorageWriteRequest is replicated to a majority of Raft peers, and the result of calling
/// StorageRsm::Apply(StorageWriteRequest) is returned to the client that submitted the request.
#include <deque>
#include <iostream>
#include <map>
@ -60,11 +70,11 @@ struct StorageWriteResponse {
std::optional<Hlc> latest_known_shard_map_version{std::nullopt};
};
struct StorageGetRequest {
struct StorageReadRequest {
ShardRsmKey key;
};
struct StorageGetResponse {
struct StorageReadResponse {
bool shard_rsm_success;
std::optional<int> value;
// Only has a value if the given shard does not contain the requested key
@ -86,8 +96,8 @@ class StorageRsm {
}
public:
StorageGetResponse Read(StorageGetRequest request) {
StorageGetResponse ret;
StorageReadResponse Read(StorageReadRequest request) {
StorageReadResponse ret;
if (!IsKeyInRange(request.key)) {
ret.latest_known_shard_map_version = shard_map_version_;