Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion category/execution/ethereum/db/trie_rodb.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class TrieRODb final : public ::monad::Db
{
::monad::mpt::RODb &db_;
uint64_t block_number_;
::monad::mpt::CacheNodeCursor prefix_cursor_;
::monad::mpt::NodeCursor prefix_cursor_;

public:
TrieRODb(mpt::RODb &db)
Expand Down
24 changes: 12 additions & 12 deletions category/mpt/db.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -434,9 +434,9 @@ struct OnDiskWithWorkerThreadImpl

struct RODbFiberFindOwningNodeRequest
{
threadsafe_boost_fibers_promise<find_result_type<CacheNodeCursor>>
threadsafe_boost_fibers_promise<find_result_type<NodeCursor>>
*promise;
CacheNodeCursor start;
NodeCursor start;
NibblesView key;
uint64_t version;
};
Expand Down Expand Up @@ -1068,7 +1068,7 @@ struct RODb::Impl final : public OnDiskWithWorkerThreadImpl
}

find_owning_cursor_result_type find_fiber_blocking(
CacheNodeCursor const &start, NibblesView const &key,
NodeCursor const &start, NibblesView const &key,
uint64_t const version)
{
threadsafe_boost_fibers_promise<find_owning_cursor_result_type> promise;
Expand All @@ -1087,7 +1087,7 @@ struct RODb::Impl final : public OnDiskWithWorkerThreadImpl
return fut.get();
}

CacheNodeCursor load_root_fiber_blocking(uint64_t version)
NodeCursor load_root_fiber_blocking(uint64_t version)
{
auto const root_offset = aux().get_root_offset_at_version(version);
if (root_offset == INVALID_OFFSET) {
Expand Down Expand Up @@ -1140,8 +1140,8 @@ DbError find_result_to_db_error(find_result const result) noexcept
}
}

