Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
c73b27f5
Commit
c73b27f5
authored
Jan 03, 2007
by
jonas@perch.ndb.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge perch.ndb.mysql.com:/home/jonas/src/50-work
into perch.ndb.mysql.com:/home/jonas/src/51-work
parents
2e375454
d9fa993e
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
113 additions
and
13 deletions
+113
-13
storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp
storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp
+1
-0
storage/ndb/src/kernel/blocks/ERROR_codes.txt
storage/ndb/src/kernel/blocks/ERROR_codes.txt
+2
-0
storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp
storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp
+4
-0
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
+59
-13
storage/ndb/test/ndbapi/testNodeRestart.cpp
storage/ndb/test/ndbapi/testNodeRestart.cpp
+43
-0
storage/ndb/test/run-test/daily-basic-tests.txt
storage/ndb/test/run-test/daily-basic-tests.txt
+4
-0
No files found.
storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp
View file @
c73b27f5
...
...
@@ -68,6 +68,7 @@ public:
// 100-105 TUP and ACC
// 200-240 UTIL
// 300-305 TRIX
QmgrErr935
=
935
,
NdbfsDumpFileStat
=
400
,
NdbfsDumpAllFiles
=
401
,
NdbfsDumpOpenFiles
=
402
,
...
...
storage/ndb/src/kernel/blocks/ERROR_codes.txt
View file @
c73b27f5
...
...
@@ -23,6 +23,8 @@ Crash president when he starts to run in ArbitState 1-9.
934 : Crash president in ALLOC_NODE_ID_REQ
935 : Crash master on node failure (delayed)
and skip sending GSN_COMMIT_FAILREQ to specified node
ERROR CODES FOR TESTING NODE FAILURE, GLOBAL CHECKPOINT HANDLING:
-----------------------------------------------------------------
...
...
storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp
View file @
c73b27f5
...
...
@@ -446,6 +446,10 @@ private:
StopReq
c_stopReq
;
bool
check_multi_node_shutdown
(
Signal
*
signal
);
#ifdef ERROR_INSERT
Uint32
c_error_insert_extra
;
#endif
};
#endif
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
View file @
c73b27f5
...
...
@@ -3185,6 +3185,18 @@ Qmgr::sendCommitFailReq(Signal* signal)
for
(
nodePtr
.
i
=
1
;
nodePtr
.
i
<
MAX_NDB_NODES
;
nodePtr
.
i
++
)
{
jam
();
ptrAss
(
nodePtr
,
nodeRec
);
#ifdef ERROR_INSERT
if
(
ERROR_INSERTED
(
935
)
&&
nodePtr
.
i
==
c_error_insert_extra
)
{
ndbout_c
(
"skipping node %d"
,
c_error_insert_extra
);
CLEAR_ERROR_INSERT_VALUE
;
signal
->
theData
[
0
]
=
9999
;
sendSignalWithDelay
(
CMVMI_REF
,
GSN_NDB_TAMPER
,
signal
,
1000
,
1
);
continue
;
}
#endif
if
(
nodePtr
.
p
->
phase
==
ZRUNNING
)
{
jam
();
nodePtr
.
p
->
sendCommitFailReqStatus
=
Q_ACTIVE
;
...
...
@@ -3255,6 +3267,33 @@ void Qmgr::execPREP_FAILREF(Signal* signal)
return
;
}
//Qmgr::execPREP_FAILREF()
static
Uint32
clear_nodes
(
Uint32
dstcnt
,
Uint16
dst
[],
Uint32
srccnt
,
const
Uint16
src
[])
{
if
(
srccnt
==
0
)
return
dstcnt
;
Uint32
pos
=
0
;
for
(
Uint32
i
=
0
;
i
<
dstcnt
;
i
++
)
{
Uint32
node
=
dst
[
i
];
for
(
Uint32
j
=
0
;
j
<
srccnt
;
j
++
)
{
if
(
node
==
dst
[
j
])
{
node
=
RNIL
;
break
;
}
}
if
(
node
!=
RNIL
)
{
dst
[
pos
++
]
=
node
;
}
}
return
pos
;
}
/*---------------------------------------------------------------------------*/
/* THE PRESIDENT IS NOW COMMITTING THE PREVIOUSLY PREPARED NODE FAILURE. */
/*---------------------------------------------------------------------------*/
...
...
@@ -3342,19 +3381,18 @@ void Qmgr::execCOMMIT_FAILREQ(Signal* signal)
NodeFailRep
::
SignalLength
,
JBB
);
}
//if
}
//for
if
(
cpresident
!=
getOwnNodeId
())
{
jam
();
cnoFailedNodes
=
cnoCommitFailedNodes
-
cnoFailedNodes
;
if
(
cnoFailedNodes
>
0
)
{
jam
();
guard0
=
cnoFailedNodes
-
1
;
arrGuard
(
guard0
+
cnoCommitFailedNodes
,
MAX_NDB_NODES
);
for
(
Tj
=
0
;
Tj
<=
guard0
;
Tj
++
)
{
jam
();
cfailedNodes
[
Tj
]
=
cfailedNodes
[
Tj
+
cnoCommitFailedNodes
];
}
//for
}
//if
}
//if
/**
* Remove committed nodes from failed/prepared
*/
cnoFailedNodes
=
clear_nodes
(
cnoFailedNodes
,
cfailedNodes
,
cnoCommitFailedNodes
,
ccommitFailedNodes
);
cnoPrepFailedNodes
=
clear_nodes
(
cnoPrepFailedNodes
,
cprepFailedNodes
,
cnoCommitFailedNodes
,
ccommitFailedNodes
);
cnoCommitFailedNodes
=
0
;
}
//if
/**-----------------------------------------------------------------------
...
...
@@ -4733,6 +4771,14 @@ Qmgr::execDUMP_STATE_ORD(Signal* signal)
default:
;
}
//switch
#ifdef ERROR_INSERT
if
(
signal
->
theData
[
0
]
==
935
&&
signal
->
getLength
()
==
2
)
{
SET_ERROR_INSERT_VALUE
(
935
);
c_error_insert_extra
=
signal
->
theData
[
1
];
}
#endif
}
//Qmgr::execDUMP_STATE_ORD()
void
Qmgr
::
execSET_VAR_REQ
(
Signal
*
signal
)
...
...
storage/ndb/test/ndbapi/testNodeRestart.cpp
View file @
c73b27f5
...
...
@@ -1033,6 +1033,46 @@ int runBug24717(NDBT_Context* ctx, NDBT_Step* step){
return
NDBT_OK
;
}
int
runBug25364
(
NDBT_Context
*
ctx
,
NDBT_Step
*
step
){
int
result
=
NDBT_OK
;
NdbRestarter
restarter
;
Ndb
*
pNdb
=
GETNDB
(
step
);
int
loops
=
ctx
->
getNumLoops
();
if
(
restarter
.
getNumDbNodes
()
<
4
)
return
NDBT_OK
;
int
val2
[]
=
{
DumpStateOrd
::
CmvmiSetRestartOnErrorInsert
,
1
};
for
(;
loops
;
loops
--
)
{
int
master
=
restarter
.
getMasterNodeId
();
int
victim
=
restarter
.
getRandomNodeOtherNodeGroup
(
master
,
rand
());
int
second
=
restarter
.
getRandomNodeSameNodeGroup
(
victim
,
rand
());
int
dump
[]
=
{
935
,
victim
}
;
if
(
restarter
.
dumpStateOneNode
(
master
,
dump
,
2
))
return
NDBT_FAILED
;
if
(
restarter
.
dumpStateOneNode
(
master
,
val2
,
2
))
return
NDBT_FAILED
;
if
(
restarter
.
restartOneDbNode
(
second
,
false
,
true
,
true
))
return
NDBT_FAILED
;
int
nodes
[
2
]
=
{
master
,
second
};
if
(
restarter
.
waitNodesNoStart
(
nodes
,
2
))
return
NDBT_FAILED
;
restarter
.
startNodes
(
nodes
,
2
);
if
(
restarter
.
waitNodesStarted
(
nodes
,
2
))
return
NDBT_FAILED
;
}
return
NDBT_OK
;
}
NDBT_TESTSUITE
(
testNodeRestart
);
TESTCASE
(
"NoLoad"
,
...
...
@@ -1360,6 +1400,9 @@ TESTCASE("Bug21271",
TESTCASE
(
"Bug24717"
,
""
){
INITIALIZER
(
runBug24717
);
}
TESTCASE
(
"Bug25364"
,
""
){
INITIALIZER
(
runBug25364
);
}
NDBT_TESTSUITE_END
(
testNodeRestart
);
int
main
(
int
argc
,
const
char
**
argv
){
...
...
storage/ndb/test/run-test/daily-basic-tests.txt
View file @
c73b27f5
...
...
@@ -513,6 +513,10 @@ max-time: 1000
cmd: testNodeRestart
args: -n Bug24717 T1
max-time: 1000
cmd: testNodeRestart
args: -n Bug25364 T1
#
# DICT TESTS
max-time: 1500
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment