#include <swcdb/manager/Rangers.h>
Public Member Functions | |
Rangers (const Comm::IoContextPtr &app_io) | |
Rangers (const Rangers &)=delete | |
Rangers (Rangers &&)=delete | |
Rangers & | operator= (const Rangers &)=delete |
Rangers & | operator= (Rangers &&)=delete |
~Rangers () noexcept | |
SWC_CAN_INLINE bool | running () const noexcept |
void | stop (bool shuttingdown=true) |
bool | empty () noexcept |
void | schedule_check (uint32_t t_ms=10000) |
void | schedule_run () |
void | rgr_report (rgrid_t rgrid, int err, const Comm::Protocol::Rgr::Params::Report::RspRes &rsp) |
Ranger::Ptr | rgr_get (const rgrid_t rgrid) |
void | rgr_get (const rgrid_t rgrid, Comm::EndPoints &endpoints) |
void | rgr_get (const Ranger::Ptr &rgr, Comm::EndPoints &endpoints) |
void | rgr_list (const rgrid_t rgrid, RangerList &rangers) |
rgrid_t | rgr_set_id (const Comm::EndPoints &endpoints, rgrid_t opt_rgrid=0) |
bool | rgr_ack_id (rgrid_t rgrid, const Comm::EndPoints &endpoints) |
rgrid_t | rgr_had_id (rgrid_t rgrid, const Comm::EndPoints &endpoints) |
void | rgr_shutdown (rgrid_t rgrid, const Comm::EndPoints &endpoints) |
void | sync () |
void | update_status (const RangerList &new_rgr_status, bool sync_all) |
void | range_loaded (Ranger::Ptr rgr, Range::Ptr range, int64_t revision, int err, bool failure=false, bool verbose=true) |
void | assign_ranges () |
bool | update (const Column::Ptr &col, const DB::Schema::Ptr &schema, uint64_t req_id, bool ack_required) |
void | column_delete (const DB::Schema::Ptr &schema, uint64_t req_id, const Core::Vector< rgrid_t > &rgrids) |
void | column_compact (const Column::Ptr &col) |
void | need_health_check (const Column::Ptr &col) |
void | health_check_finished (const ColumnHealthCheck::Ptr &chk) |
void | wait_health_check (cid_t cid=DB::Schema::NO_CID) |
void | print (std::ostream &out) |
Private Member Functions | |
void | assign_ranges_run () |
void | next_rgr (const Range::Ptr &range, Ranger::Ptr &rgr_set) |
void | health_check_columns () |
Ranger::Ptr | rgr_set (const Comm::EndPoints &endpoints, rgrid_t opt_rgrid=0) |
void | changes (const RangerList &hosts, bool sync_all=false) |
void | _changes (const RangerList &hosts, bool sync_all=false) |
Private Attributes | |
Core::AtomicBool | m_run |
Core::MutexSptd | m_mutex |
asio::high_resolution_timer | m_timer |
RangerList | m_rangers |
RangersResources | m_rangers_resources |
Core::StateRunning | m_assign |
Core::Atomic< int32_t > | m_assignments |
Core::MutexSptd | m_mutex_columns_check |
ColumnHealthChecks | m_columns_check |
int64_t | m_columns_check_ts |
SWC::Manager::Rangers::Rangers | ( | const Comm::IoContextPtr & | app_io | ) |
Definition at line 25 of file Rangers.cc.
|
delete |
|
delete |
|
private |
Definition at line 766 of file Rangers.cc.
References SWC::Core::Vector< T, SizeT, GROW_SZ >::cbegin(), SWC::Core::Vector< T, SizeT, GROW_SZ >::cend(), SWC::Core::Vector< T, SizeT, GROW_SZ >::empty(), SWC::Condition::from(), SWC::LOG_DEBUG, SWC::Manager::MngrRole::req_mngr_inchain(), SWC::Env::Mngr::role(), SWC_LOG_OSTREAM, and SWC_LOG_OUT.
Referenced by changes(), and next_rgr().
void SWC::Manager::Rangers::assign_ranges | ( | ) |
Definition at line 544 of file Rangers.cc.
References assign_ranges_run(), cfg_assign_due, SWC::Config::Property::Value_int32_g::get(), m_assign, m_assignments, m_run, SWC::Env::Mngr::mngd_columns(), SWC::Env::Mngr::post(), SWC::Core::StateRunning::running(), schedule_check(), and SWC_CAN_INLINE.
Referenced by SWC::Manager::ColumnHealthCheck::ColumnMerger::RangesMerger::handle(), SWC::Manager::ColumnHealthCheck::RangerCheck::handle(), range_loaded(), SWC::Comm::Protocol::Mngr::Handler::range_unloaded(), schedule_run(), SWC::Comm::Protocol::Rgr::Req::RangeUnload::unloaded(), and SWC::Manager::MngdColumns::update_status().
|
private |
Definition at line 559 of file Rangers.cc.
References SWC::Core::Atomic< T, OrderT >::add_rslt(), cfg_assign_due, cfg_chk_assign, SWC::Env::Mngr::columns(), SWC::Core::Vector< T, SizeT, GROW_SZ >::empty(), SWC::Config::Property::Value_int32_g::get(), SWC::LOG_DEBUG, m_assign, m_assignments, m_mutex, m_rangers, m_run, next_rgr(), SWC::Error::OK, schedule_check(), SWC::Env::Mngr::schemas(), SWC::Core::StateRunning::stop(), SWC_FMT_LU, and SWC_LOGF.
Referenced by assign_ranges().
|
private |
Definition at line 756 of file Rangers.cc.
References _changes(), cfg_delay_rgr_chg, SWC::Config::Property::Value_int32_g::get(), m_mutex, SWC::Env::Mngr::mngd_columns(), and schedule_check().
Referenced by range_loaded(), rgr_ack_id(), rgr_report(), rgr_shutdown(), sync(), and update_status().
void SWC::Manager::Rangers::column_compact | ( | const Column::Ptr & | col | ) |
Definition at line 481 of file Rangers.cc.
References SWC::DB::Types::MngrRangerState::ACK, cfg_rgr_failures, SWC::Config::Property::Value_uint16_g::get(), m_mutex, and m_rangers.
Referenced by SWC::Comm::Protocol::Mngr::Handler::column_compact().
void SWC::Manager::Rangers::column_delete | ( | const DB::Schema::Ptr & | schema, |
uint64_t | req_id, | ||
const Core::Vector< rgrid_t > & | rgrids | ||
) |
Definition at line 467 of file Rangers.cc.
References m_mutex, and m_rangers.
Referenced by SWC::Manager::MngdColumns::update_status().
|
noexcept |
Definition at line 85 of file Rangers.cc.
References SWC::Core::Vector< T, SizeT, GROW_SZ >::empty(), m_mutex, and m_rangers.
|
private |
Definition at line 664 of file Rangers.cc.
References cfg_column_health_chk, cfg_column_health_chkers, cfg_column_health_chkers_delay, SWC::Env::Mngr::columns(), SWC::Core::Vector< T, SizeT, GROW_SZ >::emplace_back(), SWC::Config::Property::Value_int32_g::get(), SWC::Manager::Columns::get_need_health_check(), m_columns_check, m_columns_check_ts, m_mutex_columns_check, m_run, SWC::Env::Mngr::mngd_columns(), SWC::Time::now_ms(), operator=(), SWC::Env::Mngr::post(), schedule_check(), SWC::Core::Vector< T, SizeT, GROW_SZ >::size(), SWC_CAN_INLINE, SWC::Core::MutexSptd::try_full_lock(), and SWC::Core::MutexSptd::unlock().
Referenced by health_check_finished(), need_health_check(), and schedule_run().
void SWC::Manager::Rangers::health_check_finished | ( | const ColumnHealthCheck::Ptr & | chk | ) |
Definition at line 510 of file Rangers.cc.
References SWC::Core::Vector< T, SizeT, GROW_SZ >::cbegin(), SWC::Core::Vector< T, SizeT, GROW_SZ >::cend(), SWC::Core::Vector< T, SizeT, GROW_SZ >::erase(), health_check_columns(), m_columns_check, and m_mutex_columns_check.
Referenced by SWC::Manager::ColumnHealthCheck::ColumnMerger::completion(), SWC::Manager::ColumnHealthCheck::finishing(), SWC::Manager::ColumnHealthCheck::ColumnMerger::run(), and SWC::Manager::ColumnHealthCheck::ColumnMerger::run_master().
void SWC::Manager::Rangers::need_health_check | ( | const Column::Ptr & | col | ) |
Definition at line 497 of file Rangers.cc.
References SWC::Core::Vector< T, SizeT, GROW_SZ >::cbegin(), SWC::Core::Vector< T, SizeT, GROW_SZ >::cend(), health_check_columns(), m_columns_check, and m_mutex_columns_check.
|
private |
Definition at line 610 of file Rangers.cc.
References _changes(), SWC::DB::Types::MngrRangerState::ACK, cfg_rgr_failures, SWC::Env::Mngr::columns(), SWC::Core::Vector< T, SizeT, GROW_SZ >::empty(), SWC::DB::RgrData::endpoints, SWC::Config::Property::Value_uint16_g::get(), SWC::Comm::has_endpoint(), SWC::DB::Types::SystemColumn::is_data(), SWC::Env::Mngr::is_shuttingdown(), m_mutex, m_rangers, SWC::DB::Types::MngrRangerState::MARKED_OFFLINE, SWC::Core::Vector< T, SizeT, GROW_SZ >::push_back(), SWC::Manager::Columns::set_rgr_unassigned(), and SWC::DB::Types::MngrRangerState::SHUTTINGDOWN.
Referenced by assign_ranges_run().
void SWC::Manager::Rangers::print | ( | std::ostream & | out | ) |
Definition at line 537 of file Rangers.cc.
void SWC::Manager::Rangers::range_loaded | ( | Ranger::Ptr | rgr, |
Range::Ptr | range, | ||
int64_t | revision, | ||
int | err, | ||
bool | failure = false , |
||
bool | verbose = true |
||
) |
Definition at line 403 of file Rangers.cc.
References SWC::DB::Types::MngrRangerState::ACK, assign_ranges(), cfg_assign_due, changes(), SWC::Core::Atomic< T, OrderT >::fetch_sub(), SWC::Config::Property::Value_int32_g::get(), SWC::LOG_DEBUG, m_assignments, SWC::Error::print(), SWC::Core::Vector< T, SizeT, GROW_SZ >::push_back(), schedule_check(), SWC::Error::SERVER_SHUTTING_DOWN, SWC::DB::Types::MngrRangerState::SHUTTINGDOWN, SWC_LOG_OSTREAM, and SWC_LOG_OUT.
Referenced by SWC::Comm::Protocol::Rgr::Req::RangeLoad::loaded().
bool SWC::Manager::Rangers::rgr_ack_id | ( | rgrid_t | rgrid, |
const Comm::EndPoints & | endpoints | ||
) |
Definition at line 206 of file Rangers.cc.
References SWC::DB::Types::MngrRangerState::ACK, changes(), SWC::Comm::has_endpoint(), m_mutex, m_rangers, SWC::Core::Vector< T, SizeT, GROW_SZ >::push_back(), and schedule_check().
void SWC::Manager::Rangers::rgr_get | ( | const Ranger::Ptr & | rgr, |
Comm::EndPoints & | endpoints | ||
) |
Definition at line 185 of file Rangers.cc.
References m_mutex.
Ranger::Ptr SWC::Manager::Rangers::rgr_get | ( | const rgrid_t | rgrid | ) |
Definition at line 164 of file Rangers.cc.
References m_mutex, and m_rangers.
Referenced by SWC::Comm::Protocol::Rgr::Req::ColumnsUnload::handle(), SWC::Comm::Protocol::Mngr::Handler::rgr_get(), SWC::Manager::ColumnHealthCheck::ColumnMerger::RangesMerger::run(), and SWC::Manager::ColumnHealthCheck::run().
SWC_CAN_INLINE void SWC::Manager::Rangers::rgr_get | ( | const rgrid_t | rgrid, |
Comm::EndPoints & | endpoints | ||
) |
Definition at line 174 of file Rangers.cc.
References SWC::DB::Types::MngrRangerState::ACK, m_mutex, and m_rangers.
rgrid_t SWC::Manager::Rangers::rgr_had_id | ( | rgrid_t | rgrid, |
const Comm::EndPoints & | endpoints | ||
) |
Definition at line 236 of file Rangers.cc.
References SWC::Comm::has_endpoint(), m_mutex, m_rangers, and rgr_set_id().
void SWC::Manager::Rangers::rgr_list | ( | const rgrid_t | rgrid, |
RangerList & | rangers | ||
) |
Definition at line 190 of file Rangers.cc.
References m_mutex, m_rangers, and SWC::Core::Vector< T, SizeT, GROW_SZ >::push_back().
void SWC::Manager::Rangers::rgr_report | ( | rgrid_t | rgrid, |
int | err, | ||
const Comm::Protocol::Rgr::Params::Report::RspRes & | rsp | ||
) |
Definition at line 134 of file Rangers.cc.
References SWC::DB::Types::MngrRangerState::ACK, SWC::Manager::RangersResources::add_and_more(), cfg_rgr_failures, changes(), SWC::Manager::RangersResources::changes(), SWC::DB::Types::MngrRole::COLUMNS, SWC::Env::Mngr::columns(), SWC::Core::Vector< T, SizeT, GROW_SZ >::empty(), SWC::Manager::RangersResources::evaluate(), SWC::Config::Property::Value_uint16_g::get(), SWC::Manager::MngrRole::is_active_role(), m_mutex, m_rangers, m_rangers_resources, SWC::DB::Types::MngrRangerState::MARKED_OFFLINE, SWC::Core::Vector< T, SizeT, GROW_SZ >::push_back(), SWC::Env::Mngr::role(), and SWC::Manager::Columns::set_rgr_unassigned().
|
private |
Definition at line 699 of file Rangers.cc.
References SWC::DB::Types::MngrRangerState::ACK, SWC::Core::Vector< T, SizeT, GROW_SZ >::begin(), SWC::Core::Vector< T, SizeT, GROW_SZ >::cend(), SWC::Env::Mngr::columns(), SWC::Core::Vector< T, SizeT, GROW_SZ >::emplace_back(), SWC::Comm::equal_endpoints(), SWC::Core::Vector< T, SizeT, GROW_SZ >::erase(), SWC::Comm::has_endpoint(), m_mutex, m_rangers, and SWC::Manager::Columns::set_rgr_unassigned().
Referenced by rgr_set_id().
rgrid_t SWC::Manager::Rangers::rgr_set_id | ( | const Comm::EndPoints & | endpoints, |
rgrid_t | opt_rgrid = 0 |
||
) |
Definition at line 201 of file Rangers.cc.
References rgr_set().
Referenced by rgr_had_id().
void SWC::Manager::Rangers::rgr_shutdown | ( | rgrid_t | rgrid, |
const Comm::EndPoints & | endpoints | ||
) |
Definition at line 252 of file Rangers.cc.
References SWC::Core::Vector< T, SizeT, GROW_SZ >::cbegin(), SWC::Core::Vector< T, SizeT, GROW_SZ >::cend(), changes(), SWC::Env::Mngr::columns(), SWC::Core::Vector< T, SizeT, GROW_SZ >::erase(), SWC::Comm::has_endpoint(), m_mutex, m_rangers, SWC::Core::Vector< T, SizeT, GROW_SZ >::push_back(), SWC::DB::Types::MngrRangerState::REMOVED, schedule_check(), and SWC::Manager::Columns::set_rgr_unassigned().
|
inlinenoexcept |
Definition at line 40 of file Rangers.h.
References m_run.
Referenced by SWC::Comm::Protocol::Rgr::Req::RangeUnoadForMerge::handle(), SWC::Comm::Protocol::Rgr::Req::RangeIsLoaded::valid(), SWC::Comm::Protocol::Rgr::Req::RangeLoad::valid(), SWC::Comm::Protocol::Rgr::Req::RangeUnload::valid(), and SWC::Comm::Protocol::Rgr::Req::RangeUnoadForMerge::valid().
void SWC::Manager::Rangers::schedule_check | ( | uint32_t | t_ms = 10000 | ) |
Definition at line 90 of file Rangers.cc.
References SWC::LOG_DEBUG, m_mutex, m_run, m_timer, schedule_run(), SWC_CAN_INLINE, and SWC_LOGF.
Referenced by SWC::Manager::MngrRole::apply_role_changes(), assign_ranges(), assign_ranges_run(), SWC::Manager::MngdColumns::change_active(), changes(), health_check_columns(), range_loaded(), rgr_ack_id(), rgr_shutdown(), and schedule_run().
void SWC::Manager::Rangers::schedule_run | ( | ) |
Definition at line 118 of file Rangers.cc.
References assign_ranges(), cfg_column_health_chk, SWC::Manager::RangersResources::check(), SWC::Config::Property::Value_int32_g::get(), health_check_columns(), m_mutex, m_rangers, m_rangers_resources, SWC::Env::Mngr::mngd_columns(), SWC::DB::Types::MngrRole::RANGERS, SWC::Env::Mngr::role(), and schedule_check().
Referenced by schedule_check().
void SWC::Manager::Rangers::stop | ( | bool | shuttingdown = true | ) |
Definition at line 55 of file Rangers.cc.
References SWC::Core::Vector< T, SizeT, GROW_SZ >::cbegin(), SWC::Core::Vector< T, SizeT, GROW_SZ >::empty(), SWC::Core::Vector< T, SizeT, GROW_SZ >::erase(), SWC::Core::Vector< T, SizeT, GROW_SZ >::front(), SWC::LOG_INFO, m_assign, m_mutex, m_rangers, m_run, m_timer, SWC::Core::StateRunning::running(), SWC::Core::StateRunning::stop(), SWC::Core::AtomicBase< T, OrderT >::store(), SWC_LOG, and wait_health_check().
Referenced by SWC::Manager::MngrRole::apply_role_changes(), and SWC::Manager::MngrRole::stop().
SWC_CAN_INLINE void SWC::Manager::Rangers::sync | ( | ) |
Definition at line 277 of file Rangers.cc.
References changes(), and m_rangers.
Referenced by SWC::Manager::MngdColumns::require_sync().
bool SWC::Manager::Rangers::update | ( | const Column::Ptr & | col, |
const DB::Schema::Ptr & | schema, | ||
uint64_t | req_id, | ||
bool | ack_required | ||
) |
Definition at line 442 of file Rangers.cc.
References SWC::DB::Types::MngrRangerState::ACK, cfg_rgr_failures, SWC::Config::Property::Value_uint16_g::get(), m_mutex, and m_rangers.
Referenced by SWC::Manager::MngdColumns::update_status().
void SWC::Manager::Rangers::update_status | ( | const RangerList & | new_rgr_status, |
bool | sync_all | ||
) |
Definition at line 281 of file Rangers.cc.
References SWC::DB::Types::MngrRangerState::ACK, SWC::Manager::MngdColumns::active(), SWC::Manager::Columns::assigned(), SWC::Core::Vector< T, SizeT, GROW_SZ >::begin(), SWC::Core::Vector< T, SizeT, GROW_SZ >::cbegin(), SWC::Core::Vector< T, SizeT, GROW_SZ >::cend(), SWC::Manager::Columns::change_rgr(), changes(), SWC::Env::Mngr::columns(), SWC::Core::Vector< T, SizeT, GROW_SZ >::empty(), SWC::Comm::equal_endpoints(), SWC::Core::Vector< T, SizeT, GROW_SZ >::erase(), SWC::Manager::Columns::get_column(), SWC::Comm::has_endpoint(), SWC::Manager::MngrRole::is_active_role(), m_mutex, m_rangers, SWC::DB::Types::MngrRangerState::MARKED_OFFLINE, SWC::Env::Mngr::mngd_columns(), SWC::DB::SchemaPrimitives::NO_CID, SWC::Error::OK, SWC::Core::Vector< T, SizeT, GROW_SZ >::push_back(), SWC::DB::Types::MngrRole::RANGERS, SWC::DB::Types::MngrRangerState::REMOVED, SWC::Env::Mngr::role(), SWC::Manager::Columns::set_rgr_unassigned(), and SWC::DB::Types::MngrRangerState::SHUTTINGDOWN.
Referenced by SWC::Comm::Protocol::Mngr::Handler::RgrUpdate::operator()().
void SWC::Manager::Rangers::wait_health_check | ( | cid_t | cid = DB::Schema::NO_CID | ) |
Definition at line 521 of file Rangers.cc.
References SWC::Core::Vector< T, SizeT, GROW_SZ >::cbegin(), SWC::Core::Vector< T, SizeT, GROW_SZ >::cend(), m_columns_check, m_mutex_columns_check, and SWC::DB::SchemaPrimitives::NO_CID.
Referenced by SWC::Manager::MngdColumns::remove(), and stop().
const Config::Property::Value_int32_g::Ptr SWC::Manager::Rangers::cfg_assign_due |
Definition at line 24 of file Rangers.h.
Referenced by assign_ranges(), assign_ranges_run(), and range_loaded().
const Config::Property::Value_int32_g::Ptr SWC::Manager::Rangers::cfg_chk_assign |
Definition at line 23 of file Rangers.h.
Referenced by assign_ranges_run().
const Config::Property::Value_int32_g::Ptr SWC::Manager::Rangers::cfg_column_health_chk |
Definition at line 26 of file Rangers.h.
Referenced by health_check_columns(), and schedule_run().
const Config::Property::Value_int32_g::Ptr SWC::Manager::Rangers::cfg_column_health_chkers |
Definition at line 27 of file Rangers.h.
Referenced by health_check_columns().
const Config::Property::Value_int32_g::Ptr SWC::Manager::Rangers::cfg_column_health_chkers_delay |
Definition at line 28 of file Rangers.h.
Referenced by health_check_columns().
const Config::Property::Value_int32_g::Ptr SWC::Manager::Rangers::cfg_delay_rgr_chg |
const Config::Property::Value_uint16_g::Ptr SWC::Manager::Rangers::cfg_rgr_failures |
Definition at line 21 of file Rangers.h.
Referenced by column_compact(), next_rgr(), rgr_report(), and update().
|
private |
Definition at line 120 of file Rangers.h.
Referenced by assign_ranges(), assign_ranges_run(), and stop().
|
private |
Definition at line 121 of file Rangers.h.
Referenced by assign_ranges(), assign_ranges_run(), and range_loaded().
|
private |
Definition at line 124 of file Rangers.h.
Referenced by health_check_columns(), health_check_finished(), need_health_check(), and wait_health_check().
|
private |
Definition at line 125 of file Rangers.h.
Referenced by health_check_columns().
|
private |
Definition at line 115 of file Rangers.h.
Referenced by assign_ranges_run(), changes(), column_compact(), column_delete(), empty(), next_rgr(), print(), rgr_ack_id(), rgr_get(), rgr_had_id(), rgr_list(), rgr_report(), rgr_set(), rgr_shutdown(), schedule_check(), schedule_run(), stop(), update(), and update_status().
|
private |
Definition at line 123 of file Rangers.h.
Referenced by health_check_columns(), health_check_finished(), need_health_check(), and wait_health_check().
|
private |
Definition at line 117 of file Rangers.h.
Referenced by assign_ranges_run(), column_compact(), column_delete(), empty(), next_rgr(), print(), rgr_ack_id(), rgr_get(), rgr_had_id(), rgr_list(), rgr_report(), rgr_set(), rgr_shutdown(), schedule_run(), stop(), sync(), update(), and update_status().
|
private |
Definition at line 118 of file Rangers.h.
Referenced by rgr_report(), and schedule_run().
|
private |
Definition at line 113 of file Rangers.h.
Referenced by assign_ranges(), assign_ranges_run(), health_check_columns(), running(), schedule_check(), and stop().
|
private |
Definition at line 116 of file Rangers.h.
Referenced by schedule_check(), and stop().