Below is the list of changes that have just been committed into a local
5.0 repository of pekka. When pekka does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet
1.2205 06/06/27 21:17:31 pekka@stripped +3 -0
ndb - bug#18781 : safety fix
ndb/src/kernel/blocks/dbdih/DbdihMain.cpp
1.53 06/06/27 21:15:56 pekka@stripped +18 -0
make sure node is Started before sending DICT_UNLOCK_ORD
ndb/src/common/debugger/signaldata/DihContinueB.cpp
1.3 06/06/27 21:15:55 pekka@stripped +4 -0
make sure node is Started before sending DICT_UNLOCK_ORD
ndb/include/kernel/signaldata/DihContinueB.hpp
1.3 06/06/27 21:15:55 pekka@stripped +3 -1
make sure node is Started before sending DICT_UNLOCK_ORD
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: pekka
# Host: clam.(none)
# Root: /export/space/pekka/ndb/version/my50-bug18781
--- 1.2/ndb/include/kernel/signaldata/DihContinueB.hpp 2004-10-21 13:12:11 +02:00
+++ 1.3/ndb/include/kernel/signaldata/DihContinueB.hpp 2006-06-27 21:15:55 +02:00
@@ -69,7 +69,9 @@
ZSEND_END_TO = 41,
WAIT_DROP_TAB_WRITING_TO_FILE = 42,
- CHECK_WAIT_DROP_TAB_FAILED_LQH = 43
+ CHECK_WAIT_DROP_TAB_FAILED_LQH = 43,
+
+ ZDICT_UNLOCK_ORD_WAIT = 44
};
};
--- 1.2/ndb/src/common/debugger/signaldata/DihContinueB.cpp 2004-10-21 13:12:11 +02:00
+++ 1.3/ndb/src/common/debugger/signaldata/DihContinueB.cpp 2006-06-27 21:15:55 +02:00
@@ -212,6 +212,10 @@
fprintf(output, " Wait drop tab FailedNodeId: %d TableId: %d\n",
theData[1], theData[2]);
return true;
+ case DihContinueB::ZDICT_UNLOCK_ORD_WAIT:
+ fprintf(output, " DICT_UNLOCK_ORD lockSlavePtrI: %u\n",
+ theData[1]);
+ return true;
default:
fprintf(output, " Default system error lab...\n");
break;
--- 1.52/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp 2006-06-22 20:58:44 +02:00
+++ 1.53/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp 2006-06-27 21:15:56 +02:00
@@ -610,6 +610,12 @@
checkWaitDropTabFailedLqh(signal, nodeId, tableId);
return;
}
+ case DihContinueB::ZDICT_UNLOCK_ORD_WAIT:{
+ jam();
+ Uint32 lockSlavePtrI = signal->theData[1];
+ sendDictUnlockOrd(signal, lockSlavePtrI);
+ return;
+ }
}//switch
ndbrequire(false);
@@ -14779,6 +14785,18 @@
void
Dbdih::sendDictUnlockOrd(Signal* signal, Uint32 lockSlavePtrI)
{
+ /*
+ * Must be called after this node is "Started". But that point is
+ * a bit obscure in 5.0 / 5.1. Use following fail-safe for now.
+ */
+ if (getNodeState().getNodeRestartInProgress()) {
+ jam();
+ signal->theData[0] = DihContinueB::ZDICT_UNLOCK_ORD_WAIT;
+ signal->theData[1] = lockSlavePtrI;
+ sendSignalWithDelay(reference(), GSN_CONTINUEB, signal, 10, 2);
+ return;
+ }
+
DictUnlockOrd* ord = (DictUnlockOrd*)&signal->theData[0];
DictLockSlavePtr lockPtr;
| Thread |
|---|
| • bk commit into 5.0 tree (pekka:1.2205) BUG#18781 | pekka | 29 Jun |