libfoedus-core
FOEDUS Core Library
|
A system transaction to grow a first-layer root. More...
A system transaction to grow a first-layer root.
The root page of a first-layer in masstree is a bit special. We thus have a separate sysxct.
This does nothing and returns kErrorCodeOk in the following cases:
Grow is a non-mandatory operation. We can delay it.
Locks taken in this sysxct:
Definition at line 49 of file masstree_grow_impl.hpp.
#include <masstree_grow_impl.hpp>
Public Member Functions | |
GrowFirstLayerRoot (thread::Thread *context, StorageId storage_id) | |
virtual ErrorCode | run (xct::SysxctWorkspace *sysxct_workspace) override |
Execute the system transaction. More... | |
Public Attributes | |
thread::Thread *const | context_ |
Thread context. More... | |
StorageId | storage_id_ |
ID of the masstree storage to grow. More... | |
|
inline |
Definition at line 55 of file masstree_grow_impl.hpp.
|
overridevirtual |
Execute the system transaction.
You should override this method.
Implements foedus::xct::SysxctFunctor.
Definition at line 119 of file masstree_grow_impl.cpp.
References ASSERT_ND, CHECK_ERROR_CODE, context_, foedus::Attachable< CONTROL_BLOCK >::get_control_block(), foedus::thread::Thread::get_engine(), foedus::storage::masstree::MasstreePage::get_foster_fence(), foedus::thread::Thread::get_global_volatile_page_resolver(), foedus::storage::masstree::MasstreePage::get_high_fence(), foedus::storage::masstree::MasstreePage::get_layer(), foedus::storage::masstree::MasstreePage::get_low_fence(), foedus::storage::masstree::grow_case_a_common(), foedus::storage::masstree::grow_case_b_common(), foedus::storage::masstree::MasstreePage::is_layer_root(), foedus::storage::masstree::MasstreePage::is_locked(), foedus::assorted::DumbSpinlock::is_locked_by_me(), foedus::storage::masstree::MasstreePage::is_moved(), foedus::storage::VolatilePagePointer::is_null(), foedus::storage::masstree::MasstreePage::is_retired(), foedus::kErrorCodeOk, storage_id_, foedus::thread::Thread::sysxct_page_lock(), foedus::assorted::DumbSpinlock::try_lock(), and foedus::storage::DualPagePointer::volatile_pointer_.
thread::Thread* const foedus::storage::masstree::GrowFirstLayerRoot::context_ |
StorageId foedus::storage::masstree::GrowFirstLayerRoot::storage_id_ |
ID of the masstree storage to grow.
Definition at line 53 of file masstree_grow_impl.hpp.
Referenced by run().