From: Maitrayi Sabaratnam Date: August 29 2012 1:46pm Subject: bzr push into mysql-5.5-cluster-7.2 branch (maitrayi.sabaratnam:3981 to 3982) List-Archive: http://lists.mysql.com/commits/144650 Message-Id: <20120829134614.24198.53946.3982@asator03-z7.no.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3982 Maitrayi Sabaratnam 2012-08-29 [merge] Merge from 71 to 72 modified: storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp storage/ndb/test/ndbapi/testDict.cpp 3981 Ole John Aske 2012-08-24 [merge] Merge 7.1 -> 7.2 Also added the ndb_many_fragments.test which does SPJ testing of the fix for bugs #14143553 and #13799800 in this merge. added: mysql-test/suite/ndb/r/ndb_many_fragments.result mysql-test/suite/ndb/t/ndb_many_fragments.cnf mysql-test/suite/ndb/t/ndb_many_fragments.test modified: mysql-test/mysql-test-run.pl storage/ndb/include/kernel/signaldata/DihScanTab.hpp storage/ndb/include/kernel/signaldata/TcContinueB.hpp storage/ndb/src/kernel/blocks/backup/Backup.cpp storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp storage/ndb/src/kernel/blocks/dbspj/Dbspj.hpp storage/ndb/src/kernel/blocks/dbspj/DbspjMain.cpp storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp storage/ndb/src/kernel/blocks/suma/Suma.cpp storage/ndb/src/ndbapi/ndberror.c storage/ndb/test/ndbapi/testScan.cpp storage/ndb/test/ndbapi/testSpj.cpp === modified file 'storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp' --- a/storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp 2012-04-24 14:41:37 +0000 +++ b/storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp 2012-08-29 13:39:37 +0000 @@ -152,7 +152,10 @@ public: DihAllAllowNodeStart = 7016, DihMinTimeBetweenLCP = 7017, DihMaxTimeBetweenLCP = 7018, - // 7019 + // Checks whether add frag failure was cleaned up. + // Should NOT be used while commands involving addFragReq + // are being performed + DihAddFragFailCleanedUp = 7019, // 7020 // 7021 EnableUndoDelayDataWrite = 7080, // DIH+ACC+TUP === modified file 'storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp' --- a/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp 2012-08-24 12:07:17 +0000 +++ b/storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp 2012-08-29 13:39:37 +0000 @@ -8273,10 +8273,23 @@ Dbdih::execADD_FRAGREF(Signal* signal){ connectPtr.i = ref->dihPtr; ptrCheckGuard(connectPtr, cconnectFileSize, connectRecord); + Ptr tabPtr; + tabPtr.i = connectPtr.p->table; + ptrCheckGuard(tabPtr, ctabFileSize, tabRecord); + ndbrequire(tabPtr.p->connectrec == connectPtr.i); + if (connectPtr.p->connectState == ConnectRecord::ALTER_TABLE) { jam(); + if (AlterTableReq::getReorgFragFlag(connectPtr.p->m_alter.m_changeMask)) + { + jam(); + DIH_TAB_WRITE_LOCK(tabPtr.p); + tabPtr.p->m_new_map_ptr_i = RNIL; + DIH_TAB_WRITE_UNLOCK(tabPtr.p); + } + connectPtr.p->connectState = ConnectRecord::ALTER_TABLE_ABORT; drop_fragments(signal, connectPtr, connectPtr.p->m_alter.m_totalfragments); return; @@ -8290,10 +8303,6 @@ Dbdih::execADD_FRAGREF(Signal* signal){ DiAddTabRef::SignalLength, JBB); // Release - Ptr tabPtr; - tabPtr.i = connectPtr.p->table; - ptrCheckGuard(tabPtr, ctabFileSize, tabRecord); - ndbrequire(tabPtr.p->connectrec == connectPtr.i); tabPtr.p->connectrec = RNIL; release_connect(connectPtr); } @@ -8631,6 +8640,14 @@ void Dbdih::execALTER_TAB_REQ(Signal * s connectPtr.p->userpointer = senderData; connectPtr.p->userblockref = senderRef; + if (AlterTableReq::getReorgFragFlag(connectPtr.p->m_alter.m_changeMask)) + { + jam(); + DIH_TAB_WRITE_LOCK(tabPtr.p); + tabPtr.p->m_new_map_ptr_i = RNIL; + DIH_TAB_WRITE_UNLOCK(tabPtr.p); + } + if (AlterTableReq::getAddFragFlag(req->changeMask)) { jam(); @@ -18109,6 +18126,27 @@ Dbdih::execDUMP_STATE_ORD(Signal* signal } } + /* Checks whether add frag failure was cleaned up. + * Should NOT be used while commands involving addFragReq + * are being performed. + */ + if (arg == DumpStateOrd::DihAddFragFailCleanedUp && signal->length() == 2) + { + TabRecordPtr tabPtr; + tabPtr.i = signal->theData[1]; + if (tabPtr.i >= ctabFileSize) + return; + + ptrCheckGuard(tabPtr, ctabFileSize, tabRecord); + + if (tabPtr.p->m_new_map_ptr_i != RNIL) + { + jam(); + warningEvent("new_map_ptr_i to table id %d is not NIL", tabPtr.i); + ndbrequire(false); + } + } + DECLARE_DUMP0(DBDIH, 7213, "Set error 7213 with extra arg") { SET_ERROR_INSERT_VALUE2(7213, signal->theData[1]); === modified file 'storage/ndb/test/ndbapi/testDict.cpp' --- a/storage/ndb/test/ndbapi/testDict.cpp 2012-08-22 10:49:42 +0000 +++ b/storage/ndb/test/ndbapi/testDict.cpp 2012-08-28 11:22:02 +0000 @@ -7483,6 +7483,9 @@ runFailAddPartition(NDBT_Context* ctx, N CHECK(restarter.dumpStateAllNodes(&dump2, 1) == 0); NdbSleep_MilliSleep(SAFTY); // Hope that snapshot has arrived + int dump3[] = {DumpStateOrd::DihAddFragFailCleanedUp, org->getTableId()}; + CHECK(restarter.dumpStateAllNodes(dump3, 2) == 0); + const NdbDictionary::Table* check = pDic->getTable(tab.getName()); CHECK2((check->getObjectId() == org->getObjectId() && No bundle (reason: useless for push emails).