libfoedus-core
FOEDUS Core Library
|
A system transaction to grow a second- or depper-layer root. More...
A system transaction to grow a second- or depper-layer root.
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 79 of file masstree_grow_impl.hpp.
#include <masstree_grow_impl.hpp>
Public Member Functions | |
GrowNonFirstLayerRoot (thread::Thread *context, MasstreeBorderPage *parent, uint16_t pointer_index) | |
virtual ErrorCode | run (xct::SysxctWorkspace *sysxct_workspace) override |
Execute the system transaction. More... | |
Public Attributes | |
thread::Thread *const | context_ |
Thread context. More... | |
MasstreeBorderPage *const | parent_ |
The border page of the parent layer. More... | |
const uint16_t | pointer_index_ |
Index of the pointer in parent. More... | |
|
inline |
Definition at line 91 of file masstree_grow_impl.hpp.
|
overridevirtual |
Execute the system transaction.
You should override this method.
Implements foedus::xct::SysxctFunctor.
Definition at line 167 of file masstree_grow_impl.cpp.
References ASSERT_ND, CHECK_ERROR_CODE, context_, foedus::storage::masstree::MasstreeBorderPage::does_point_to_layer(), 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_low_fence(), foedus::storage::masstree::MasstreeBorderPage::get_next_layer(), foedus::storage::masstree::MasstreeBorderPage::get_owner_id(), foedus::storage::masstree::MasstreePage::get_volatile_page_id(), foedus::storage::masstree::grow_case_a_common(), foedus::storage::masstree::grow_case_b_common(), foedus::storage::masstree::MasstreePage::header(), foedus::storage::masstree::MasstreePage::is_border(), foedus::xct::RwLockableXctId::is_keylocked(), foedus::storage::masstree::MasstreePage::is_layer_root(), foedus::storage::masstree::MasstreePage::is_locked(), foedus::storage::masstree::MasstreePage::is_moved(), foedus::storage::VolatilePagePointer::is_null(), foedus::storage::masstree::MasstreePage::is_retired(), foedus::kErrorCodeOk, parent_, pointer_index_, foedus::storage::PageHeader::snapshot_, foedus::storage::PageHeader::storage_id_, foedus::thread::Thread::sysxct_page_lock(), foedus::thread::Thread::sysxct_record_lock(), and foedus::storage::DualPagePointer::volatile_pointer_.
thread::Thread* const foedus::storage::masstree::GrowNonFirstLayerRoot::context_ |
MasstreeBorderPage* const foedus::storage::masstree::GrowNonFirstLayerRoot::parent_ |
The border page of the parent layer.
Definition at line 85 of file masstree_grow_impl.hpp.
Referenced by run().
const uint16_t foedus::storage::masstree::GrowNonFirstLayerRoot::pointer_index_ |
Index of the pointer in parent.
Definition at line 89 of file masstree_grow_impl.hpp.
Referenced by run().