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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
e2853bdd
Commit
e2853bdd
authored
Mar 13, 2007
by
jonas@perch.ndb.mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ndb - bug#27003
Handle random(not in order) LQHKEYREQ failures during node-restart
parent
9370d6a3
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
114 additions
and
4 deletions
+114
-4
ndb/src/kernel/blocks/ERROR_codes.txt
ndb/src/kernel/blocks/ERROR_codes.txt
+12
-0
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
+16
-3
ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp
ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp
+24
-0
ndb/src/kernel/blocks/dbtup/DbtupGen.cpp
ndb/src/kernel/blocks/dbtup/DbtupGen.cpp
+1
-1
ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp
ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp
+1
-0
ndb/test/ndbapi/testNodeRestart.cpp
ndb/test/ndbapi/testNodeRestart.cpp
+56
-0
ndb/test/run-test/daily-basic-tests.txt
ndb/test/run-test/daily-basic-tests.txt
+4
-0
No files found.
ndb/src/kernel/blocks/ERROR_codes.txt
View file @
e2853bdd
...
...
@@ -489,3 +489,15 @@ Dbdict:
6003 Crash in participant @ CreateTabReq::Prepare
6004 Crash in participant @ CreateTabReq::Commit
6005 Crash in participant @ CreateTabReq::CreateDrop
TUP:
----
4025: Fail all inserts with out of memory
4026: Fail one insert with oom
4027: Fail inserts randomly with oom
4028: Fail one random insert with oom
NDBCNTR:
1000: Crash insertion on SystemError::CopyFragRef
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
View file @
e2853bdd
...
...
@@ -9641,6 +9641,15 @@ void Dblqh::copyCompletedLab(Signal* signal)
closeCopyLab
(
signal
);
return
;
}
//if
if
(
scanptr
.
p
->
scanState
==
ScanRecord
::
WAIT_LQHKEY_COPY
&&
scanptr
.
p
->
scanErrorCounter
)
{
jam
();
closeCopyLab
(
signal
);
return
;
}
if
(
scanptr
.
p
->
scanState
==
ScanRecord
::
WAIT_LQHKEY_COPY
)
{
jam
();
/*---------------------------------------------------------------------------*/
...
...
@@ -9717,13 +9726,16 @@ void Dblqh::continueCopyAfterBlockedLab(Signal* signal)
void
Dblqh
::
copyLqhKeyRefLab
(
Signal
*
signal
)
{
ndbrequire
(
tcConnectptr
.
p
->
transid
[
1
]
==
signal
->
theData
[
4
]);
tcConnectptr
.
p
->
copyCountWords
-
=
signal
->
theData
[
3
];
Uint32
copyWords
=
signal
->
theData
[
3
];
scanptr
.
i
=
tcConnectptr
.
p
->
tcScanRec
;
c_scanRecordPool
.
getPtr
(
scanptr
);
scanptr
.
p
->
scanErrorCounter
++
;
tcConnectptr
.
p
->
errorCode
=
terrorCode
;
closeCopyLab
(
signal
);
return
;
LqhKeyConf
*
conf
=
(
LqhKeyConf
*
)
signal
->
getDataPtrSend
();
conf
->
transId1
=
copyWords
;
conf
->
transId2
=
tcConnectptr
.
p
->
transid
[
1
];
copyCompletedLab
(
signal
);
}
//Dblqh::copyLqhKeyRefLab()
void
Dblqh
::
closeCopyLab
(
Signal
*
signal
)
...
...
@@ -9734,6 +9746,7 @@ void Dblqh::closeCopyLab(Signal* signal)
// Wait until all of those have arrived until we start the
// close process.
/*---------------------------------------------------------------------------*/
scanptr
.
p
->
scanState
=
ScanRecord
::
WAIT_LQHKEY_COPY
;
jam
();
return
;
}
//if
...
...
ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp
View file @
e2853bdd
...
...
@@ -213,6 +213,30 @@ void Dbtup::execTUP_ALLOCREQ(Signal* signal)
//---------------------------------------------------
PagePtr
pagePtr
;
Uint32
pageOffset
;
if
(
ERROR_INSERTED
(
4025
))
{
signal
->
theData
[
0
]
=
827
;
return
;
}
if
(
ERROR_INSERTED
(
4026
))
{
CLEAR_ERROR_INSERT_VALUE
;
signal
->
theData
[
0
]
=
827
;
return
;
}
if
(
ERROR_INSERTED
(
4027
)
&&
(
rand
()
%
100
)
>
25
)
{
signal
->
theData
[
0
]
=
827
;
return
;
}
if
(
ERROR_INSERTED
(
4028
)
&&
(
rand
()
%
100
)
>
25
)
{
CLEAR_ERROR_INSERT_VALUE
;
signal
->
theData
[
0
]
=
827
;
return
;
}
if
(
!
allocTh
(
regFragPtr
.
p
,
regTabPtr
.
p
,
NORMAL_PAGE
,
...
...
ndb/src/kernel/blocks/dbtup/DbtupGen.cpp
View file @
e2853bdd
...
...
@@ -66,6 +66,7 @@ void Dbtup::initData()
undoPage
=
0
;
totNoOfPagesAllocated
=
0
;
cnoOfAllocatedPages
=
0
;
CLEAR_ERROR_INSERT_VALUE
;
// Records with constant sizes
}
//Dbtup::initData()
...
...
@@ -570,7 +571,6 @@ void Dbtup::execSTTOR(Signal* signal)
switch
(
startPhase
)
{
case
ZSTARTPHASE1
:
ljam
();
CLEAR_ERROR_INSERT_VALUE
;
cownref
=
calcTupBlockRef
(
0
);
break
;
default:
...
...
ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp
View file @
e2853bdd
...
...
@@ -180,6 +180,7 @@ void Ndbcntr::execSYSTEM_ERROR(Signal* signal)
break
;
case
SystemError
:
:
CopyFragRefError
:
CRASH_INSERTION
(
1000
);
BaseString
::
snprintf
(
buf
,
sizeof
(
buf
),
"Killed by node %d as "
"copyfrag failed, error: %u"
,
...
...
ndb/test/ndbapi/testNodeRestart.cpp
View file @
e2853bdd
...
...
@@ -1125,6 +1125,59 @@ runBug26481(NDBT_Context* ctx, NDBT_Step* step)
return
NDBT_OK
;
}
int
runBug27003
(
NDBT_Context
*
ctx
,
NDBT_Step
*
step
)
{
int
result
=
NDBT_OK
;
int
loops
=
ctx
->
getNumLoops
();
int
records
=
ctx
->
getNumRecords
();
NdbRestarter
res
;
static
const
int
errnos
[]
=
{
4025
,
4026
,
4027
,
4028
,
0
};
int
node
=
res
.
getRandomNotMasterNodeId
(
rand
());
ndbout_c
(
"node: %d"
,
node
);
if
(
res
.
restartOneDbNode
(
node
,
false
,
true
,
true
))
return
NDBT_FAILED
;
Uint32
pos
=
0
;
for
(
Uint32
i
=
0
;
i
<
loops
;
i
++
)
{
while
(
errnos
[
pos
]
!=
0
)
{
ndbout_c
(
"Tesing err: %d"
,
errnos
[
pos
]);
if
(
res
.
waitNodesNoStart
(
&
node
,
1
))
return
NDBT_FAILED
;
if
(
res
.
insertErrorInNode
(
node
,
1000
))
return
NDBT_FAILED
;
if
(
res
.
insertErrorInNode
(
node
,
errnos
[
pos
]))
return
NDBT_FAILED
;
int
val2
[]
=
{
DumpStateOrd
::
CmvmiSetRestartOnErrorInsert
,
1
};
if
(
res
.
dumpStateOneNode
(
node
,
val2
,
2
))
return
NDBT_FAILED
;
res
.
startNodes
(
&
node
,
1
);
res
.
waitNodesStartPhase
(
&
node
,
1
,
2
);
pos
++
;
}
pos
=
0
;
}
if
(
res
.
waitNodesNoStart
(
&
node
,
1
))
return
NDBT_FAILED
;
res
.
startNodes
(
&
node
,
1
);
if
(
res
.
waitClusterStarted
())
return
NDBT_FAILED
;
return
NDBT_OK
;
}
NDBT_TESTSUITE
(
testNodeRestart
);
TESTCASE
(
"NoLoad"
,
"Test that one node at a time can be stopped and then restarted "
\
...
...
@@ -1452,6 +1505,9 @@ TESTCASE("Bug26457", ""){
TESTCASE
(
"Bug26481"
,
""
){
INITIALIZER
(
runBug26481
);
}
TESTCASE
(
"Bug27003"
,
""
){
INITIALIZER
(
runBug27003
);
}
NDBT_TESTSUITE_END
(
testNodeRestart
);
int
main
(
int
argc
,
const
char
**
argv
){
...
...
ndb/test/run-test/daily-basic-tests.txt
View file @
e2853bdd
...
...
@@ -425,6 +425,10 @@ max-time: 500
cmd: testScan
args: -n Bug24447 T1
max-time: 1000
cmd: testNodeRestart
args: -n Bug27003 T1
max-time: 500
cmd: testNodeRestart
args: -n Bug15587 T1
...
...
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