15 namespace SWC {
namespace client {
namespace Query {
namespace Update {
19 #define SWC_LOCATOR_REQ_DEBUG(msg) \
20 SWC_LOG_OUT(LOG_DEBUG, params.print(SWC_LOG_OSTREAM << msg << ' '); );
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 << ' '); \
36 const rid_t a_rid) noexcept
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() {
54 master_cid(DB::Types::SystemColumn::
get_master_cid(a_colp->get_sequence())),
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) {
65 <<
" cid=" <<
cid <<
" rid=" <<
rid
66 <<
" completion=" <<
hdlr->completion.count();
93 hdlr->completion.increment();
95 return hdlr->response();
111 ReqData(
const Ptr& a_committer,
115 ~ReqData() noexcept { }
120 committer->located_on_manager(req, rsp);
125 ::make(params, 10000, shared_from_this(), profile);
131 int64_t master_mngr_revision;
133 if(
hdlr->clients->mngr_cache_get_write_master(
135 master_rid, key_end, master_rgr_endpoints, master_mngr_revision)) {
139 <<
"mngr_located_master Cache hit revision=" << master_mngr_revision
140 <<
" Ranger(cid=" <<
master_cid <<
" rid=" << master_rid
142 for(
auto& endpoint : master_rgr_endpoints)
147 DB::Types::Range::MASTER,
151 ))->locate_on_ranger(
152 std::move(master_rgr_endpoints), master_mngr_revision);
154 if(key_end.
count > 2) {
160 DB::Types::Range::MASTER,
163 ))->locate_on_manager();
166 return hdlr->response();
178 return hdlr->response();
186 return hdlr->response(rsp.
err);
191 return hdlr->response(rsp.
err);
195 return base->request_again();
200 return base->request_again();
205 hdlr->clients->mngr_cache_set_master(
212 DB::Types::Range::MASTER,
218 ? committer->commit_data(std::move(rsp.
endpoints), base)
228 DB::Types::Range::MASTER,
231 ))->locate_on_manager();
239 hdlr->completion.increment();
241 return hdlr->response();
254 if(
type == DB::Types::Range::MASTER &&
268 profile(committer->hdlr->profile.rgr_locate(
type)),
269 endpoints(std::move(a_endpoints)) { }
271 ~ReqData() noexcept { }
276 committer->located_on_ranger(endpoints, req, rsp);
281 ::make(params, 10000, shared_from_this(), std::move(endpoints),
type);
282 req->request(req, req->data.endpoints);
290 return hdlr->response();
300 ?
hdlr->clients->mngr_cache_remove_master(
cid,
rid)
302 return parent->request_again();
308 ?
hdlr->clients->mngr_cache_remove_master(
cid,
rid)
311 return base->request_again();
316 return base->request_again();
322 type == DB::Types::Range::MASTER
323 ? DB::Types::Range::META
328 ))->resolve_on_manager();
345 hdlr->completion.increment();
347 return hdlr->response();
352 ReqData(
const Ptr& a_committer) noexcept
354 profile(committer->hdlr->profile.mngr_res()) { }
356 ~ReqData() noexcept { }
361 committer->located_ranger(req, rsp);
367 ::make(params, 10000, shared_from_this());
370 auto profile =
hdlr->profile.mngr_res();
386 return hdlr->response();
393 hdlr->clients->schemas.remove(
cid);
396 return hdlr->response(rsp.
err);
401 return hdlr->response(rsp.
err);
406 ?
parent : base)->request_again();
426 return hdlr->response();
428 case DB::Types::Range::MASTER: {
433 case DB::Types::Range::META: {
449 return hdlr->response();
464 )->locate_on_ranger(std::move(rsp.
endpoints));
465 return hdlr->response();
472 hdlr->completion.increment();
479 ReqData(
const Ptr& a_committer,
483 profile(committer->hdlr->profile.rgr_data()),
484 cells_buff(std::move(a_cells_buff)), base(a_base) {
487 ~ReqData() noexcept { }
493 committer->committed_data(cells_buff, base, req, rsp);
501 while(more &&
hdlr->valid() &&
514 std::move(cells_buff),
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 << ' '); \
544 return req->request_again();
554 hdlr->add_resend_count(resend);
560 DB::Types::Range::MASTER,
563 ))->locate_on_manager();
574 base->request_again();
581 #undef SWC_UPDATER_LOCATOR_RSP_DEBUG