Skip to content

Commit

Permalink
fix: improve comparison about emplace back for node set
Browse files Browse the repository at this point in the history
  • Loading branch information
thawk105 committed Feb 15, 2024
1 parent 7b42827 commit 88e0862
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/concurrency_control/include/local_set.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@

#include "yakushima/include/kvs.h"

#include "database/include/logging.h"

#include "index/yakushima/include/tool.h"

#include "shirakami/scheme.h"
#include "shirakami/storage_options.h"

Expand Down Expand Up @@ -354,15 +358,16 @@ class node_set {

// early validation
auto cnvp = std::get<1>(elem)->get_stable_version();
if (cnvp != std::get<0>(elem)) {
if (!comp_ver_for_node_verify(cnvp, std::get<0>(elem))) {
// looks like phantom
// check self phantom possibility
for (auto&& elem_set : set_) {
// compare pointer
if (std::get<1>(elem_set) == std::get<1>(elem)) {
/**
* Node versions already added in a previous scan operation.
*/
if (cnvp == std::get<0>(elem_set)) {
if (comp_ver_for_node_verify(cnvp, std::get<0>(elem_set))) {
// the difference due to old self insert.
return Status::OK;
}
Expand Down
29 changes: 29 additions & 0 deletions src/index/yakushima/include/tool.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/**
* @file src/index/yakushima/include/tool.h
*/

#pragma once

#include "yakushima/include/version.h"

namespace shirakami {

/**
* @brief compare yakushima version about vinsert_delete and vsplit.
* @return true same
* @return false different
*/
static inline bool
comp_ver_for_node_verify(yakushima::node_version64_body const left,
yakushima::node_version64_body const right) {
// compare vinsert_delete
if (left.get_vinsert_delete() != right.get_vinsert_delete()) {
return false;
}
// compare vsplit
if (left.get_vsplit() != right.get_vsplit()) { return false; }
// same
return true;
}

} // namespace shirakami

0 comments on commit 88e0862

Please sign in to comment.