18 #include "DbtcProxy.hpp"
25 addRecSignal(GSN_TC_SCHVERREQ, &DbtcProxy::execTC_SCHVERREQ);
26 addRecSignal(GSN_TC_SCHVERCONF, &DbtcProxy::execTC_SCHVERCONF);
29 addRecSignal(GSN_TAB_COMMITREQ, &DbtcProxy::execTAB_COMMITREQ);
30 addRecSignal(GSN_TAB_COMMITCONF, &DbtcProxy::execTAB_COMMITCONF);
31 addRecSignal(GSN_TAB_COMMITREF, &DbtcProxy::execTAB_COMMITREF);
37 addRecSignal(GSN_TCGETOPSIZEREQ, &DbtcProxy::execTCGETOPSIZEREQ);
38 addRecSignal(GSN_TCGETOPSIZECONF, &DbtcProxy::execTCGETOPSIZECONF);
41 addRecSignal(GSN_TC_CLOPSIZEREQ, &DbtcProxy::execTC_CLOPSIZEREQ);
42 addRecSignal(GSN_TC_CLOPSIZECONF, &DbtcProxy::execTC_CLOPSIZECONF);
45 addRecSignal(GSN_GCP_NOMORETRANS, &DbtcProxy::execGCP_NOMORETRANS);
46 addRecSignal(GSN_GCP_TCFINISHED, &DbtcProxy::execGCP_TCFINISHED);
49 addRecSignal(GSN_API_FAILREQ, &DbtcProxy::execAPI_FAILREQ);
50 addRecSignal(GSN_API_FAILCONF, &DbtcProxy::execAPI_FAILCONF);
53 addRecSignal(GSN_PREP_DROP_TAB_REQ, &DbtcProxy::execPREP_DROP_TAB_REQ);
54 addRecSignal(GSN_PREP_DROP_TAB_CONF, &DbtcProxy::execPREP_DROP_TAB_CONF);
55 addRecSignal(GSN_PREP_DROP_TAB_REF, &DbtcProxy::execPREP_DROP_TAB_REF);
58 addRecSignal(GSN_DROP_TAB_REQ, &DbtcProxy::execDROP_TAB_REQ);
59 addRecSignal(GSN_DROP_TAB_CONF, &DbtcProxy::execDROP_TAB_CONF);
60 addRecSignal(GSN_DROP_TAB_REF, &DbtcProxy::execDROP_TAB_REF);
63 addRecSignal(GSN_ALTER_TAB_REQ, &DbtcProxy::execALTER_TAB_REQ);
64 addRecSignal(GSN_ALTER_TAB_CONF, &DbtcProxy::execALTER_TAB_CONF);
65 addRecSignal(GSN_ALTER_TAB_REF, &DbtcProxy::execALTER_TAB_REF);
68 addRecSignal(GSN_CREATE_INDX_IMPL_REQ, &DbtcProxy::execCREATE_INDX_IMPL_REQ);
69 addRecSignal(GSN_CREATE_INDX_IMPL_CONF,&DbtcProxy::execCREATE_INDX_IMPL_CONF);
70 addRecSignal(GSN_CREATE_INDX_IMPL_REF, &DbtcProxy::execCREATE_INDX_IMPL_REF);
73 addRecSignal(GSN_ALTER_INDX_IMPL_REQ, &DbtcProxy::execALTER_INDX_IMPL_REQ);
74 addRecSignal(GSN_ALTER_INDX_IMPL_CONF,&DbtcProxy::execALTER_INDX_IMPL_CONF);
75 addRecSignal(GSN_ALTER_INDX_IMPL_REF, &DbtcProxy::execALTER_INDX_IMPL_REF);
78 addRecSignal(GSN_DROP_INDX_IMPL_REQ, &DbtcProxy::execDROP_INDX_IMPL_REQ);
79 addRecSignal(GSN_DROP_INDX_IMPL_CONF,&DbtcProxy::execDROP_INDX_IMPL_CONF);
80 addRecSignal(GSN_DROP_INDX_IMPL_REF, &DbtcProxy::execDROP_INDX_IMPL_REF);
83 addRecSignal(GSN_TAKE_OVERTCCONF,&DbtcProxy::execTAKE_OVERTCCONF);
85 m_tc_seize_req_instance = 0;
88 DbtcProxy::~DbtcProxy()
93 DbtcProxy::newWorker(Uint32 instanceNo)
95 return new Dbtc(m_ctx, instanceNo);
101 DbtcProxy::callNDB_STTOR(
Signal* signal)
103 Ss_READ_NODES_REQ& ss = c_ss_READ_NODESREQ;
104 ndbrequire(ss.m_gsn == 0);
106 const Uint32 startPhase = signal->theData[2];
107 switch (startPhase) {
109 ss.m_gsn = GSN_NDB_STTOR;
110 sendREAD_NODESREQ(signal);
113 backNDB_STTOR(signal);
121 DbtcProxy::execTC_SCHVERREQ(
Signal* signal)
123 Ss_TC_SCHVERREQ& ss = ssSeize<Ss_TC_SCHVERREQ>(1);
134 Ss_TC_SCHVERREQ& ss = ssFind<Ss_TC_SCHVERREQ>(ssId);
138 req->senderRef = reference();
139 req->senderData = ssId;
140 sendSignal(workerRef(ss.m_worker), GSN_TC_SCHVERREQ,
141 signal, TcSchVerReq::SignalLength, JBB);
145 DbtcProxy::execTC_SCHVERCONF(
Signal* signal)
148 Uint32 ssId = conf->senderData;
149 Ss_TC_SCHVERREQ& ss = ssFind<Ss_TC_SCHVERREQ>(ssId);
150 recvCONF(signal, ss);
154 DbtcProxy::sendTC_SCHVERCONF(
Signal* signal, Uint32 ssId)
156 Ss_TC_SCHVERREQ& ss = ssFind<Ss_TC_SCHVERREQ>(ssId);
157 BlockReference dictRef = ss.m_req.senderRef;
163 conf->senderRef = reference();
164 conf->senderData = ss.m_req.senderData;
165 sendSignal(dictRef, GSN_TC_SCHVERCONF,
166 signal, TcSchVerConf::SignalLength, JBB);
168 ssRelease<Ss_TC_SCHVERREQ>(ssId);
174 DbtcProxy::execTAB_COMMITREQ(
Signal* signal)
176 Ss_TAB_COMMITREQ& ss = ssSeize<Ss_TAB_COMMITREQ>(1);
186 Ss_TAB_COMMITREQ& ss = ssFind<Ss_TAB_COMMITREQ>(ssId);
189 req->senderRef = reference();
190 req->senderData = ssId;
191 req->tableId = ss.m_req.tableId;
192 sendSignal(workerRef(ss.m_worker), GSN_TAB_COMMITREQ,
193 signal, TabCommitReq::SignalLength, JBB);
197 DbtcProxy::execTAB_COMMITCONF(
Signal* signal)
200 Uint32 ssId = conf->senderData;
201 Ss_TAB_COMMITREQ& ss = ssFind<Ss_TAB_COMMITREQ>(ssId);
202 recvCONF(signal, ss);
206 DbtcProxy::execTAB_COMMITREF(
Signal* signal)
209 Uint32 ssId = ref->senderData;
210 Ss_TAB_COMMITREQ& ss = ssFind<Ss_TAB_COMMITREQ>(ssId);
212 recvREF(signal, ss, ref->errorCode);
216 DbtcProxy::sendTAB_COMMITCONF(
Signal* signal, Uint32 ssId)
218 Ss_TAB_COMMITREQ& ss = ssFind<Ss_TAB_COMMITREQ>(ssId);
219 BlockReference dictRef = ss.m_req.senderRef;
224 if (ss.m_error == 0) {
227 conf->senderData = ss.m_req.senderData;
228 conf->nodeId = getOwnNodeId();
229 conf->tableId = ss.m_req.tableId;
230 sendSignal(dictRef, GSN_TAB_COMMITCONF,
231 signal, TabCommitConf::SignalLength, JBB);
235 ref->senderData = ss.m_req.senderData;
236 ref->nodeId = getOwnNodeId();
237 ref->tableId = ss.m_req.tableId;
238 sendSignal(dictRef, GSN_TAB_COMMITREF,
239 signal, TabCommitRef::SignalLength, JBB);
243 ssRelease<Ss_TAB_COMMITREQ>(ssId);
249 DbtcProxy::execPREP_DROP_TAB_REQ(
Signal* signal)
252 Uint32 ssId = getSsId(req);
253 Ss_PREP_DROP_TAB_REQ& ss = ssSeize<Ss_PREP_DROP_TAB_REQ>(ssId);
255 ndbrequire(signal->getLength() == PrepDropTabReq::SignalLength);
262 Ss_PREP_DROP_TAB_REQ& ss = ssFind<Ss_PREP_DROP_TAB_REQ>(ssId);
266 req->senderRef = reference();
267 req->senderData = ssId;
268 sendSignal(workerRef(ss.m_worker), GSN_PREP_DROP_TAB_REQ,
269 signal, PrepDropTabReq::SignalLength, JBB);
273 DbtcProxy::execPREP_DROP_TAB_CONF(
Signal* signal)
276 Uint32 ssId = getSsId(conf);
277 Ss_PREP_DROP_TAB_REQ& ss = ssFind<Ss_PREP_DROP_TAB_REQ>(ssId);
278 recvCONF(signal, ss);
282 DbtcProxy::execPREP_DROP_TAB_REF(
Signal* signal)
285 Uint32 ssId = getSsId(ref);
286 Ss_PREP_DROP_TAB_REQ& ss = ssFind<Ss_PREP_DROP_TAB_REQ>(ssId);
287 recvREF(signal, ss, ref->errorCode);
291 DbtcProxy::sendPREP_DROP_TAB_CONF(
Signal* signal, Uint32 ssId)
293 Ss_PREP_DROP_TAB_REQ& ss = ssFind<Ss_PREP_DROP_TAB_REQ>(ssId);
294 BlockReference dictRef = ss.m_req.senderRef;
299 if (ss.m_error == 0) {
302 conf->senderRef = reference();
303 conf->senderData = ss.m_req.senderData;
304 conf->tableId = ss.m_req.tableId;
305 sendSignal(dictRef, GSN_PREP_DROP_TAB_CONF,
306 signal, PrepDropTabConf::SignalLength, JBB);
310 ref->senderRef = reference();
311 ref->senderData = ss.m_req.senderData;
312 ref->tableId = ss.m_req.tableId;
313 ref->errorCode = ss.m_error;
314 sendSignal(dictRef, GSN_PREP_DROP_TAB_REF,
315 signal, PrepDropTabRef::SignalLength, JBB);
318 ssRelease<Ss_PREP_DROP_TAB_REQ>(ssId);
324 DbtcProxy::execDROP_TAB_REQ(
Signal* signal)
327 Uint32 ssId = getSsId(req);
328 Ss_DROP_TAB_REQ& ss = ssSeize<Ss_DROP_TAB_REQ>(ssId);
330 ndbrequire(signal->getLength() == DropTabReq::SignalLength);
337 Ss_DROP_TAB_REQ& ss = ssFind<Ss_DROP_TAB_REQ>(ssId);
341 req->senderRef = reference();
342 req->senderData = ssId;
343 sendSignal(workerRef(ss.m_worker), GSN_DROP_TAB_REQ,
344 signal, DropTabReq::SignalLength, JBB);
348 DbtcProxy::execDROP_TAB_CONF(
Signal* signal)
351 Uint32 ssId = getSsId(conf);
352 Ss_DROP_TAB_REQ& ss = ssFind<Ss_DROP_TAB_REQ>(ssId);
353 recvCONF(signal, ss);
357 DbtcProxy::execDROP_TAB_REF(
Signal* signal)
360 Uint32 ssId = getSsId(ref);
361 Ss_DROP_TAB_REQ& ss = ssFind<Ss_DROP_TAB_REQ>(ssId);
362 recvREF(signal, ss, ref->errorCode);
366 DbtcProxy::sendDROP_TAB_CONF(
Signal* signal, Uint32 ssId)
368 Ss_DROP_TAB_REQ& ss = ssFind<Ss_DROP_TAB_REQ>(ssId);
369 BlockReference dictRef = ss.m_req.senderRef;
374 if (ss.m_error == 0) {
377 conf->senderRef = reference();
378 conf->senderData = ss.m_req.senderData;
379 conf->tableId = ss.m_req.tableId;
380 sendSignal(dictRef, GSN_DROP_TAB_CONF,
381 signal, DropTabConf::SignalLength, JBB);
385 ref->senderRef = reference();
386 ref->senderData = ss.m_req.senderData;
387 ref->tableId = ss.m_req.tableId;
388 ref->errorCode = ss.m_error;
389 sendSignal(dictRef, GSN_DROP_TAB_REF,
390 signal, DropTabConf::SignalLength, JBB);
393 ssRelease<Ss_DROP_TAB_REQ>(ssId);
399 DbtcProxy::execALTER_TAB_REQ(
Signal* signal)
408 Uint32 ssId = getSsId(req);
409 Ss_ALTER_TAB_REQ& ss = ssSeize<Ss_ALTER_TAB_REQ>(ssId);
413 saveSections(ss, handle);
419 DbtcProxy::sendALTER_TAB_REQ(
Signal* signal, Uint32 ssId,
422 Ss_ALTER_TAB_REQ& ss = ssFind<Ss_ALTER_TAB_REQ>(ssId);
426 req->senderRef = reference();
427 req->senderData = ssId;
429 signal, AlterTabReq::SignalLength, JBB, handle);
433 DbtcProxy::execALTER_TAB_CONF(
Signal* signal)
436 Uint32 ssId = getSsId(conf);
437 Ss_ALTER_TAB_REQ& ss = ssFind<Ss_ALTER_TAB_REQ>(ssId);
438 recvCONF(signal, ss);
442 DbtcProxy::execALTER_TAB_REF(
Signal* signal)
445 Uint32 ssId = getSsId(ref);
446 Ss_ALTER_TAB_REQ& ss = ssFind<Ss_ALTER_TAB_REQ>(ssId);
447 recvREF(signal, ss, ref->errorCode);
451 DbtcProxy::sendALTER_TAB_CONF(
Signal* signal, Uint32 ssId)
453 Ss_ALTER_TAB_REQ& ss = ssFind<Ss_ALTER_TAB_REQ>(ssId);
454 BlockReference dictRef = ss.m_req.senderRef;
459 if (ss.m_error == 0) {
462 conf->senderRef = reference();
463 conf->senderData = ss.m_req.senderData;
464 sendSignal(dictRef, GSN_ALTER_TAB_CONF,
465 signal, AlterTabConf::SignalLength, JBB);
469 ref->senderRef = reference();
470 ref->senderData = ss.m_req.senderData;
471 ref->errorCode = ss.m_error;
472 sendSignal(dictRef, GSN_ALTER_TAB_REF,
473 signal, AlterTabConf::SignalLength, JBB);
476 ssRelease<Ss_ALTER_TAB_REQ>(ssId);
484 if (signal->getLength() >= 3 && signal->theData[2] != 0)
489 Uint32 instance = signal->theData[2];
490 if (instance >= c_workers)
493 Uint32 senderData = signal->theData[0];
494 Uint32 senderRef = signal->theData[1];
495 signal->theData[0] = senderData;
496 signal->theData[1] = 289;
497 sendSignal(senderRef, GSN_TCSEIZEREF, signal, 2, JBB);
501 sendSignal(workerRef(instance), GSN_TCSEIZEREQ, signal,
502 signal->getLength(), JBB);
506 signal->theData[2] = 1 + m_tc_seize_req_instance;
507 sendSignal(workerRef(m_tc_seize_req_instance), GSN_TCSEIZEREQ, signal,
508 signal->getLength(), JBB);
509 m_tc_seize_req_instance = (m_tc_seize_req_instance + 1) % c_workers;
515 DbtcProxy::execTCGETOPSIZEREQ(
Signal* signal)
517 Ss_TCGETOPSIZEREQ& ss = ssSeize<Ss_TCGETOPSIZEREQ>(1);
520 memcpy(ss.m_req, signal->getDataPtr(), 2*4);
527 Ss_TCGETOPSIZEREQ& ss = ssFind<Ss_TCGETOPSIZEREQ>(ssId);
529 signal->theData[0] = ssId;
530 signal->theData[1] = reference();
531 sendSignal(workerRef(ss.m_worker), GSN_TCGETOPSIZEREQ,
536 DbtcProxy::execTCGETOPSIZECONF(
Signal* signal)
538 Uint32 ssId = signal->theData[0];
539 Ss_TCGETOPSIZEREQ& ss = ssFind<Ss_TCGETOPSIZEREQ>(ssId);
540 ss.m_sum += signal->theData[1];
541 recvCONF(signal, ss);
545 DbtcProxy::sendTCGETOPSIZECONF(
Signal* signal, Uint32 ssId)
547 Ss_TCGETOPSIZEREQ& ss = ssFind<Ss_TCGETOPSIZEREQ>(ssId);
552 signal->theData[0] = ss.m_req[0];
553 signal->theData[1] = ss.m_sum;
554 sendSignal(ss.m_req[1], GSN_TCGETOPSIZECONF,
557 ssRelease<Ss_TCGETOPSIZEREQ>(ssId);
563 DbtcProxy::execTC_CLOPSIZEREQ(
Signal* signal)
565 Ss_TC_CLOPSIZEREQ& ss = ssSeize<Ss_TC_CLOPSIZEREQ>(1);
567 memcpy(ss.m_req, signal->getDataPtr(), 2*4);
574 Ss_TC_CLOPSIZEREQ& ss = ssFind<Ss_TC_CLOPSIZEREQ>(ssId);
576 signal->theData[0] = ssId;
577 signal->theData[1] = reference();
578 sendSignal(workerRef(ss.m_worker), GSN_TC_CLOPSIZEREQ,
583 DbtcProxy::execTC_CLOPSIZECONF(
Signal* signal)
585 Uint32 ssId = signal->theData[0];
586 Ss_TC_CLOPSIZEREQ& ss = ssFind<Ss_TC_CLOPSIZEREQ>(ssId);
587 recvCONF(signal, ss);
591 DbtcProxy::sendTC_CLOPSIZECONF(
Signal* signal, Uint32 ssId)
593 Ss_TC_CLOPSIZEREQ& ss = ssFind<Ss_TC_CLOPSIZEREQ>(ssId);
598 signal->theData[0] = ss.m_req[0];
599 sendSignal(ss.m_req[1], GSN_TC_CLOPSIZECONF,
602 ssRelease<Ss_TC_CLOPSIZEREQ>(ssId);
608 DbtcProxy::execGCP_NOMORETRANS(
Signal* signal)
610 Ss_GCP_NOMORETRANS& ss = ssSeize<Ss_GCP_NOMORETRANS>(1);
619 Ss_GCP_NOMORETRANS& ss = ssFind<Ss_GCP_NOMORETRANS>(ssId);
622 req->senderRef = reference();
623 req->senderData = ssId;
624 req->gci_hi = ss.m_req.gci_hi;
625 req->gci_lo = ss.m_req.gci_lo;
626 sendSignal(workerRef(ss.m_worker), GSN_GCP_NOMORETRANS,
627 signal, GCPNoMoreTrans::SignalLength, JBB);
631 DbtcProxy::execGCP_TCFINISHED(
Signal* signal)
634 Uint32 ssId = conf->senderData;
635 Ss_GCP_NOMORETRANS& ss = ssFind<Ss_GCP_NOMORETRANS>(ssId);
636 recvCONF(signal, ss);
640 DbtcProxy::sendGCP_TCFINISHED(
Signal* signal, Uint32 ssId)
642 Ss_GCP_NOMORETRANS& ss = ssFind<Ss_GCP_NOMORETRANS>(ssId);
648 conf->senderData = ss.m_req.senderData;
649 conf->gci_hi = ss.m_req.gci_hi;
650 conf->gci_lo = ss.m_req.gci_lo;
651 sendSignal(ss.m_req.senderRef, GSN_GCP_TCFINISHED,
652 signal, GCPTCFinished::SignalLength, JBB);
654 ssRelease<Ss_GCP_NOMORETRANS>(ssId);
661 DbtcProxy::execAPI_FAILREQ(
Signal* signal)
663 Uint32 nodeId = signal->theData[0];
664 Ss_API_FAILREQ& ss = ssSeize<Ss_API_FAILREQ>(nodeId);
666 ss.m_ref = signal->theData[1];
673 Ss_API_FAILREQ& ss = ssFind<Ss_API_FAILREQ>(ssId);
675 signal->theData[0] = ssId;
676 signal->theData[1] = reference();
677 sendSignal(workerRef(ss.m_worker), GSN_API_FAILREQ,
682 DbtcProxy::execAPI_FAILCONF(
Signal* signal)
684 Uint32 nodeId = signal->theData[0];
685 Ss_API_FAILREQ& ss = ssFind<Ss_API_FAILREQ>(nodeId);
686 recvCONF(signal, ss);
690 DbtcProxy::sendAPI_FAILCONF(
Signal* signal, Uint32 ssId)
692 Ss_API_FAILREQ& ss = ssFind<Ss_API_FAILREQ>(ssId);
697 signal->theData[0] = ssId;
698 signal->theData[1] = calcTcBlockRef(getOwnNodeId());
699 sendSignal(ss.m_ref, GSN_API_FAILCONF,
702 ssRelease<Ss_API_FAILREQ>(ssId);
708 DbtcProxy::execCREATE_INDX_IMPL_REQ(
Signal* signal)
718 Ss_CREATE_INDX_IMPL_REQ& ss = ssSeize<Ss_CREATE_INDX_IMPL_REQ>();
721 saveSections(ss, handle);
726 DbtcProxy::sendCREATE_INDX_IMPL_REQ(
Signal* signal, Uint32 ssId,
729 Ss_CREATE_INDX_IMPL_REQ& ss = ssFind<Ss_CREATE_INDX_IMPL_REQ>(ssId);
733 req->senderRef = reference();
734 req->senderData = ssId;
736 signal, CreateIndxImplReq::SignalLength, JBB,
741 DbtcProxy::execCREATE_INDX_IMPL_CONF(
Signal* signal)
744 Uint32 ssId = conf->senderData;
745 Ss_CREATE_INDX_IMPL_REQ& ss = ssFind<Ss_CREATE_INDX_IMPL_REQ>(ssId);
746 recvCONF(signal, ss);
750 DbtcProxy::execCREATE_INDX_IMPL_REF(
Signal* signal)
753 Uint32 ssId = ref->senderData;
754 Ss_CREATE_INDX_IMPL_REQ& ss = ssFind<Ss_CREATE_INDX_IMPL_REQ>(ssId);
755 recvREF(signal, ss, ref->errorCode);
759 DbtcProxy::sendCREATE_INDX_IMPL_CONF(
Signal* signal, Uint32 ssId)
761 Ss_CREATE_INDX_IMPL_REQ& ss = ssFind<Ss_CREATE_INDX_IMPL_REQ>(ssId);
762 BlockReference dictRef = ss.m_req.senderRef;
767 if (ss.m_error == 0) {
770 conf->senderRef = reference();
771 conf->senderData = ss.m_req.senderData;
772 sendSignal(dictRef, GSN_CREATE_INDX_IMPL_CONF,
773 signal, CreateIndxImplConf::SignalLength, JBB);
776 ref->senderRef = reference();
777 ref->senderData = ss.m_req.senderData;
778 ref->errorCode = ss.m_error;
779 sendSignal(dictRef, GSN_CREATE_INDX_IMPL_REF,
780 signal, CreateIndxImplRef::SignalLength, JBB);
783 ssRelease<Ss_CREATE_INDX_IMPL_REQ>(ssId);
789 DbtcProxy::execALTER_INDX_IMPL_REQ(
Signal* signal)
792 Ss_ALTER_INDX_IMPL_REQ& ss = ssSeize<Ss_ALTER_INDX_IMPL_REQ>();
794 ndbrequire(signal->getLength() == AlterIndxImplReq::SignalLength);
801 Ss_ALTER_INDX_IMPL_REQ& ss = ssFind<Ss_ALTER_INDX_IMPL_REQ>(ssId);
805 req->senderRef = reference();
806 req->senderData = ssId;
807 sendSignal(workerRef(ss.m_worker), GSN_ALTER_INDX_IMPL_REQ,
808 signal, AlterIndxImplReq::SignalLength, JBB);
812 DbtcProxy::execALTER_INDX_IMPL_CONF(
Signal* signal)
815 Uint32 ssId = conf->senderData;
816 Ss_ALTER_INDX_IMPL_REQ& ss = ssFind<Ss_ALTER_INDX_IMPL_REQ>(ssId);
817 recvCONF(signal, ss);
821 DbtcProxy::execALTER_INDX_IMPL_REF(
Signal* signal)
824 Uint32 ssId = ref->senderData;
825 Ss_ALTER_INDX_IMPL_REQ& ss = ssFind<Ss_ALTER_INDX_IMPL_REQ>(ssId);
826 recvREF(signal, ss, ref->errorCode);
830 DbtcProxy::sendALTER_INDX_IMPL_CONF(
Signal* signal, Uint32 ssId)
832 Ss_ALTER_INDX_IMPL_REQ& ss = ssFind<Ss_ALTER_INDX_IMPL_REQ>(ssId);
833 BlockReference dictRef = ss.m_req.senderRef;
838 if (ss.m_error == 0) {
841 conf->senderRef = reference();
842 conf->senderData = ss.m_req.senderData;
843 sendSignal(dictRef, GSN_ALTER_INDX_IMPL_CONF,
844 signal, AlterIndxImplConf::SignalLength, JBB);
847 ref->senderRef = reference();
848 ref->senderData = ss.m_req.senderData;
849 ref->errorCode = ss.m_error;
850 sendSignal(dictRef, GSN_ALTER_INDX_IMPL_REF,
851 signal, AlterIndxImplRef::SignalLength, JBB);
854 ssRelease<Ss_ALTER_INDX_IMPL_REQ>(ssId);
860 DbtcProxy::execDROP_INDX_IMPL_REQ(
Signal* signal)
863 Ss_DROP_INDX_IMPL_REQ& ss = ssSeize<Ss_DROP_INDX_IMPL_REQ>();
865 ndbrequire(signal->getLength() == DropIndxImplReq::SignalLength);
872 Ss_DROP_INDX_IMPL_REQ& ss = ssFind<Ss_DROP_INDX_IMPL_REQ>(ssId);
876 req->senderRef = reference();
877 req->senderData = ssId;
878 sendSignal(workerRef(ss.m_worker), GSN_DROP_INDX_IMPL_REQ,
879 signal, DropIndxImplReq::SignalLength, JBB);
883 DbtcProxy::execDROP_INDX_IMPL_CONF(
Signal* signal)
886 Uint32 ssId = conf->senderData;
887 Ss_DROP_INDX_IMPL_REQ& ss = ssFind<Ss_DROP_INDX_IMPL_REQ>(ssId);
888 recvCONF(signal, ss);
892 DbtcProxy::execDROP_INDX_IMPL_REF(
Signal* signal)
895 Uint32 ssId = ref->senderData;
896 Ss_DROP_INDX_IMPL_REQ& ss = ssFind<Ss_DROP_INDX_IMPL_REQ>(ssId);
897 recvREF(signal, ss, ref->errorCode);
901 DbtcProxy::sendDROP_INDX_IMPL_CONF(
Signal* signal, Uint32 ssId)
903 Ss_DROP_INDX_IMPL_REQ& ss = ssFind<Ss_DROP_INDX_IMPL_REQ>(ssId);
904 BlockReference dictRef = ss.m_req.senderRef;
909 if (ss.m_error == 0) {
912 conf->senderRef = reference();
913 conf->senderData = ss.m_req.senderData;
914 sendSignal(dictRef, GSN_DROP_INDX_IMPL_CONF,
915 signal, DropIndxImplConf::SignalLength, JBB);
918 ref->senderRef = reference();
919 ref->senderData = ss.m_req.senderData;
920 ref->errorCode = ss.m_error;
921 sendSignal(dictRef, GSN_DROP_INDX_IMPL_REF,
922 signal, DropIndxImplRef::SignalLength, JBB);
925 ssRelease<Ss_DROP_INDX_IMPL_REQ>(ssId);
929 DbtcProxy::execTAKE_OVERTCCONF(
Signal* signal)
939 for (Uint32
i = 0;
i < c_workers;
i++)
942 Uint32 ref = numberToRef(number(), workerInstance(
i), getOwnNodeId());
943 sendSignal(ref, GSN_TAKE_OVERTCCONF, signal,