SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
Rangers.h
Go to the documentation of this file.
1 /*
2  * SWC-DB© Copyright since 2019 Alex Kashirin <kashirin.alex@gmail.com>
3  * License details at <https://github.com/kashirin-alex/swc-db/#license>
4  */
5 
6 #ifndef swcdb_manager_Rangers_h
7 #define swcdb_manager_Rangers_h
8 
9 #include "swcdb/manager/Ranger.h"
12 
13 
14 namespace SWC { namespace Manager {
15 
16 
17 
18 class Rangers final {
19  public:
20 
25 
29 
30  Rangers(const Comm::IoContextPtr& app_io);
31 
32  Rangers(const Rangers&) = delete;
33  Rangers(Rangers&&) = delete;
34  Rangers& operator=(const Rangers&) = delete;
35  Rangers& operator=(Rangers&&) = delete;
36 
37  ~Rangers() noexcept { }
38 
40  bool running() const noexcept {
41  return m_run;
42  }
43 
44  void stop(bool shuttingdown=true);
45 
46  bool empty() noexcept;
47 
48  void schedule_check(uint32_t t_ms = 10000);
49 
50  void schedule_run();
51 
52  void rgr_report(rgrid_t rgrid, int err,
53  const Comm::Protocol::Rgr::Params::Report::RspRes& rsp);
54 
55  Ranger::Ptr rgr_get(const rgrid_t rgrid);
56 
57  void rgr_get(const rgrid_t rgrid, Comm::EndPoints& endpoints);
58 
59  void rgr_get(const Ranger::Ptr& rgr, Comm::EndPoints& endpoints);
60 
61  void rgr_list(const rgrid_t rgrid, RangerList& rangers);
62 
63  rgrid_t rgr_set_id(const Comm::EndPoints& endpoints, rgrid_t opt_rgrid=0);
64 
65  bool rgr_ack_id(rgrid_t rgrid, const Comm::EndPoints& endpoints);
66 
67  rgrid_t rgr_had_id(rgrid_t rgrid, const Comm::EndPoints& endpoints);
68 
69  void rgr_shutdown(rgrid_t rgrid, const Comm::EndPoints& endpoints);
70 
71 
72  void sync();
73 
74  void update_status(const RangerList& new_rgr_status, bool sync_all);
75 
76  void range_loaded(Ranger::Ptr rgr, Range::Ptr range, int64_t revision,
77  int err, bool failure=false, bool verbose=true);
78 
79  void assign_ranges();
80 
81  bool update(const Column::Ptr& col, const DB::Schema::Ptr& schema,
82  uint64_t req_id, bool ack_required);
83 
84  void column_delete(const DB::Schema::Ptr& schema, uint64_t req_id,
85  const Core::Vector<rgrid_t>& rgrids);
86 
87  void column_compact(const Column::Ptr& col);
88 
89 
90  void need_health_check(const Column::Ptr& col);
91 
92  void health_check_finished(const ColumnHealthCheck::Ptr& chk);
93 
94  void wait_health_check(cid_t cid=DB::Schema::NO_CID);
95 
96  void print(std::ostream& out);
97 
98  private:
99 
100  void assign_ranges_run();
101 
102  void next_rgr(const Range::Ptr& range, Ranger::Ptr& rgr_set);
103 
104  void health_check_columns();
105 
106  Ranger::Ptr rgr_set(const Comm::EndPoints& endpoints, rgrid_t opt_rgrid=0);
107 
108  void changes(const RangerList& hosts, bool sync_all=false);
109 
110  void _changes(const RangerList& hosts, bool sync_all=false);
111 
112 
114 
115  Core::MutexSptd m_mutex;
116  asio::high_resolution_timer m_timer;
119 
120  Core::StateRunning m_assign;
121  Core::Atomic<int32_t> m_assignments;
122 
123  Core::MutexSptd m_mutex_columns_check;
126 
127 };
128 
129 }}
130 
131 #endif // swcdb_manager_Rangers_h
SWC::Manager::Rangers::cfg_chk_assign
const Config::Property::Value_int32_g::Ptr cfg_chk_assign
Definition: Rangers.h:23
SWC::Manager::Column
Definition: Column.h:18
RangersResources.h
SWC::Manager::Rangers::health_check_columns
void health_check_columns()
Definition: Rangers.cc:664
SWC::Manager::Rangers::column_compact
void column_compact(const Column::Ptr &col)
Definition: Rangers.cc:481
SWC::Manager::Rangers::rgr_set
Ranger::Ptr rgr_set(const Comm::EndPoints &endpoints, rgrid_t opt_rgrid=0)
Definition: Rangers.cc:699
SWC::Manager::Rangers::~Rangers
~Rangers() noexcept
Definition: Rangers.h:37
SWC::Comm::IoContextPtr
std::shared_ptr< IoContext > IoContextPtr
Definition: IoContext.h:16
SWC::Manager::Rangers::schedule_run
void schedule_run()
Definition: Rangers.cc:118
SWC::Manager::Rangers::_changes
void _changes(const RangerList &hosts, bool sync_all=false)
Definition: Rangers.cc:766
SWC::Manager::Rangers::update
bool update(const Column::Ptr &col, const DB::Schema::Ptr &schema, uint64_t req_id, bool ack_required)
Definition: Rangers.cc:442
SWC::Manager::Rangers::operator=
Rangers & operator=(Rangers &&)=delete
SWC::Manager::Rangers::rgr_had_id
rgrid_t rgr_had_id(rgrid_t rgrid, const Comm::EndPoints &endpoints)
Definition: Rangers.cc:236
SWC::Manager::Rangers::m_columns_check_ts
int64_t m_columns_check_ts
Definition: Rangers.h:125
SWC::Manager::Rangers::m_mutex_columns_check
Core::MutexSptd m_mutex_columns_check
Definition: Rangers.h:123
SWC::Manager::Rangers::need_health_check
void need_health_check(const Column::Ptr &col)
Definition: Rangers.cc:497
SWC::Manager::Rangers::operator=
Rangers & operator=(const Rangers &)=delete
SWC::Manager::Rangers::range_loaded
void range_loaded(Ranger::Ptr rgr, Range::Ptr range, int64_t revision, int err, bool failure=false, bool verbose=true)
Definition: Rangers.cc:403
SWC::Manager::ColumnHealthCheck
Definition: ColumnHealthCheck.h:20
SWC::Manager::Rangers::m_assign
Core::StateRunning m_assign
Definition: Rangers.h:120
SWC::Manager::Rangers::m_rangers
RangerList m_rangers
Definition: Rangers.h:117
SWC::Manager::Rangers::rgr_set_id
rgrid_t rgr_set_id(const Comm::EndPoints &endpoints, rgrid_t opt_rgrid=0)
Definition: Rangers.cc:201
SWC::Manager::Rangers::Rangers
Rangers(Rangers &&)=delete
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::Manager::Rangers::cfg_delay_rgr_chg
const Config::Property::Value_int32_g::Ptr cfg_delay_rgr_chg
Definition: Rangers.h:22
SWC::Manager::Rangers::changes
void changes(const RangerList &hosts, bool sync_all=false)
Definition: Rangers.cc:756
SWC::Manager::Rangers::rgr_list
void rgr_list(const rgrid_t rgrid, RangerList &rangers)
Definition: Rangers.cc:190
SWC::Manager::Rangers::rgr_ack_id
bool rgr_ack_id(rgrid_t rgrid, const Comm::EndPoints &endpoints)
Definition: Rangers.cc:206
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Manager::Rangers::m_mutex
Core::MutexSptd m_mutex
Definition: Rangers.h:115
SWC::Manager::Rangers::rgr_report
void rgr_report(rgrid_t rgrid, int err, const Comm::Protocol::Rgr::Params::Report::RspRes &rsp)
Definition: Rangers.cc:134
SWC::Manager::Rangers::stop
void stop(bool shuttingdown=true)
Definition: Rangers.cc:55
SWC::Comm::EndPoints
Core::Vector< EndPoint > EndPoints
Definition: Resolver.h:20
SWC::rgrid_t
uint64_t rgrid_t
Definition: Identifiers.h:18
SWC::Manager::Rangers::rgr_shutdown
void rgr_shutdown(rgrid_t rgrid, const Comm::EndPoints &endpoints)
Definition: Rangers.cc:252
SWC::Manager::Rangers::rgr_get
Ranger::Ptr rgr_get(const rgrid_t rgrid)
Definition: Rangers.cc:164
SWC::Manager::Rangers::sync
void sync()
Definition: Rangers.cc:277
SWC::Manager::Rangers::running
SWC_CAN_INLINE bool running() const noexcept
Definition: Rangers.h:40
SWC::Manager::Rangers::m_rangers_resources
RangersResources m_rangers_resources
Definition: Rangers.h:118
SWC::Manager::Rangers::next_rgr
void next_rgr(const Range::Ptr &range, Ranger::Ptr &rgr_set)
Definition: Rangers.cc:610
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::Manager::Rangers::cfg_rgr_failures
const Config::Property::Value_uint16_g::Ptr cfg_rgr_failures
Definition: Rangers.h:21
SWC::Core::Vector< Ranger::Ptr >
SWC::Manager::Rangers::schedule_check
void schedule_check(uint32_t t_ms=10000)
Definition: Rangers.cc:90
SWC::Manager::Rangers::cfg_column_health_chkers
const Config::Property::Value_int32_g::Ptr cfg_column_health_chkers
Definition: Rangers.h:27
SWC::Manager::Rangers::cfg_column_health_chk
const Config::Property::Value_int32_g::Ptr cfg_column_health_chk
Definition: Rangers.h:26
SWC::Manager::Rangers::m_run
Core::AtomicBool m_run
Definition: Rangers.h:113
SWC::Manager::Rangers::assign_ranges
void assign_ranges()
Definition: Rangers.cc:544
SWC::Manager::Rangers::print
void print(std::ostream &out)
Definition: Rangers.cc:537
SWC::Manager::Rangers::assign_ranges_run
void assign_ranges_run()
Definition: Rangers.cc:559
SWC::Config::Property::Value_uint16_g
Definition: Property.h:548
SWC::Manager::Rangers::m_columns_check
ColumnHealthChecks m_columns_check
Definition: Rangers.h:124
SWC::Manager::Rangers::cfg_column_health_chkers_delay
const Config::Property::Value_int32_g::Ptr cfg_column_health_chkers_delay
Definition: Rangers.h:28
Ranger.h
SWC::Manager::Rangers::wait_health_check
void wait_health_check(cid_t cid=DB::Schema::NO_CID)
Definition: Rangers.cc:521
SWC::Manager::Rangers::Rangers
Rangers(const Rangers &)=delete
SWC::Manager::Rangers
Definition: Rangers.h:18
SWC::Manager::Rangers::m_assignments
Core::Atomic< int32_t > m_assignments
Definition: Rangers.h:121
SWC::Manager::Rangers::health_check_finished
void health_check_finished(const ColumnHealthCheck::Ptr &chk)
Definition: Rangers.cc:510
SWC::Manager::RangersResources
Definition: RangersResources.h:49
SWC::Manager::Ranger
Definition: Ranger.h:17
SWC::Manager::Rangers::column_delete
void column_delete(const DB::Schema::Ptr &schema, uint64_t req_id, const Core::Vector< rgrid_t > &rgrids)
Definition: Rangers.cc:467
SWC::Manager::Rangers::empty
bool empty() noexcept
Definition: Rangers.cc:85
SWC::Manager::Rangers::m_timer
asio::high_resolution_timer m_timer
Definition: Rangers.h:116
SWC::Manager::Range
Definition: Range.h:21
SWC::Manager::Rangers::update_status
void update_status(const RangerList &new_rgr_status, bool sync_all)
Definition: Rangers.cc:281
ColumnHealthCheck.h
SWC::Manager::Rangers::Rangers
Rangers(const Comm::IoContextPtr &app_io)
Definition: Rangers.cc:25
SWC::Config::Property::Value_int32_g
Definition: Property.h:586
SWC::Manager::Rangers::cfg_assign_due
const Config::Property::Value_int32_g::Ptr cfg_assign_due
Definition: Rangers.h:24
SWC::Core::AtomicBool
AtomicBase< bool > AtomicBool
Definition: Atomic.h:63