Result<CacheNodeCursor> RODb::find(
CacheNodeCursor const &node_cursor, NibblesView const key,
Result<NodeCursor> RODb::find(
NodeCursor const &node_cursor, NibblesView const key,
uint64_t const block_id) const
{
MONAD_ASSERT(impl_);
Expand All @@ -1161,11 +1161,11 @@ Result<CacheNodeCursor> RODb::find(
return cursor;
}

Result<CacheNodeCursor>
Result<NodeCursor>
RODb::find(NibblesView const key, uint64_t const block_id) const
{
MONAD_ASSERT(impl_);
CacheNodeCursor cursor = impl_->load_root_fiber_blocking(block_id);
NodeCursor cursor = impl_->load_root_fiber_blocking(block_id);
return find(cursor, key, block_id);
}

Expand Down Expand Up @@ -1460,12 +1460,12 @@ namespace detail
auto it = inflights.find(sender->block_id);
auto pendings = std::move(it->second);
inflights.erase(it);
std::shared_ptr<CacheNode> root{};
std::shared_ptr<Node> root{};
bool const block_alive_after_read =
sender->context.aux.version_is_valid_ondisk(sender->block_id);
if (block_alive_after_read) {
sender->root =
detail::deserialize_node_from_receiver_result<CacheNode>(
detail::deserialize_node_from_receiver_result(
std::move(buffer_), buffer_off, io_state);
root = sender->root;
sender->res_root = {{sender->root}, find_result::success};
Expand Down Expand Up @@ -1546,7 +1546,7 @@ namespace detail
return async::success();
}

auto cont = [this, io_state](std::shared_ptr<CacheNode> root_) {
auto cont = [this, io_state](std::shared_ptr<Node> root_) {
if (!root_) {
res_root = {{}, find_result::version_no_longer_exist};
}
Expand Down Expand Up @@ -1638,7 +1638,7 @@ namespace detail
}

template struct DbGetSender<byte_string>;
template struct DbGetSender<std::shared_ptr<CacheNode>>;
template struct DbGetSender<std::shared_ptr<Node>>;
}

MONAD_MPT_NAMESPACE_END
24 changes: 12 additions & 12 deletions category/mpt/db.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,9 @@ class RODb
RODb &operator=(RODb const &) = delete;
RODb &operator=(RODb &&) = delete;

Result<CacheNodeCursor>
find(CacheNodeCursor const &, NibblesView, uint64_t block_id) const;
Result<CacheNodeCursor> find(NibblesView prefix, uint64_t block_id) const;
Result<NodeCursor>
find(NodeCursor const &, NibblesView, uint64_t block_id) const;
Result<NodeCursor> find(NibblesView prefix, uint64_t block_id) const;

uint64_t get_latest_version() const;
uint64_t get_earliest_version() const;
Expand Down Expand Up @@ -166,7 +166,7 @@ class Db
struct AsyncContext
{
using inflight_root_t = unordered_dense_map<
uint64_t, std::vector<std::function<void(std::shared_ptr<CacheNode>)>>>;
uint64_t, std::vector<std::function<void(std::shared_ptr<Node>)>>>;

UpdateAux<> &aux;
NodeCache node_cache;
Expand Down Expand Up @@ -200,12 +200,12 @@ namespace detail
op_get_node2
} op_type;

std::shared_ptr<CacheNode> root;
CacheNodeCursor cur;
std::shared_ptr<Node> root;
NodeCursor cur;
Nibbles const nv;
uint64_t const block_id;

find_result_type<CacheNodeCursor> res_root;
find_result_type<NodeCursor> res_root;
find_result_type<T> get_result;

constexpr DbGetSender(
Expand All @@ -216,21 +216,21 @@ namespace detail
, nv(n)
, block_id(block_id_)
{
if constexpr (std::same_as<T, std::shared_ptr<CacheNode>>) {
if constexpr (std::same_as<T, std::shared_ptr<Node>>) {
MONAD_ASSERT(op_type == op_t::op_get_node1);
}
}

constexpr DbGetSender(
AsyncContext &context_, op_t const op_type_, CacheNodeCursor cur_,
AsyncContext &context_, op_t const op_type_, NodeCursor cur_,
NibblesView const n, uint64_t const block_id_)
: context(context_)
, op_type(op_type_)
, cur(cur_)
, nv(n)
, block_id(block_id_)
{
if constexpr (std::same_as<T, std::shared_ptr<CacheNode>>) {
if constexpr (std::same_as<T, std::shared_ptr<Node>>) {
MONAD_ASSERT(op_type == op_t::op_get_node1);
}
}
Expand Down Expand Up @@ -280,13 +280,13 @@ inline detail::DbGetSender<byte_string> make_get_data_sender(
block_id};
}

inline detail::DbGetSender<std::shared_ptr<CacheNode>> make_get_node_sender(
inline detail::DbGetSender<std::shared_ptr<Node>> make_get_node_sender(
AsyncContext *const context, NibblesView const nv, uint64_t const block_id)
{
MONAD_ASSERT(context);
return {
*context,
detail::DbGetSender<std::shared_ptr<CacheNode>>::op_t::op_get_node1,
detail::DbGetSender<std::shared_ptr<Node>>::op_t::op_get_node1,
nv,
block_id};
}
Expand Down
10 changes: 5 additions & 5 deletions category/mpt/deserialize_node_from_receiver_result.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -53,20 +53,20 @@ namespace detail
}
}

template <class NodeType, class ResultType>
inline NodeType::UniquePtr deserialize_node_from_receiver_result(
template <class ResultType>
inline Node::UniquePtr deserialize_node_from_receiver_result(
ResultType buffer_, uint16_t buffer_off,
MONAD_ASYNC_NAMESPACE::erased_connected_operation *io_state)
{
MONAD_ASSERT(buffer_);
typename NodeType::UniquePtr node;
Node::UniquePtr node;
if constexpr (std::is_same_v<
std::decay_t<ResultType>,
typename monad::async::read_single_buffer_sender::
result_type>) {
auto &buffer = std::move(buffer_).assume_value().get();
MONAD_ASSERT(buffer.size() > buffer_off);
node = deserialize_node_from_buffer<NodeType>(
node = deserialize_node_from_buffer(
(unsigned char *)buffer.data() + buffer_off,
buffer.size() - buffer_off);
buffer.reset();
Expand All @@ -82,7 +82,7 @@ namespace detail
MONAD_ASSERT(buffer.size() > buffer_off);
// Did the Receiver forget to set lifetime_managed_internally?
MONAD_DEBUG_ASSERT(io_state->lifetime_is_managed_internally());
node = deserialize_node_from_buffer<NodeType>(
node = deserialize_node_from_buffer(
(unsigned char *)buffer.data() + buffer_off,
buffer.size() - buffer_off);
}
Expand Down
36 changes: 18 additions & 18 deletions category/mpt/find_notify_fiber.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ namespace
auto const offset = parent->fnext(branch_index);
auto node = parent->next(branch_index);
if (node == nullptr) {
node = detail::deserialize_node_from_receiver_result<Node>(
node = detail::deserialize_node_from_receiver_result(
std::move(buffer_), buffer_off, io_state);
parent->set_next(branch_index, node);
}
Expand Down Expand Up @@ -151,7 +151,7 @@ namespace
ResultType buffer_)
{
MONAD_ASSERT(buffer_);
CacheNodeCursor start_cursor{};
NodeCursor start_cursor{};
// verify the offset it read is still valid and has not been reused
// to write new data.
auto const virtual_offset_after = aux->physical_to_virtual(offset);
Expand All @@ -160,11 +160,11 @@ namespace
NodeCache::ConstAccessor acc;
MONAD_ASSERT(node_cache.find(acc, virtual_offset) == false);
}
std::shared_ptr<CacheNode> node =
detail::deserialize_node_from_receiver_result<CacheNode>(
std::shared_ptr<Node> node =
detail::deserialize_node_from_receiver_result(
std::move(buffer_), buffer_off, io_state);
node_cache.insert(virtual_offset, node);
start_cursor = CacheNodeCursor{node};
start_cursor = NodeCursor{node};
}
auto it = inflights.find(virtual_offset);
MONAD_ASSERT(it != inflights.end());
Expand All @@ -186,7 +186,7 @@ namespace
{
if (aux.io->owning_thread_id() != get_tl_tid()) {
promise.set_value(
{CacheNodeCursor{},
{NodeCursor{},
find_result::need_to_continue_in_io_thread});
return;
}
Expand Down Expand Up @@ -286,15 +286,15 @@ void find_notify_fiber_future(
void find_owning_notify_fiber_future(
UpdateAuxImpl &aux, NodeCache &node_cache, inflight_map_owning_t &inflights,
threadsafe_boost_fibers_promise<find_owning_cursor_result_type> &promise,
CacheNodeCursor const &start, NibblesView const key, uint64_t const version)
NodeCursor const &start, NibblesView const key, uint64_t const version)
{
if (!aux.version_is_valid_ondisk(version)) {
promise.set_value({start, find_result::version_no_longer_exist});
return;
}
if (!start.is_valid()) {
promise.set_value(
{CacheNodeCursor{}, find_result::root_node_is_null_failure});
{NodeCursor{}, find_result::root_node_is_null_failure});
return;
}
unsigned prefix_index = 0;
Expand All @@ -304,21 +304,21 @@ void find_owning_notify_fiber_future(
++node_prefix_index, ++prefix_index) {
if (prefix_index >= key.nibble_size()) {
promise.set_value(
{CacheNodeCursor{node, node_prefix_index},
{NodeCursor{node, node_prefix_index},
find_result::key_ends_earlier_than_node_failure});
return;
}
if (key.get(prefix_index) !=
node->path_nibble_view().get(node_prefix_index)) {
promise.set_value(
{CacheNodeCursor{node, node_prefix_index},
{NodeCursor{node, node_prefix_index},
find_result::key_mismatch_failure});
return;
}
}
if (prefix_index == key.nibble_size()) {
promise.set_value(
{CacheNodeCursor{node, node_prefix_index}, find_result::success});
{NodeCursor{node, node_prefix_index}, find_result::success});
return;
}
MONAD_ASSERT(prefix_index < key.nibble_size());
Expand All @@ -341,7 +341,7 @@ void find_owning_notify_fiber_future(
// find in cache
NodeCache::ConstAccessor acc;
if (node_cache.find(acc, next_virtual_offset)) {
CacheNodeCursor next_cursor{acc->second->val.first};
NodeCursor next_cursor{acc->second->val.first};
find_owning_notify_fiber_future(
aux,
node_cache,
Expand All @@ -354,10 +354,10 @@ void find_owning_notify_fiber_future(
}
auto cont =
[&aux, &node_cache, &inflights, &promise, next_key, version](
CacheNodeCursor const &node_cursor) -> result<void> {
NodeCursor const &node_cursor) -> result<void> {
if (!node_cursor.is_valid()) {
promise.set_value(
{CacheNodeCursor{}, find_result::version_no_longer_exist});
{NodeCursor{}, find_result::version_no_longer_exist});
return success();
}
find_owning_notify_fiber_future(
Expand All @@ -381,7 +381,7 @@ void find_owning_notify_fiber_future(
}
else {
promise.set_value(
{CacheNodeCursor{node, node_prefix_index},
{NodeCursor{node, node_prefix_index},
find_result::branch_not_exist_failure});
}
}
Expand All @@ -397,17 +397,17 @@ void load_root_notify_fiber_future(
if (!aux.version_is_valid_ondisk(version) ||
root_virtual_offset == INVALID_VIRTUAL_OFFSET) {
promise.set_value(
{CacheNodeCursor{}, find_result::version_no_longer_exist});
{NodeCursor{}, find_result::version_no_longer_exist});
return;
}
NodeCache::ConstAccessor acc;
if (node_cache.find(acc, root_virtual_offset)) {
auto &root = acc->second->val.first;
MONAD_ASSERT(root != nullptr);
promise.set_value({CacheNodeCursor{root}, find_result::success});
promise.set_value({NodeCursor{root}, find_result::success});
return;
}
auto cont = [&promise](CacheNodeCursor const &node_cursor) -> result<void> {
auto cont = [&promise](NodeCursor const &node_cursor) -> result<void> {
if (!node_cursor.is_valid()) {
promise.set_value(
{node_cursor, find_result::version_no_longer_exist});
Expand Down
Loading
Loading