SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
ColumnHealthCheck.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 
7 #ifndef swcdb_manager_ColumnHealthCheck_h
8 #define swcdb_manager_ColumnHealthCheck_h
9 
10 
14 
15 
16 namespace SWC { namespace Manager {
17 
18 
19 class ColumnHealthCheck final
20  : public std::enable_shared_from_this<ColumnHealthCheck> {
21  public:
22 
23  typedef std::shared_ptr<ColumnHealthCheck> Ptr;
25  const int64_t check_ts;
26  const int32_t check_intval;
28 
29 
30  class RangerCheck final
31  : public std::enable_shared_from_this<RangerCheck> {
32  public:
33 
34  typedef std::shared_ptr<RangerCheck> Ptr;
37 
39  const Ranger::Ptr& rgr);
40 
41  ~RangerCheck() noexcept;
42 
43  void add_range(const Range::Ptr& range);
44 
45  bool add_ranges(uint8_t more);
46 
47  void handle(const Range::Ptr& range, int err, uint8_t flags);
48 
49  private:
50 
51  void _add_range(const Range::Ptr& range);
52 
53  Core::MutexSptd m_mutex;
54  std::queue<Range::Ptr> m_ranges;
55  uint8_t m_checkings;
56 
57  Core::Atomic<size_t> m_success;
58  Core::Atomic<size_t> m_failures;
59  };
60 
61 
62 
63  class ColumnMerger final
64  : public std::enable_shared_from_this<ColumnMerger> {
65  public:
66 
67  typedef std::shared_ptr<ColumnMerger> Ptr;
71 
73  Core::Vector<Range::Ptr>&& ranges) noexcept;
74 
75  ~ColumnMerger() noexcept { }
76 
77  void run_master();
78 
79  void run();
80 
81  void completion();
82 
83  class RangesMerger final
84  : public std::enable_shared_from_this<RangesMerger> {
85  public:
86 
87  typedef std::shared_ptr<RangesMerger> Ptr;
89 
90  RangesMerger(const ColumnMerger::Ptr& col_merger,
91  Core::Vector<Range::Ptr>&& ranges) noexcept;
92 
93  ~RangesMerger() noexcept { }
94 
95  void run();
96 
97  void handle(const Range::Ptr& range, int err, bool empty);
98 
99  private:
101  int m_err;
104  };
105 
106  private:
109  };
110 
111 
112 
114  int64_t check_ts, uint32_t check_intval);
115 
116  ~ColumnHealthCheck() noexcept { }
117 
118  void run(bool initial=true);
119 
120  void add_mergeable(const Range::Ptr& range);
121 
122  void finishing(bool finished_range);
123 
124  private:
129 
130 };
131 
132 
134 
135 
136 }}
137 
138 #endif // swcdb_manager_ColumnHealthCheck_h
SWC::Manager::ColumnHealthCheck::ColumnHealthCheck
ColumnHealthCheck(const Column::Ptr &col, int64_t check_ts, uint32_t check_intval)
Definition: ColumnHealthCheck.cc:116
SWC::Manager::ColumnHealthCheck::RangerCheck::RangerCheck
RangerCheck(const ColumnHealthCheck::Ptr &col_checker, const Ranger::Ptr &rgr)
Definition: ColumnHealthCheck.cc:19
SWC::Manager::ColumnHealthCheck::m_checkers
Core::Vector< RangerCheck::Ptr > m_checkers
Definition: ColumnHealthCheck.h:127
SWC::Manager::ColumnHealthCheck::RangerCheck
Definition: ColumnHealthCheck.h:31
SWC::Manager::ColumnHealthCheck::finishing
void finishing(bool finished_range)
Definition: ColumnHealthCheck.cc:181
SWC::Manager::ColumnHealthCheck::ColumnMerger::RangesMerger::Ptr
std::shared_ptr< RangesMerger > Ptr
Definition: ColumnHealthCheck.h:87
CompletionCounter.h
SWC::Manager::ColumnHealthCheck::ColumnMerger::RangesMerger
Definition: ColumnHealthCheck.h:84
SWC::Manager::ColumnHealthCheck::ColumnMerger::col_checker
const ColumnHealthCheck::Ptr col_checker
Definition: ColumnHealthCheck.h:68
SWC::Manager::ColumnHealthCheck::ColumnMerger::m_ranges
Core::Vector< Range::Ptr > m_ranges
Definition: ColumnHealthCheck.h:69
SWC::Manager::ColumnHealthCheck::col
const Column::Ptr col
Definition: ColumnHealthCheck.h:24
SWC::Manager::ColumnHealthCheck::Ptr
std::shared_ptr< ColumnHealthCheck > Ptr
Definition: ColumnHealthCheck.h:23
SWC::Manager::ColumnHealthCheck::RangerCheck::m_success
Core::Atomic< size_t > m_success
Definition: ColumnHealthCheck.h:57
SWC::Manager::ColumnHealthCheck::m_check
Core::StateRunning m_check
Definition: ColumnHealthCheck.h:125
SWC::Manager::ColumnHealthCheck::m_mergeable_ranges
Core::Vector< Range::Ptr > m_mergeable_ranges
Definition: ColumnHealthCheck.h:128
SWC::Manager::ColumnHealthCheck::ColumnMerger::cells
DB::Cells::Result cells
Definition: ColumnHealthCheck.h:70
SWC::Manager::ColumnHealthCheck::RangerCheck::Ptr
std::shared_ptr< RangerCheck > Ptr
Definition: ColumnHealthCheck.h:34
SWC::Manager::Range::Ptr
std::shared_ptr< Range > Ptr
Definition: Range.h:24
SWC::Manager::ColumnHealthCheck::check_intval
const int32_t check_intval
Definition: ColumnHealthCheck.h:26
SWC::Manager::ColumnHealthCheck::RangerCheck::add_ranges
bool add_ranges(uint8_t more)
Definition: ColumnHealthCheck.cc:38
SWC::Manager::ColumnHealthCheck::RangerCheck::handle
void handle(const Range::Ptr &range, int err, uint8_t flags)
Definition: ColumnHealthCheck.cc:54
SWC::Manager::ColumnHealthCheck::ColumnMerger::RangesMerger::m_ready
Core::Vector< Range::Ptr > m_ready
Definition: ColumnHealthCheck.h:103
SWC::DB::Cells::Result
Definition: Result.h:16
SWC::Manager::ColumnHealthCheck::ColumnMerger::RangesMerger::m_mutex
Core::MutexSptd m_mutex
Definition: ColumnHealthCheck.h:100
SWC::Manager::ColumnHealthCheck::RangerCheck::m_mutex
Core::MutexSptd m_mutex
Definition: ColumnHealthCheck.h:53
SWC::Manager::ColumnHealthCheck
Definition: ColumnHealthCheck.h:20
Scanner.h
SWC::Manager::ColumnHealthCheck::RangerCheck::add_range
void add_range(const Range::Ptr &range)
Definition: ColumnHealthCheck.cc:33
SWC::Manager::ColumnHealthCheck::ColumnMerger::RangesMerger::~RangesMerger
~RangesMerger() noexcept
Definition: ColumnHealthCheck.h:93
SWC::Manager::ColumnHealthChecks
Core::Vector< ColumnHealthCheck::Ptr > ColumnHealthChecks
Definition: ColumnHealthCheck.h:133
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Manager::ColumnHealthCheck::RangerCheck::m_checkings
uint8_t m_checkings
Definition: ColumnHealthCheck.h:55
SWC::Manager::ColumnHealthCheck::completion
Core::CompletionCounter< uint64_t > completion
Definition: ColumnHealthCheck.h:27
SWC::Core::CompletionCounter< uint64_t >
SWC::Manager::Ranger::Ptr
std::shared_ptr< Ranger > Ptr
Definition: Ranger.h:21
SWC::Manager::ColumnHealthCheck::ColumnMerger::~ColumnMerger
~ColumnMerger() noexcept
Definition: ColumnHealthCheck.h:75
SWC::Manager::ColumnHealthCheck::check_ts
const int64_t check_ts
Definition: ColumnHealthCheck.h:25
SWC::Manager::ColumnHealthCheck::ColumnMerger::RangesMerger::col_merger
const ColumnMerger::Ptr col_merger
Definition: ColumnHealthCheck.h:88
SWC::Manager::ColumnHealthCheck::m_mutex
Core::MutexSptd m_mutex
Definition: ColumnHealthCheck.h:126
SWC::Core::Vector< Range::Ptr >
Committer.h
SWC::Manager::ColumnHealthCheck::RangerCheck::m_ranges
std::queue< Range::Ptr > m_ranges
Definition: ColumnHealthCheck.h:54
SWC::Manager::ColumnHealthCheck::ColumnMerger::RangesMerger::m_ranges
Core::Vector< Range::Ptr > m_ranges
Definition: ColumnHealthCheck.h:102
SWC::Manager::ColumnHealthCheck::RangerCheck::col_checker
const ColumnHealthCheck::Ptr col_checker
Definition: ColumnHealthCheck.h:35
SWC::Core::MutexSptd
Definition: MutexSptd.h:16
SWC::Core::StateRunning
Definition: StateRunning.h:16
SWC::Manager::ColumnHealthCheck::RangerCheck::_add_range
void _add_range(const Range::Ptr &range)
Definition: ColumnHealthCheck.cc:96
SWC::Manager::ColumnHealthCheck::ColumnMerger::Ptr
std::shared_ptr< ColumnMerger > Ptr
Definition: ColumnHealthCheck.h:67
SWC::Manager::ColumnHealthCheck::ColumnMerger::RangesMerger::m_err
int m_err
Definition: ColumnHealthCheck.h:101
SWC::Manager::ColumnHealthCheck::run
void run(bool initial=true)
Definition: ColumnHealthCheck.cc:129
SWC::Manager::ColumnHealthCheck::~ColumnHealthCheck
~ColumnHealthCheck() noexcept
Definition: ColumnHealthCheck.h:116
SWC::Manager::Column::Ptr
std::shared_ptr< Column > Ptr
Definition: Column.h:24
SWC::Manager::ColumnHealthCheck::add_mergeable
void add_mergeable(const Range::Ptr &range)
Definition: ColumnHealthCheck.cc:173
flags
uint8_t flags
Flags.
Definition: Header.h:55
SWC::Manager::ColumnHealthCheck::ColumnMerger::m_mutex
Core::MutexSptd m_mutex
Definition: ColumnHealthCheck.h:107
SWC::Manager::ColumnHealthCheck::RangerCheck::rgr
const Ranger::Ptr rgr
Definition: ColumnHealthCheck.h:36
SWC::Manager::Range
Definition: Range.h:21
SWC::Manager::ColumnHealthCheck::ColumnMerger::m_mergers
Core::Vector< RangesMerger::Ptr > m_mergers
Definition: ColumnHealthCheck.h:108
SWC::Manager::ColumnHealthCheck::RangerCheck::m_failures
Core::Atomic< size_t > m_failures
Definition: ColumnHealthCheck.h:58
SWC::Manager::ColumnHealthCheck::RangerCheck::~RangerCheck
~RangerCheck() noexcept
Definition: ColumnHealthCheck.cc:28
SWC::Manager::ColumnHealthCheck::ColumnMerger
Definition: ColumnHealthCheck.h:64