Skip to content

Commit 2c56ce7

Browse files
committed
Bug#36180807 Autotest: testDict -n Bug13416603 I2 fails
Patch for 7.6 Only Problem: Test has two main purposes: - Handle node failure during index stat update. - Perform an Index stat update when not all nodes are up. Fail is the second case, test inject error 18026 to all nodes and then forces an index stat update to crash a node during handing of SUB_TABLE_DATA in TRIX. Problem is that, as error is inserted in all nodes, any automatic index stat update running on a different node will crash it unintentionally. Solution: To prevent other than target node to crash due to error 18026 make them clear the error when NODEFAIL_REP of target node is received. Change-Id: Icff20dc67a1febddec1d6eb04b9a4ba548ff9111
1 parent e17e774 commit 2c56ce7

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9520,6 +9520,9 @@ void Dbdih::execNODE_FAILREP(Signal* signal)
95209520
sendSignal(DBUTIL_REF, GSN_NODE_FAILREP, signal,
95219521
NodeFailRep::SignalLength, JBB);
95229522

9523+
sendSignal(TRIX_REF, GSN_NODE_FAILREP, signal,
9524+
NodeFailRep::SignalLength, JBB);
9525+
95239526
sendSignal(DBTUP_REF, GSN_NODE_FAILREP, signal,
95249527
NodeFailRep::SignalLength, JBB);
95259528

storage/ndb/src/kernel/blocks/trix/Trix.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ Trix::Trix(Block_context &ctx)
8181
addRecSignal(GSN_STTOR, &Trix::execSTTOR);
8282
addRecSignal(GSN_DUMP_STATE_ORD, &Trix::execDUMP_STATE_ORD);
8383
addRecSignal(GSN_DBINFO_SCANREQ, &Trix::execDBINFO_SCANREQ);
84+
addRecSignal(GSN_NODE_FAILREP, &Trix::execNODE_FAILREP);
8485

8586
// Index build
8687
addRecSignal(GSN_BUILD_INDX_IMPL_REQ, &Trix::execBUILD_INDX_IMPL_REQ);
@@ -187,6 +188,19 @@ void Trix::execSTTOR(Signal* signal)
187188
return;
188189
}//Trix::execSTTOR()
189190

191+
void Trix::execNODE_FAILREP(Signal *signal) {
192+
jamEntry();
193+
194+
if (signal->getNoOfSections() >= 1) {
195+
SectionHandle handle(this, signal);
196+
releaseSections(handle);
197+
}
198+
199+
if (ERROR_INSERTED(18026)) {
200+
CLEAR_ERROR_INSERT_VALUE;
201+
}
202+
}
203+
190204
// Debugging
191205
void
192206
Trix::execDUMP_STATE_ORD(Signal* signal)

storage/ndb/src/kernel/blocks/trix/Trix.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,9 @@ class Trix : public SimulatedBlock
267267
void execREAD_CONFIG_REQ(Signal* signal);
268268
void execSTTOR(Signal* signal);
269269

270+
// Node management
271+
void execNODE_FAILREP(Signal *signal);
272+
270273
// Debugging
271274
void execDUMP_STATE_ORD(Signal* signal);
272275

0 commit comments

Comments
 (0)