SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
Committer.cc
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 
13 
14 
15 namespace SWC { namespace client { namespace Query { namespace Update {
16 
17 
18 
19 #define SWC_LOCATOR_REQ_DEBUG(msg) \
20  SWC_LOG_OUT(LOG_DEBUG, params.print(SWC_LOG_OSTREAM << msg << ' '); );
21 
22 #define SWC_LOCATOR_RSP_DEBUG(msg) \
23  SWC_LOG_OUT(LOG_DEBUG, \
24  print(SWC_LOG_OSTREAM << msg << ' '); \
25  rsp.print(SWC_LOG_OSTREAM << ' '); \
26  );
27 
28 
29 
31  const cid_t a_cid,
32  Handlers::Base::Column* a_colp,
33  const DB::Cell::Key::Ptr& a_key_start,
34  const Handlers::Base::Ptr& a_hdlr,
35  const ReqBase::Ptr& a_parent,
36  const rid_t a_rid) noexcept
37  : type(a_type),
38  master_cid(DB::Types::SystemColumn::get_master_cid(a_colp->get_sequence())),
39  workload(0),
40  cid(a_cid), colp(a_colp),
41  key_start(a_key_start),
42  hdlr(a_hdlr), parent(a_parent), rid(a_rid), key_finish() {
43 }
44 
46  const cid_t a_cid,
47  Handlers::Base::Column* a_colp,
48  const DB::Cell::Key::Ptr& a_key_start,
49  const Handlers::Base::Ptr& a_hdlr,
50  const ReqBase::Ptr& a_parent,
51  const rid_t a_rid,
52  const DB::Cell::Key& a_key_finish)
53  : type(a_type),
54  master_cid(DB::Types::SystemColumn::get_master_cid(a_colp->get_sequence())),
55  workload(0),
56  cid(a_cid), colp(a_colp),
57  key_start(a_key_start),
58  hdlr(a_hdlr), parent(a_parent), rid(a_rid), key_finish(a_key_finish) {
59 }
60 
61 Committer::~Committer() noexcept { }
62 
63 void Committer::print(std::ostream& out) {
64  out << "Committer(type=" << DB::Types::to_string(type)
65  << " cid=" << cid << " rid=" << rid
66  << " completion=" << hdlr->completion.count();
67  key_start->print(out << " Start");
68  key_finish.print(out << " Finish");
69  colp->print(out << ' ');
70  out << ')';
71 }
72 
73 
74 struct ReqDataBase {
77  ReqDataBase(const Committer::Ptr& a_committer) noexcept
78  : committer(a_committer) { }
80  ~ReqDataBase() noexcept { }
83  return committer->hdlr->clients;
84  }
86  bool valid() {
87  return committer->hdlr->valid();
88  }
89 };
90 
91 
93  hdlr->completion.increment();
94  if(!hdlr->valid())
95  return hdlr->response();
96 
97  Profiling::Component::Start profile(hdlr->profile.mngr_locate());
98 
100  params.range_begin.copy(*key_start.get());
102  params.range_begin.insert(0, std::to_string(cid));
104  params.range_begin.insert(
106 
107  SWC_LOCATOR_REQ_DEBUG("mngr_locate_master");
108  struct ReqData : ReqDataBase {
111  ReqData(const Ptr& a_committer,
112  Profiling::Component::Start& a_profile) noexcept
113  : ReqDataBase(a_committer), profile(a_profile) { }
115  ~ReqData() noexcept { }
117  void callback(const ReqBase::Ptr& req,
119  profile.add(rsp.err || !rsp.rid);
120  committer->located_on_manager(req, rsp);
121  };
122  };
123 
125  ::make(params, 10000, shared_from_this(), profile);
126 
128  rid_t master_rid;
129  DB::Cell::Key key_end;
130  Comm::EndPoints master_rgr_endpoints;
131  int64_t master_mngr_revision;
132 
133  if(hdlr->clients->mngr_cache_get_write_master(
134  master_cid, params.range_begin,
135  master_rid, key_end, master_rgr_endpoints, master_mngr_revision)) {
136  profile.add_cached(Error::OK);
139  << "mngr_located_master Cache hit revision=" << master_mngr_revision
140  << " Ranger(cid=" << master_cid << " rid=" << master_rid
141  << " endpoints=[";
142  for(auto& endpoint : master_rgr_endpoints)
143  SWC_LOG_OSTREAM << endpoint << ',';
144  SWC_LOG_OSTREAM << "])";
145  );
146  Ptr(new Committer(
147  DB::Types::Range::MASTER,
149  hdlr, req,
150  master_rid
151  ))->locate_on_ranger(
152  std::move(master_rgr_endpoints), master_mngr_revision);
153 
154  if(key_end.count > 2) {
155  key_end.remove(0); // master-cid
156  key_end.remove(0); // meta-cid
157  auto next_key_start = colp->get_key_next(key_end);
158  if(next_key_start) {
159  Ptr(new Committer(
160  DB::Types::Range::MASTER,
161  colp->get_cid(), colp, next_key_start,
162  hdlr
163  ))->locate_on_manager();
164  }
165  }
166  return hdlr->response();
167  }
168  }
169 
170  req->run();
171 }
172 
173 
175  const ReqBase::Ptr& base,
177  if(!hdlr->valid())
178  return hdlr->response();
179  switch(rsp.err) {
180  case Error::OK:
181  break;
183  SWC_LOCATOR_RSP_DEBUG("mngr_located_master");
184  if(cid == colp->get_cid())
185  hdlr->error(cid, rsp.err);
186  return hdlr->response(rsp.err);
187  }
188  case Error::CLIENT_STOPPING: {
189  SWC_LOCATOR_RSP_DEBUG("mngr_located_master STOPPED");
190  hdlr->error(rsp.err);
191  return hdlr->response(rsp.err);
192  }
193  default: {
194  SWC_LOCATOR_RSP_DEBUG("mngr_located_master RETRYING");
195  return base->request_again();
196  }
197  }
198  if(!rsp.rid) {
199  SWC_LOCATOR_RSP_DEBUG("mngr_located_master RETRYING(no-rid)");
200  return base->request_again();
201  }
202 
203  SWC_LOCATOR_RSP_DEBUG("mngr_located_master");
204 
205  hdlr->clients->mngr_cache_set_master(
206  master_cid, rsp.rid,
207  rsp.range_begin, rsp.range_end,
208  rsp.endpoints, rsp.revision
209  );
210 
211  Ptr committer(new Committer(
212  DB::Types::Range::MASTER,
214  hdlr, base,
215  rsp.rid
216  ));
218  ? committer->commit_data(std::move(rsp.endpoints), base)
219  : committer->locate_on_ranger(std::move(rsp.endpoints), rsp.revision);
220 
221  if(rsp.range_end.count > 2) {
222  DB::Cell::Key key(rsp.range_end);
223  key.remove(0); // master-cid
224  key.remove(0); // meta-cid
225  auto next_key_start = colp->get_key_next(key);
226  if(next_key_start) {
227  Ptr(new Committer(
228  DB::Types::Range::MASTER,
229  colp->get_cid(), colp, next_key_start,
230  hdlr
231  ))->locate_on_manager();
232  }
233  }
234  hdlr->response();
235 }
236 
238  int64_t revision) {
239  hdlr->completion.increment();
240  if(!hdlr->valid())
241  return hdlr->response();
242 
245  if(revision) {
246  params.revision = revision;
247  params.flags |=
249  }
250 
251  params.range_begin.copy(*key_start.get());
254  if(type == DB::Types::Range::MASTER &&
256  params.range_begin.insert(
258  }
259 
260  SWC_LOCATOR_REQ_DEBUG("locate_on_ranger");
261  struct ReqData : ReqDataBase {
263  const Comm::EndPoints endpoints;
265  ReqData(const Ptr& a_committer, Comm::EndPoints& a_endpoints,
266  DB::Types::Range type) noexcept
267  : ReqDataBase(a_committer),
268  profile(committer->hdlr->profile.rgr_locate(type)),
269  endpoints(std::move(a_endpoints)) { }
271  ~ReqData() noexcept { }
273  void callback(const ReqBase::Ptr& req,
275  profile.add(!rsp.rid || rsp.err);
276  committer->located_on_ranger(endpoints, req, rsp);
277  }
278  };
279 
281  ::make(params, 10000, shared_from_this(), std::move(endpoints), type);
282  req->request(req, req->data.endpoints);
283 }
284 
286  const Comm::EndPoints& endpoints,
287  const ReqBase::Ptr& base,
289  if(!hdlr->valid())
290  return hdlr->response();
291  switch(rsp.err) {
292  case Error::OK:
293  break;
298  SWC_LOCATOR_RSP_DEBUG("rgr_located RETRYING");
299  cid == master_cid
300  ? hdlr->clients->mngr_cache_remove_master(cid, rid)
301  : hdlr->clients->rgr_cache_remove(cid, rid);
302  return parent->request_again();
303  }
304  default: {
305  SWC_LOCATOR_RSP_DEBUG("rgr_located RETRYING");
306  if(rsp.err != Error::REQUEST_TIMEOUT) {
307  cid == master_cid
308  ? hdlr->clients->mngr_cache_remove_master(cid, rid)
309  : hdlr->clients->rgr_cache_remove(cid, rid);
310  }
311  return base->request_again();
312  }
313  }
314  if(!rsp.rid) {
315  SWC_LOCATOR_RSP_DEBUG("rgr_located RETRYING(no-rid)");
316  return base->request_again();
317  }
318 
319  SWC_LOCATOR_RSP_DEBUG("rgr_located");
320 
321  Ptr(new Committer(
322  type == DB::Types::Range::MASTER
323  ? DB::Types::Range::META
325  rsp.cid, colp, key_start,
326  hdlr, base,
327  rsp.rid, rsp.range_end
328  ))->resolve_on_manager();
329 
330  if(!rsp.range_end.empty()) {
331  auto next_key_start = colp->get_key_next(rsp.range_end);
332  if(next_key_start) {
333  Ptr(new Committer(
334  type,
335  cid, colp, next_key_start,
336  hdlr, base,
337  rid
338  ))->locate_on_ranger(Comm::EndPoints(endpoints));
339  }
340  }
341  hdlr->response();
342 }
343 
345  hdlr->completion.increment();
346  if(!hdlr->valid())
347  return hdlr->response();
348 
349  struct ReqData : ReqDataBase {
352  ReqData(const Ptr& a_committer) noexcept
353  : ReqDataBase(a_committer),
354  profile(committer->hdlr->profile.mngr_res()) { }
356  ~ReqData() noexcept { }
358  void callback(const ReqBase::Ptr& req,
360  profile.add(rsp.err || !rsp.rid || rsp.endpoints.empty());
361  committer->located_ranger(req, rsp);
362  };
363  };
364 
367  ::make(params, 10000, shared_from_this());
368 
370  auto profile = hdlr->profile.mngr_res();
372  if(hdlr->clients->rgr_cache_get(cid, rid, rsp.endpoints)) {
373  profile.add_cached(Error::OK);
374  SWC_LOCATOR_RSP_DEBUG("mngr_resolve_rgr Cache hit");
375  return proceed_on_ranger(req, rsp);
376  }
377  }
378  SWC_LOCATOR_REQ_DEBUG("mngr_resolve_rgr");
379  req->run();
380 }
381 
383  const ReqBase::Ptr& base,
385  if(!hdlr->valid())
386  return hdlr->response();
387  switch(rsp.err) {
388  case Error::OK:
389  break;
391  SWC_LOCATOR_RSP_DEBUG("rgr_located");
392  if(cid == colp->get_cid()) {
393  hdlr->clients->schemas.remove(cid);
394  hdlr->error(cid, rsp.err);
395  }
396  return hdlr->response(rsp.err);
397  }
398  case Error::CLIENT_STOPPING: {
399  SWC_LOCATOR_RSP_DEBUG("rgr_located STOPPED");
400  hdlr->error(rsp.err);
401  return hdlr->response(rsp.err);
402  }
403  default: {
404  SWC_LOCATOR_RSP_DEBUG("rgr_located RETRYING");
405  return (parent && rsp.err == Error::RANGE_NOT_FOUND
406  ? parent : base)->request_again();
407  }
408  }
409  if(!rsp.rid || rsp.endpoints.empty()) {
410  SWC_LOCATOR_RSP_DEBUG("rgr_located RETRYING(no-rid)");
411  return (parent ? parent : base)->request_again();
412  }
413 
414  SWC_LOCATOR_RSP_DEBUG("rgr_located");
415 
417  hdlr->clients->rgr_cache_set(rsp.cid, rsp.rid, rsp.endpoints);
418 
419  proceed_on_ranger(base, rsp);
420 }
421 
423  const ReqBase::Ptr& base,
425  if(!hdlr->valid())
426  return hdlr->response();
427  switch(type) {
428  case DB::Types::Range::MASTER: {
430  goto do_next_locate;
431  break;
432  }
433  case DB::Types::Range::META: {
435  goto do_next_locate;
436  break;
437  }
438  case DB::Types::Range::DATA: {
439  break;
440  }
441  }
442 
443  if(cid != rsp.cid || colp->get_cid() != cid) {
444  hdlr->clients->rgr_cache_remove(cid, rid);
445  SWC_LOCATOR_RSP_DEBUG("rgr_located RETRYING(cid no match)");
446  return (parent ? parent : base)->request_again();
447  }
448  commit_data(rsp.endpoints, base);
449  return hdlr->response();
450 
451  do_next_locate: {
452  Ptr(
454  ? new Committer(
455  type,
456  rsp.cid, colp, key_start,
457  hdlr, base,
458  rsp.rid, rsp.range_end)
459  : new Committer(
460  type,
461  rsp.cid, colp, key_start,
462  hdlr, base,
463  rsp.rid)
464  )->locate_on_ranger(std::move(rsp.endpoints));
465  return hdlr->response();
466  }
467 }
468 
470  const Comm::EndPoints& endpoints,
471  const ReqBase::Ptr& base) {
472  hdlr->completion.increment();
473 
474  struct ReqData : ReqDataBase {
476  DynamicBuffer cells_buff;
477  ReqBase::Ptr base;
479  ReqData(const Ptr& a_committer,
480  DynamicBuffer& a_cells_buff,
481  const ReqBase::Ptr& a_base) noexcept
482  : ReqDataBase(a_committer),
483  profile(committer->hdlr->profile.rgr_data()),
484  cells_buff(std::move(a_cells_buff)), base(a_base) {
485  }
487  ~ReqData() noexcept { }
489  void callback(
490  const ReqBase::Ptr& req,
492  profile.add(rsp.err);
493  committer->committed_data(cells_buff, base, req, rsp);
494  }
495  };
496 
497  bool more = true;
498  DynamicBuffer cells_buff;
500 
501  while(more && hdlr->valid() &&
502  colp->get_buff(
503  *key_start.get(), key_finish, hdlr->buff_sz, more, cells_buff)) {
505 
507  ::request(
509  colp->get_cid(), rid),
510  cells_buff,
511  hdlr->timeout + cells_buff.fill()/hdlr->timeout_ratio,
512  endpoints,
513  shared_from_this(),
514  std::move(cells_buff),
515  base
516  );
517  }
518  if(workload.is_last())
519  hdlr->response();
520 }
521 
522 
523 #define SWC_UPDATER_LOCATOR_RSP_DEBUG(msg) \
524  SWC_LOG_OUT(LOG_DEBUG, \
525  print(SWC_LOG_OSTREAM << msg << ' '); \
526  rsp.print(SWC_LOG_OSTREAM << ' '); \
527  );
528 
530  const DynamicBuffer& cells_buff,
531  const ReqBase::Ptr& base,
532  const ReqBase::Ptr& req,
534  switch(rsp.err) {
535  case Error::OK: {
536  SWC_UPDATER_LOCATOR_RSP_DEBUG("rgr_commit");
537  if(workload.is_last())
538  hdlr->response();
539  return;
540  }
541 
542  case Error::REQUEST_TIMEOUT: {
543  SWC_UPDATER_LOCATOR_RSP_DEBUG("rgr_commit RETRYING");
544  return req->request_again();
545  }
546 
549  SWC_UPDATER_LOCATOR_RSP_DEBUG("rgr_commit RETRYING");
550  size_t resend = colp->add(
551  cells_buff, rsp.range_prev_end, rsp.range_end,
553  );
554  hdlr->add_resend_count(resend);
555 
556  if(workload.is_last()) {
557  auto nxt_start = colp->get_key_next(rsp.range_end);
558  if(nxt_start) {
559  Ptr(new Committer(
560  DB::Types::Range::MASTER,
561  colp->get_cid(), colp, nxt_start,
562  hdlr
563  ))->locate_on_manager();
564  }
565  hdlr->response();
566  }
567  return;
568  }
569 
570  default: {
571  hdlr->add_resend_count(colp->add(cells_buff));
572  if(workload.is_last()) {
573  SWC_UPDATER_LOCATOR_RSP_DEBUG("rgr_commit RETRYING");
574  base->request_again();
575  }
576  return;
577  }
578  }
579 }
580 
581 #undef SWC_UPDATER_LOCATOR_RSP_DEBUG
582 
583 }}}}
SWC::Comm::Protocol::Mngr::Params::RgrGetReq
Definition: RgrGet.h:20
SWC::client::Query::Update::Committer::located_on_manager
void located_on_manager(const ReqBase::Ptr &base, Comm::Protocol::Mngr::Params::RgrGetRsp &rsp)
Definition: Committer.cc:174
SWC::Error::RGR_NOT_LOADED_RANGE
@ RGR_NOT_LOADED_RANGE
Definition: Error.h:91
SWC::client::Query::Update::Committer::hdlr
Handlers::Base::Ptr hdlr
Definition: Committer.h:45
SWC_LOG_OSTREAM
#define SWC_LOG_OSTREAM
Definition: Logger.h:44
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::cid
cid_t cid
Definition: RangeLocate.h:76
SWC::Error::REQUEST_TIMEOUT
@ REQUEST_TIMEOUT
Definition: Error.h:73
SWC::client::Query::Update::Committer::committed_data
void committed_data(const DynamicBuffer &cells_buff, const ReqBase::Ptr &base, const ReqBase::Ptr &req, const Comm::Protocol::Rgr::Params::RangeQueryUpdateRsp &rsp)
Definition: Committer.cc:529
SWC::Comm::Protocol::Mngr::Params::RgrGetRsp
Definition: RgrGet.h:53
Clients.h
SWC::Error::SERVER_SHUTTING_DOWN
@ SERVER_SHUTTING_DOWN
Definition: Error.h:84
SWC_LOG_OUT
#define SWC_LOG_OUT(pr, _code_)
Definition: Logger.h:178
SWC_LOCATOR_REQ_DEBUG
#define SWC_LOCATOR_REQ_DEBUG(msg)
Definition: Committer.cc:19
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::range_begin
DB::Cell::Key range_begin
Definition: RangeLocate.h:43
SWC::DB::Types::SystemColumn::is_meta
constexpr SWC_CAN_INLINE bool is_meta(cid_t cid) noexcept
Definition: SystemColumn.h:36
SWC::DB::Types::SystemColumn::get_meta_cid_str
const char *SWC_CONST_FUNC get_meta_cid_str(KeySeq col_seq) noexcept
Definition: SystemColumn.cc:58
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp
Definition: RangeLocate.h:59
SWC::DB::Types::SystemColumn::is_data
constexpr SWC_CAN_INLINE bool is_data(cid_t cid) noexcept
Definition: SystemColumn.h:46
SWC::client::Query::Update::Committer::Ptr
std::shared_ptr< Committer > Ptr
Definition: Committer.h:38
SWC::client::Query::Update::Handlers::Base::Ptr
std::shared_ptr< Base > Ptr
Definition: Base.h:27
SWC::client::Query::Update::Committer::rid
const rid_t rid
Definition: Committer.h:47
SWC::DB::Cell::Key::insert
SWC_CAN_INLINE void insert(uint32_t idx, const std::string &fraction)
Definition: CellKey.h:150
SWC::DB::Types::to_string
const char *SWC_CONST_FUNC to_string(Column typ) noexcept
Definition: Column.cc:38
SWC::client::Query::Update::Committer::locate_on_manager
void locate_on_manager()
Definition: Committer.cc:92
SWC::client::Clients::Ptr
ClientsPtr Ptr
Definition: Clients.h:58
SWC::Comm::Protocol::Rgr::Req::RangeLocate::make
static SWC_CAN_INLINE Ptr make(const Params::RangeLocateReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: RangeLocate.h:30
SWC::DB::Types::SystemColumn::get_master_cid
cid_t SWC_CONST_FUNC get_master_cid(KeySeq col_seq) noexcept
Definition: SystemColumn.cc:32
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::range_end
DB::Cell::Key range_end
Definition: RangeLocate.h:78
SWC::client::Query::Update::Committer::located_ranger
void located_ranger(const ReqBase::Ptr &base, Comm::Protocol::Mngr::Params::RgrGetRsp &rsp)
Definition: Committer.cc:382
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::HAVE_REVISION
static const uint8_t HAVE_REVISION
Definition: RangeLocate.h:27
SWC::Comm::Protocol::Mngr::Params::RgrGetRsp::rid
rid_t rid
Definition: RgrGet.h:80
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::rid
rid_t rid
Definition: RangeLocate.h:77
SWC::Comm::Protocol::Rgr::Params::RangeQueryUpdateRsp::cells_added
uint32_t cells_added
Definition: RangeQueryUpdate.h:65
SWC::client::Query::Update::Committer::key_finish
const DB::Cell::Key key_finish
Definition: Committer.h:48
SWC::Comm::Protocol::Mngr::Params::RgrGetRsp::range_begin
DB::Cell::Key range_begin
Definition: RgrGet.h:82
SWC::DB::Cell::Key
Definition: CellKey.h:24
SWC_LOCATOR_RSP_DEBUG
#define SWC_LOCATOR_RSP_DEBUG(msg)
Definition: Committer.cc:22
SWC::Comm::Protocol::Rgr::Params::RangeQueryUpdateRsp
Definition: RangeQueryUpdate.h:48
SWC::DB::Types::SystemColumn::is_master
constexpr SWC_CAN_INLINE bool is_master(cid_t cid) noexcept
Definition: SystemColumn.h:31
SWC::Comm::Protocol::Mngr::Req::RgrGet::make
static SWC_CAN_INLINE Ptr make(const Params::RgrGetReq &params, const uint32_t timeout, DataArgsT &&... args)
Definition: RgrGet.h:27
SWC::client::Query::Update::Committer::Committer
Committer(const DB::Types::Range type, const cid_t cid, Handlers::Base::Column *colp, const DB::Cell::Key::Ptr &key_start, const Handlers::Base::Ptr &hdlr, const ReqBase::Ptr &parent=nullptr, const rid_t rid=0) noexcept
Definition: Committer.cc:30
SWC::client::Query::Update::ReqDataBase::ReqDataBase
SWC_CAN_INLINE ReqDataBase(const Committer::Ptr &a_committer) noexcept
Definition: Committer.cc:77
SWC::DB::Cell::Key::empty
constexpr SWC_CAN_INLINE bool empty() const noexcept
Definition: CellKey.h:186
RgrGet.h
SWC::Error::OK
@ OK
Definition: Error.h:45
SWC::client::Query::Update::Committer::workload
Core::CompletionCounter< uint32_t > workload
Definition: Committer.h:41
SWC::Core::Vector::empty
constexpr SWC_CAN_INLINE bool empty() const noexcept
Definition: Vector.h:168
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC::LOG_DEBUG
@ LOG_DEBUG
Definition: Logger.h:36
RangeLocate.h
SWC::Comm::Protocol::Mngr::Params::RgrGetRsp::range_end
DB::Cell::Key range_end
Definition: RgrGet.h:81
SWC::client::Query::Update::Handlers::Base::Column::get_key_next
virtual DB::Cell::Key::Ptr get_key_next(const DB::Cell::Key &eval_key, bool start_key=false)=0
SWC::client::Query::Update::Committer
Definition: Committer.h:25
SWC::Comm::Protocol::Rgr::Params::RangeQueryUpdateRsp::range_prev_end
DB::Cell::Key range_prev_end
Definition: RangeQueryUpdate.h:66
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::client::Query::Update::ReqDataBase::committer
Committer::Ptr committer
Definition: Committer.cc:75
SWC::client::Query::Update::Committer::commit_data
void commit_data(const Comm::EndPoints &endpoints, const ReqBase::Ptr &base)
Definition: Committer.cc:469
SWC::Error::RANGE_BAD_CELLS_INPUT
@ RANGE_BAD_CELLS_INPUT
Definition: Error.h:120
SWC::Core::BufferDyn< StaticBuffer >
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq
Definition: RangeLocate.h:19
SWC::client::Query::Update::Handlers::Base::Column::get_sequence
virtual DB::Types::KeySeq get_sequence() const noexcept=0
SWC::client::Query::Update::ReqDataBase
Definition: Committer.cc:74
SWC::DB::Cell::Key::copy
void copy(const Key &other)
Definition: CellKey.h:314
SWC::client::Query::Update::Handlers::Base::Column
Definition: Base.h:30
SWC::Comm::Protocol::Mngr::Params::RgrGetReq::range_begin
DB::Cell::Key range_begin
Definition: RgrGet.h:37
SWC::client::Query::Update::Handlers::Base::Column::get_cid
virtual cid_t get_cid() const noexcept=0
SWC::DB::Types::Range::MASTER
@ MASTER
SWC::Comm::Protocol::Mngr::Params::RgrGetRsp::cid
cid_t cid
Definition: RgrGet.h:79
SWC::client::Query::Update::Handlers::Base::Column::get_buff
virtual bool get_buff(const DB::Cell::Key &key_start, const DB::Cell::Key &key_end, size_t buff_sz, bool &more, DynamicBuffer &cells_buff)=0
SWC::client::Query::Update::Committer::resolve_on_manager
void resolve_on_manager()
Definition: Committer.cc:344
SWC::Error::CLIENT_STOPPING
@ CLIENT_STOPPING
Definition: Error.h:127
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::flags
uint8_t flags
Definition: RangeLocate.h:44
SWC::client::Query::Update::Committer::master_cid
const cid_t master_cid
Definition: Committer.h:40
SWC::client::Query::Update::ReqDataBase::valid
SWC_CAN_INLINE bool valid()
Definition: Committer.cc:86
SWC::Error::COMM_NOT_CONNECTED
@ COMM_NOT_CONNECTED
Definition: Error.h:64
SWC::Comm::Protocol::Mngr::Params::RgrGetRsp::revision
int64_t revision
Definition: RgrGet.h:83
SWC::cid_t
uint64_t cid_t
Definition: Identifiers.h:16
SWC::client::Query::Update::Handlers::Base::Column::print
virtual void print(std::ostream &out)=0
SWC::Error::COLUMN_NOT_EXISTS
@ COLUMN_NOT_EXISTS
Definition: Error.h:100
SWC::client::Query::Update::Committer::~Committer
~Committer() noexcept
Definition: Committer.cc:61
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::revision
int64_t revision
Definition: RangeLocate.h:45
SWC::Core::Vector< EndPoint >
SWC::Core::BufferDyn::fill
constexpr SWC_CAN_INLINE size_t fill() const noexcept
Definition: Buffer.h:192
Committer.h
SWC::DB::Cell::Key::count
uint24_t count
Definition: CellKey.h:255
SWC::Comm::Protocol::Mngr::Params::RgrGetRsp::err
int err
Definition: RgrGet.h:78
SWC::Core::CompletionCounter::increment
constexpr SWC_CAN_INLINE void increment(CountT v=1) noexcept
Definition: CompletionCounter.h:32
SWC::client::Query::Update::ReqDataBase::get_clients
SWC_CAN_INLINE client::Clients::Ptr & get_clients() noexcept
Definition: Committer.cc:82
SWC::Comm::Protocol::Rgr::Params::RangeLocateRsp::err
int err
Definition: RangeLocate.h:75
SWC::Comm::Protocol::Rgr::Req::RangeQueryUpdate::request
static SWC_CAN_INLINE void request(const Ptr &req, const EndPoints &endpoints)
Definition: RangeQueryUpdate.h:52
SWC::Error::RANGE_NOT_FOUND
@ RANGE_NOT_FOUND
Definition: Error.h:116
SWC::client::Query::Update::Committer::cid
const cid_t cid
Definition: Committer.h:42
SWC::client::Query::Update::Committer::colp
Handlers::Base::Column * colp
Definition: Committer.h:43
SWC::rid_t
uint64_t rid_t
Definition: Identifiers.h:17
SWC::Comm::Protocol::Rgr::Params::RangeQueryUpdateReq
Definition: RangeQueryUpdate.h:18
SWC::client::Query::Update::Committer::key_start
DB::Cell::Key::Ptr key_start
Definition: Committer.h:44
SWC::Comm::Protocol::Rgr::Params::RangeLocateReq::COMMIT
static const uint8_t COMMIT
Definition: RangeLocate.h:24
SWC::client::Query::Profiling::Component::Start
Definition: Profiling.h:56
RangeQueryUpdate.h
SWC::DB::Cell::Key::print
void print(std::ostream &out) const
Definition: CellKey.cc:182
SWC::Core::CompletionCounter::is_last
constexpr SWC_CAN_INLINE bool is_last() noexcept
Definition: CompletionCounter.h:37
SWC::DB::Cell::Key::remove
void remove(uint32_t idx, bool recursive=false)
Definition: CellKey.cc:94
SWC::client::Query::Update::Committer::locate_on_ranger
void locate_on_ranger(Comm::EndPoints &&endpoints, int64_t revision=0)
Definition: Committer.cc:237
SWC::Comm::Protocol::Mngr::Params::RgrGetRsp::endpoints
EndPoints endpoints
Definition: RgrGet.h:77
SWC::client::Query::Update::Committer::parent
ReqBase::Ptr parent
Definition: Committer.h:46
SWC::Comm::client::ConnQueueReqBase::Ptr
std::shared_ptr< ConnQueueReqBase > Ptr
Definition: ClientConnQueue.h:25
SWC::Error::RANGE_BAD_INTERVAL
@ RANGE_BAD_INTERVAL
Definition: Error.h:119
SWC::DB::Cell::Key::Ptr
std::shared_ptr< Key > Ptr
Definition: CellKey.h:27
SWC::client::Query::Profiling::Component::Start::add_cached
SWC_CAN_INLINE void add_cached(bool err) const noexcept
Definition: Profiling.h:71
SWC::Comm::Protocol::Rgr::Params::RangeQueryUpdateRsp::err
int32_t err
Definition: RangeQueryUpdate.h:64
SWC::client::Query::Update::Handlers::Base::Column::add
virtual size_t add(const DynamicBuffer &cells, const DB::Cell::Key &upto_key, const DB::Cell::Key &from_key, uint32_t skip, bool malformed)=0
SWC::Core::to_string
SWC_CAN_INLINE std::string to_string(const BitFieldInt< T, SZ > &v)
Definition: BitFieldInt.h:263
SWC::DB::Types::Range
Range
Definition: Range.h:14
SWC::client::Query::Update::Committer::located_on_ranger
void located_on_ranger(const Comm::EndPoints &endpoints, const ReqBase::Ptr &base, const Comm::Protocol::Rgr::Params::RangeLocateRsp &rsp)
Definition: Committer.cc:285
SWC::client::Query::Update::Committer::print
void print(std::ostream &out)
Definition: Committer.cc:63
SWC_UPDATER_LOCATOR_RSP_DEBUG
#define SWC_UPDATER_LOCATOR_RSP_DEBUG(msg)
Definition: Committer.cc:523
SystemColumn.h
SWC::client::Query::Update::Committer::type
const DB::Types::Range type
Definition: Committer.h:39
SWC::client::Query::Profiling::Component::Start::add
SWC_CAN_INLINE void add(bool err) const noexcept
Definition: Profiling.h:66
SWC::Comm::Protocol::Rgr::Params::RangeQueryUpdateRsp::range_end
DB::Cell::Key range_end
Definition: RangeQueryUpdate.h:67
SWC::client::Query::Update::Committer::proceed_on_ranger
void proceed_on_ranger(const ReqBase::Ptr &base, Comm::Protocol::Mngr::Params::RgrGetRsp &rsp)
Definition: Committer.cc:422
SWC::client::Query::Update::ReqDataBase::~ReqDataBase
SWC_CAN_INLINE ~ReqDataBase() noexcept
Definition: Committer.cc:80