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
b26bbbb8
Commit
b26bbbb8
authored
May 18, 2007
by
jonas@perch.ndb.mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ndb - bug#28443
Make sure that data can not e left lingering in receive buffer
parent
f52b0e37
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
85 additions
and
18 deletions
+85
-18
ndb/src/common/transporter/Packer.cpp
ndb/src/common/transporter/Packer.cpp
+5
-0
ndb/src/common/transporter/TCP_Transporter.hpp
ndb/src/common/transporter/TCP_Transporter.hpp
+4
-0
ndb/src/common/transporter/TransporterRegistry.cpp
ndb/src/common/transporter/TransporterRegistry.cpp
+21
-18
ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
+17
-0
ndb/test/ndbapi/testNdbApi.cpp
ndb/test/ndbapi/testNdbApi.cpp
+34
-0
ndb/test/run-test/daily-basic-tests.txt
ndb/test/run-test/daily-basic-tests.txt
+4
-0
No files found.
ndb/src/common/transporter/Packer.cpp
View file @
b26bbbb8
...
...
@@ -21,7 +21,12 @@
#include <TransporterCallback.hpp>
#include <RefConvert.hpp>
#ifdef ERROR_INSERT
Uint32
MAX_RECEIVED_SIGNALS
=
1024
;
#else
#define MAX_RECEIVED_SIGNALS 1024
#endif
Uint32
TransporterRegistry
::
unpack
(
Uint32
*
readPtr
,
Uint32
sizeOfData
,
...
...
ndb/src/common/transporter/TCP_Transporter.hpp
View file @
b26bbbb8
...
...
@@ -100,6 +100,10 @@ private:
virtual
void
updateReceiveDataPtr
(
Uint32
bytesRead
);
virtual
Uint32
get_free_buffer
()
const
;
inline
bool
hasReceiveData
()
const
{
return
receiveBuffer
.
sizeOfData
>
0
;
}
protected:
/**
* Setup client/server and perform connect/accept
...
...
ndb/src/common/transporter/TransporterRegistry.cpp
View file @
b26bbbb8
...
...
@@ -807,6 +807,7 @@ TransporterRegistry::poll_OSE(Uint32 timeOutMillis)
Uint32
TransporterRegistry
::
poll_TCP
(
Uint32
timeOutMillis
)
{
bool
hasdata
=
false
;
if
(
false
&&
nTCPTransporters
==
0
)
{
tcpReadSelectReply
=
0
;
...
...
@@ -851,6 +852,7 @@ TransporterRegistry::poll_TCP(Uint32 timeOutMillis)
// Put the connected transporters in the socket read-set
FD_SET
(
socket
,
&
tcpReadset
);
}
hasdata
|=
t
->
hasReceiveData
();
}
// The highest socket value plus one
...
...
@@ -867,7 +869,7 @@ TransporterRegistry::poll_TCP(Uint32 timeOutMillis)
}
#endif
return
tcpReadSelectReply
;
return
tcpReadSelectReply
||
hasdata
;
}
#endif
...
...
@@ -902,8 +904,6 @@ TransporterRegistry::performReceive()
#endif
#ifdef NDB_TCP_TRANSPORTER
if
(
tcpReadSelectReply
>
0
)
{
for
(
int
i
=
0
;
i
<
nTCPTransporters
;
i
++
)
{
checkJobBuffer
();
...
...
@@ -911,10 +911,14 @@ TransporterRegistry::performReceive()
const
NodeId
nodeId
=
t
->
getRemoteNodeId
();
const
NDB_SOCKET_TYPE
socket
=
t
->
getSocket
();
if
(
is_connected
(
nodeId
)){
if
(
t
->
isConnected
()
&&
FD_ISSET
(
socket
,
&
tcpReadset
))
if
(
t
->
isConnected
())
{
if
(
FD_ISSET
(
socket
,
&
tcpReadset
))
{
const
int
receiveSize
=
t
->
doReceive
();
if
(
receiveSize
>
0
)
t
->
doReceive
();
}
if
(
t
->
hasReceiveData
())
{
Uint32
*
ptr
;
Uint32
sz
=
t
->
getReceiveData
(
&
ptr
);
...
...
@@ -924,7 +928,6 @@ TransporterRegistry::performReceive()
}
}
}
}
#endif
#ifdef NDB_SCI_TRANSPORTER
...
...
ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
View file @
b26bbbb8
...
...
@@ -135,6 +135,7 @@ Cmvmi::~Cmvmi()
#ifdef ERROR_INSERT
NodeBitmask
c_error_9000_nodes_mask
;
extern
Uint32
MAX_RECEIVED_SIGNALS
;
#endif
void
Cmvmi
::
execNDB_TAMPER
(
Signal
*
signal
)
...
...
@@ -164,6 +165,22 @@ void Cmvmi::execNDB_TAMPER(Signal* signal)
kill
(
getpid
(),
SIGABRT
);
}
#endif
#ifdef ERROR_INSERT
if
(
signal
->
theData
[
0
]
==
9003
)
{
if
(
MAX_RECEIVED_SIGNALS
<
1024
)
{
MAX_RECEIVED_SIGNALS
=
1024
;
}
else
{
MAX_RECEIVED_SIGNALS
=
rand
()
%
128
;
}
ndbout_c
(
"MAX_RECEIVED_SIGNALS: %d"
,
MAX_RECEIVED_SIGNALS
);
CLEAR_ERROR_INSERT_VALUE
;
}
#endif
}
//execNDB_TAMPER()
void
Cmvmi
::
execSET_LOGLEVELORD
(
Signal
*
signal
)
...
...
ndb/test/ndbapi/testNdbApi.cpp
View file @
b26bbbb8
...
...
@@ -1131,7 +1131,36 @@ int runBug_11133(NDBT_Context* ctx, NDBT_Step* step){
return
result
;
}
int
runBug28443
(
NDBT_Context
*
ctx
,
NDBT_Step
*
step
)
{
int
result
=
NDBT_OK
;
int
records
=
ctx
->
getNumRecords
();
NdbRestarter
restarter
;
restarter
.
insertErrorInAllNodes
(
9003
);
for
(
Uint32
i
=
0
;
i
<
ctx
->
getNumLoops
();
i
++
)
{
HugoTransactions
hugoTrans
(
*
ctx
->
getTab
());
if
(
hugoTrans
.
loadTable
(
GETNDB
(
step
),
records
,
2048
)
!=
0
)
{
result
=
NDBT_FAILED
;
goto
done
;
}
if
(
runClearTable
(
ctx
,
step
)
!=
0
)
{
result
=
NDBT_FAILED
;
goto
done
;
}
}
done:
restarter
.
insertErrorInAllNodes
(
9003
);
return
result
;
}
NDBT_TESTSUITE
(
testNdbApi
);
TESTCASE
(
"MaxNdb"
,
...
...
@@ -1212,6 +1241,11 @@ TESTCASE("Bug_11133",
INITIALIZER
(
runBug_11133
);
FINALIZER
(
runClearTable
);
}
TESTCASE
(
"Bug28443"
,
""
){
INITIALIZER
(
runBug28443
);
FINALIZER
(
runClearTable
);
}
NDBT_TESTSUITE_END
(
testNdbApi
);
int
main
(
int
argc
,
const
char
**
argv
){
...
...
ndb/test/run-test/daily-basic-tests.txt
View file @
b26bbbb8
...
...
@@ -606,6 +606,10 @@ max-time: 500
cmd: testNdbApi
args: -n Bug_11133 T1
max-time: 1000
cmd: testNdbApi
args: -n BugBug28443
#max-time: 500
#cmd: testInterpreter
#args: 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