#At file:///home/jonas/src/telco-6.3/ based on revid:jonas@stripped
3188 Jonas Oreland 2009-12-08
ndb - bug#49263 - reasonable error message when failing to recreate DD object during node/system restart
modified:
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp
=== modified file 'storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp'
--- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2009-10-27 10:10:08 +0000
+++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp 2009-12-08 15:26:29 +0000
@@ -3443,6 +3443,21 @@ Dbdict::restartCreateObj_getTabInfoConf(
}
void
+Dbdict::restartCreateObj_fail(CreateObjRecordPtr createObjPtr)
+{
+ jam();
+ char msg[128];
+ BaseString::snprintf(msg, sizeof(msg),
+ "Failure to recreate object %u during restart, error %u."
+ " Check configuration changes and instructions from"
+ " \'perror --ndb %u\'"
+ ,c_restartRecord.activeTable
+ ,createObjPtr.p->m_errorCode
+ ,createObjPtr.p->m_errorCode);
+ progError(__LINE__, NDBD_EXIT_INVALID_CONFIG, msg);
+}
+
+void
Dbdict::restartCreateObj_readConf(Signal* signal,
Uint32 callbackData,
Uint32 returnCode)
@@ -3451,6 +3466,8 @@ Dbdict::restartCreateObj_readConf(Signal
ndbrequire(returnCode == 0);
CreateObjRecordPtr createObjPtr;
ndbrequire(c_opCreateObj.find(createObjPtr, callbackData));
+ if (! (createObjPtr.p->m_errorCode == 0))
+ restartCreateObj_fail(createObjPtr);
ndbrequire(createObjPtr.p->m_errorCode == 0);
PageRecordPtr pageRecPtr;
@@ -3478,6 +3495,8 @@ Dbdict::restartCreateObj_prepare_start_d
ndbrequire(returnCode == 0);
CreateObjRecordPtr createObjPtr;
ndbrequire(c_opCreateObj.find(createObjPtr, callbackData));
+ if (! (createObjPtr.p->m_errorCode == 0))
+ restartCreateObj_fail(createObjPtr);
ndbrequire(createObjPtr.p->m_errorCode == 0);
Callback callback;
@@ -3499,6 +3518,8 @@ Dbdict::restartCreateObj_write_complete(
ndbrequire(returnCode == 0);
CreateObjRecordPtr createObjPtr;
ndbrequire(c_opCreateObj.find(createObjPtr, callbackData));
+ if (! (createObjPtr.p->m_errorCode == 0))
+ restartCreateObj_fail(createObjPtr);
ndbrequire(createObjPtr.p->m_errorCode == 0);
SectionHandle handle(this, createObjPtr.p->m_obj_info_ptr_i);
@@ -3524,6 +3545,8 @@ Dbdict::restartCreateObj_prepare_complet
ndbrequire(returnCode == 0);
CreateObjRecordPtr createObjPtr;
ndbrequire(c_opCreateObj.find(createObjPtr, callbackData));
+ if (! (createObjPtr.p->m_errorCode == 0))
+ restartCreateObj_fail(createObjPtr);
ndbrequire(createObjPtr.p->m_errorCode == 0);
createObjPtr.p->m_callback.m_callbackFunction =
@@ -3545,6 +3568,8 @@ Dbdict::restartCreateObj_commit_start_do
ndbrequire(returnCode == 0);
CreateObjRecordPtr createObjPtr;
ndbrequire(c_opCreateObj.find(createObjPtr, callbackData));
+ if (! (createObjPtr.p->m_errorCode == 0))
+ restartCreateObj_fail(createObjPtr);
ndbrequire(createObjPtr.p->m_errorCode == 0);
createObjPtr.p->m_callback.m_callbackFunction =
@@ -3567,6 +3592,8 @@ Dbdict::restartCreateObj_commit_complete
ndbrequire(returnCode == 0);
CreateObjRecordPtr createObjPtr;
ndbrequire(c_opCreateObj.find(createObjPtr, callbackData));
+ if (! (createObjPtr.p->m_errorCode == 0))
+ restartCreateObj_fail(createObjPtr);
ndbrequire(createObjPtr.p->m_errorCode == 0);
c_opCreateObj.release(createObjPtr);
@@ -3578,6 +3605,22 @@ Dbdict::restartCreateObj_commit_complete
/**
* Drop object during NR/SR
*/
+
+void
+Dbdict::restartDropObj_fail(DropObjRecordPtr dropObjPtr)
+{
+ jam();
+ char msg[128];
+ BaseString::snprintf(msg, sizeof(msg),
+ "Failure to drop object %u during restart, error %u."
+ " Check configuration changes and instructions from"
+ " \'perror --ndb %u\'"
+ ,c_restartRecord.activeTable
+ ,dropObjPtr.p->m_errorCode
+ ,dropObjPtr.p->m_errorCode);
+ progError(__LINE__, NDBD_EXIT_INVALID_CONFIG, msg);
+}
+
void
Dbdict::restartDropObj(Signal* signal,
Uint32 tableId,
@@ -3790,6 +3833,8 @@ Dbdict::restartDropObj_prepare_start_don
ndbrequire(returnCode == 0);
DropObjRecordPtr dropObjPtr;
ndbrequire(c_opDropObj.find(dropObjPtr, callbackData));
+ if (! (dropObjPtr.p->m_errorCode == 0))
+ restartDropObj_fail(dropObjPtr);
ndbrequire(dropObjPtr.p->m_errorCode == 0);
dropObjPtr.p->m_callback.m_callbackFunction =
@@ -3811,6 +3856,8 @@ Dbdict::restartDropObj_prepare_complete_
ndbrequire(returnCode == 0);
DropObjRecordPtr dropObjPtr;
ndbrequire(c_opDropObj.find(dropObjPtr, callbackData));
+ if (! (dropObjPtr.p->m_errorCode == 0))
+ restartDropObj_fail(dropObjPtr);
ndbrequire(dropObjPtr.p->m_errorCode == 0);
dropObjPtr.p->m_callback.m_callbackFunction =
@@ -3832,6 +3879,8 @@ Dbdict::restartDropObj_commit_start_done
ndbrequire(returnCode == 0);
DropObjRecordPtr dropObjPtr;
ndbrequire(c_opDropObj.find(dropObjPtr, callbackData));
+ if (! (dropObjPtr.p->m_errorCode == 0))
+ restartDropObj_fail(dropObjPtr);
ndbrequire(dropObjPtr.p->m_errorCode == 0);
dropObjPtr.p->m_callback.m_callbackFunction =
@@ -3872,6 +3921,8 @@ Dbdict::restartDropObj_commit_complete_d
ndbrequire(returnCode == 0);
DropObjRecordPtr dropObjPtr;
ndbrequire(c_opDropObj.find(dropObjPtr, callbackData));
+ if (! (dropObjPtr.p->m_errorCode == 0))
+ restartDropObj_fail(dropObjPtr);
ndbrequire(dropObjPtr.p->m_errorCode == 0);
c_opDropObj.release(dropObjPtr);
=== modified file 'storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp'
--- a/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp 2009-10-21 11:11:32 +0000
+++ b/storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp 2009-12-08 15:26:29 +0000
@@ -2494,6 +2494,7 @@ private:
void restartDropObj_commit_start_done(Signal*, Uint32, Uint32);
void restartDropObj_commit_complete_done(Signal*, Uint32, Uint32);
void restartDropObj_updateSchemaFile(Signal*, DropObjRecordPtr);
+ void restartDropObj_fail(DropObjRecordPtr);
void restart_checkSchemaStatusComplete(Signal*, Uint32 callback, Uint32);
void restart_writeSchemaConf(Signal*, Uint32 callbackData, Uint32);
@@ -2547,6 +2548,7 @@ private:
void restartCreateObj_prepare_complete_done(Signal*, Uint32, Uint32);
void restartCreateObj_commit_start_done(Signal*, Uint32, Uint32);
void restartCreateObj_commit_complete_done(Signal*, Uint32, Uint32);
+ void restartCreateObj_fail(CreateObjRecordPtr);
void execDICT_COMMIT_REQ(Signal*);
void execDICT_COMMIT_REF(Signal*);
Attachment: [text/bzr-bundle] bzr/jonas@mysql.com-20091208152629-0x8g5pxzhv0ynhvq.bundle
| Thread |
|---|
| • bzr commit into mysql-5.1-telco-6.3 branch (jonas:3188) Bug#49263 | Jonas Oreland | 8 Dec |