diff --git a/src/concurrency_control/garbage.cpp b/src/concurrency_control/garbage.cpp index 50c540a6..11f67389 100644 --- a/src/concurrency_control/garbage.cpp +++ b/src/concurrency_control/garbage.cpp @@ -11,6 +11,8 @@ #include "concurrency_control/include/wp.h" #include "database/include/logging.h" +#include "datastore/limestone/include/datastore.h" +#include "datastore/limestone/include/limestone_api_helper.h" #include "index/yakushima/include/interface.h" @@ -91,6 +93,9 @@ void work_manager() { } else { set_min_batch_epoch(epoch::get_cc_safe_ss_epoch()); } +#ifdef PWAL + switch_available_boundary_version(shirakami::datastore::get_datastore(), std::min(get_min_step_epoch(), get_min_batch_epoch())); +#endif sleepUs(epoch::get_global_epoch_time_us()); } diff --git a/src/datastore/limestone/include/limestone_api_helper.h b/src/datastore/limestone/include/limestone_api_helper.h index eb4d7a11..252ce8d3 100644 --- a/src/datastore/limestone/include/limestone_api_helper.h +++ b/src/datastore/limestone/include/limestone_api_helper.h @@ -29,6 +29,8 @@ void recover(limestone::api::datastore* ds); void switch_epoch(limestone::api::datastore* ds, epoch::epoch_t ep); +void switch_available_boundary_version(limestone::api::datastore* ds, epoch::epoch_t ep); + // log_channel void add_entry(limestone::api::log_channel* lc, diff --git a/src/datastore/limestone/limestone_api_helper.cpp b/src/datastore/limestone/limestone_api_helper.cpp index 6a56cf49..74567d07 100644 --- a/src/datastore/limestone/limestone_api_helper.cpp +++ b/src/datastore/limestone/limestone_api_helper.cpp @@ -77,6 +77,20 @@ void switch_epoch(limestone::api::datastore* ds, epoch::epoch_t ep) { shirakami_ex_log_exit << "datastore::switch_epoch()"; } +void switch_available_boundary_version(limestone::api::datastore* ds, epoch::epoch_t ep) { + if (ds == nullptr) { + LOG_FIRST_N(ERROR, 1) << log_location_prefix << "unreachable path"; + return; + } + shirakami_ex_log_entry << "datastore::switch_available_boundary_version()"; +#if 0 // link error + ds->switch_available_boundary_version(limestone::api::write_version_type(ep, 0UL)); +#else + (void)ds; (void)ep; +#endif + shirakami_ex_log_exit << "datastore::switch_available_boundary_version()"; +} + // log channel void add_entry(limestone::api::log_channel* lc,