From 75bd09a6652ed3ef9dad764a94a91324cfaa66de Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 19 Mar 2007 12:31:23 +0100 Subject: ndb - bug#20185 Fix race in testprg...causing random TC crashes storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: remove incorrect work-around storage/ndb/test/ndbapi/testNodeRestart.cpp: Fix race in testprg...causing random TC crashes --- storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp | 15 +++++---------- storage/ndb/test/ndbapi/testNodeRestart.cpp | 14 +++++++++++--- 2 files changed, 16 insertions(+), 13 deletions(-) (limited to 'storage') diff --git a/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp b/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp index 44f7954f00d..ff8f32bf085 100644 --- a/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp +++ b/storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp @@ -7099,20 +7099,15 @@ Dbtc::nodeFailCheckTransactions(Signal* signal, for (transPtr.i = transPtrI; transPtr.i < capiConnectFilesize; transPtr.i++) { ptrCheckGuard(transPtr, capiConnectFilesize, apiConnectRecord); - Uint32 state = transPtr.p->apiConnectstate; if (transPtr.p->m_transaction_nodes.get(failedNodeId)) { jam(); - // avoid assertion in timeoutfoundlab - if (state != CS_PREPARE_TO_COMMIT) - { - // Force timeout regardless of state - c_appl_timeout_value = 1; - setApiConTimer(transPtr.i, TtcTimer - 2, __LINE__); - timeOutFoundLab(signal, transPtr.i, ZNODEFAIL_BEFORE_COMMIT); - c_appl_timeout_value = TapplTimeout; - } + // Force timeout regardless of state + c_appl_timeout_value = 1; + setApiConTimer(transPtr.i, TtcTimer - 2, __LINE__); + timeOutFoundLab(signal, transPtr.i, ZNODEFAIL_BEFORE_COMMIT); + c_appl_timeout_value = TapplTimeout; } // Send CONTINUEB to continue later diff --git a/storage/ndb/test/ndbapi/testNodeRestart.cpp b/storage/ndb/test/ndbapi/testNodeRestart.cpp index 39b80611731..8d48d78c581 100644 --- a/storage/ndb/test/ndbapi/testNodeRestart.cpp +++ b/storage/ndb/test/ndbapi/testNodeRestart.cpp @@ -887,6 +887,9 @@ int runBug20185(NDBT_Context* ctx, NDBT_Step* step){ return NDBT_FAILED; NdbSleep_MilliSleep(3000); + Vector nodes; + for (Uint32 i = 0; i