libfoedus-core
FOEDUS Core Library
|
Composer for a hash storage. More...
Composer for a hash storage.
Composer for hash is much easier than for B-trees, but somewhat trickier than array. Unlike B-trees, we don't have to worry about page-splits, finding where to insert, etc etc. We re-construct each hash bin always as a whole. Huuuuge simplification. Unlike array, we have a quite granular partitioning, so constructing intermediate pages is trickier. We do 2-path construction to parallelize this part without losing partitioning benefit.
The format is exactly same as HashIntermediatePage, but typedef-ed for clarity. The only differences are:
Definition at line 62 of file hash_composer_impl.hpp.
#include <hash_composer_impl.hpp>
Public Member Functions | |
HashComposer (Composer *parent) | |
HashComposer methods. More... | |
std::string | to_string () const |
ErrorStack | compose (const Composer::ComposeArguments &args) |
ErrorStack | construct_root (const Composer::ConstructRootArguments &args) |
Composer::DropResult | drop_volatiles (const Composer::DropVolatilesArguments &args) |
drop_volatiles and related methods More... | |
void | drop_root_volatile (const Composer::DropVolatilesArguments &args) |
Static Public Member Functions | |
static void | launch_construct_root_multi_level (HashComposer *pointer, const Composer::ConstructRootArguments *args, uint16_t numa_node, HashIntermediatePage *root_page, ErrorStack *out_error) |
launched on its own thread. More... | |
|
explicit |
HashComposer methods.
Definition at line 89 of file hash_composer_impl.cpp.
References ASSERT_ND, and foedus::storage::Storage< CONTROL_BLOCK >::exists().
ErrorStack foedus::storage::hash::HashComposer::compose | ( | const Composer::ComposeArguments & | args | ) |
Definition at line 97 of file hash_composer_impl.cpp.
References foedus::storage::Composer::ComposeArguments::base_epoch_, CHECK_ERROR, foedus::debugging::StopWatch::elapsed_ms(), foedus::DefaultInitializable::initialize(), foedus::storage::hash::kHashMaxLevels, foedus::storage::kHashStorage, foedus::kRetOk, foedus::storage::Composer::ComposeArguments::log_streams_, foedus::storage::Composer::ComposeArguments::log_streams_count_, foedus::storage::Composer::ComposeArguments::previous_snapshot_files_, foedus::storage::Composer::ComposeArguments::root_info_page_, foedus::storage::Composer::ComposeArguments::snapshot_writer_, foedus::debugging::StopWatch::stop(), to_string(), foedus::DefaultInitializable::uninitialize(), and foedus::storage::Composer::ComposeArguments::work_memory_.
Referenced by foedus::storage::Composer::compose().
ErrorStack foedus::storage::hash::HashComposer::construct_root | ( | const Composer::ConstructRootArguments & | args | ) |
Definition at line 126 of file hash_composer_impl.cpp.
References ASSERT_ND, CHECK_ERROR, foedus::snapshot::SnapshotWriter::dump_pages(), foedus::memory::AlignedMemory::get_block(), foedus::Attachable< CONTROL_BLOCK >::get_control_block(), foedus::storage::hash::HashIntermediatePage::get_level(), foedus::storage::hash::HashStorage::get_levels(), foedus::storage::Storage< CONTROL_BLOCK >::get_metadata(), foedus::snapshot::SnapshotWriter::get_next_page_id(), foedus::snapshot::SnapshotWriter::get_page_base(), foedus::Engine::get_soc_count(), foedus::storage::Composer::ConstructRootArguments::gleaner_resource_, foedus::storage::hash::HashIntermediatePage::header(), foedus::storage::hash::HashIntermediatePage::initialize_snapshot_page(), foedus::storage::kPageSize, foedus::kRetOk, launch_construct_root_multi_level(), foedus::storage::Composer::ConstructRootArguments::new_root_page_pointer_, foedus::storage::PageHeader::page_id_, foedus::storage::Composer::ConstructRootArguments::previous_snapshot_files_, foedus::cache::SnapshotFileSet::read_page(), foedus::storage::Metadata::root_snapshot_page_id_, foedus::storage::Composer::ConstructRootArguments::snapshot_writer_, foedus::storage::PageHeader::storage_id_, foedus::snapshot::LogGleanerResource::tmp_root_page_memory_, to_string(), and WRAP_ERROR_CODE.
Referenced by foedus::storage::Composer::construct_root().
void foedus::storage::hash::HashComposer::drop_root_volatile | ( | const Composer::DropVolatilesArguments & | args | ) |
Definition at line 1223 of file hash_composer_impl.cpp.
References foedus::Attachable< CONTROL_BLOCK >::get_control_block(), foedus::storage::hash::HashStorage::get_hash_metadata(), foedus::storage::hash::HashStorage::get_levels(), foedus::storage::Storage< CONTROL_BLOCK >::get_name(), foedus::storage::Metadata::keeps_all_volatile_pages(), and foedus::storage::DualPagePointer::volatile_pointer_.
Referenced by foedus::storage::Composer::drop_root_volatile().
Composer::DropResult foedus::storage::hash::HashComposer::drop_volatiles | ( | const Composer::DropVolatilesArguments & | args | ) |
drop_volatiles and related methods
Definition at line 1165 of file hash_composer_impl.cpp.
References ASSERT_ND, foedus::storage::Composer::DropResult::dropped_all_, foedus::storage::extract_numa_node_from_snapshot_pointer(), foedus::Attachable< CONTROL_BLOCK >::get_control_block(), foedus::storage::hash::HashStorage::get_hash_metadata(), foedus::storage::hash::HashIntermediatePage::get_level(), foedus::storage::hash::HashStorage::get_levels(), foedus::storage::Storage< CONTROL_BLOCK >::get_name(), foedus::storage::hash::HashIntermediatePage::get_pointer(), foedus::storage::hash::HashStorage::get_root_children(), foedus::storage::VolatilePagePointer::is_null(), foedus::storage::Metadata::keeps_all_volatile_pages(), foedus::storage::Composer::DropVolatilesArguments::my_partition_, foedus::storage::Composer::DropVolatilesArguments::partitioned_drop_, foedus::storage::DualPagePointer::snapshot_pointer_, and foedus::storage::DualPagePointer::volatile_pointer_.
Referenced by foedus::storage::Composer::drop_volatiles().
|
inlinestatic |
launched on its own thread.
Definition at line 76 of file hash_composer_impl.hpp.
Referenced by construct_root().
std::string foedus::storage::hash::HashComposer::to_string | ( | ) | const |
Definition at line 427 of file hash_composer_impl.cpp.
Referenced by compose(), and construct_root().