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
5258da2a
Commit
5258da2a
authored
17 years ago
by
tomas@whalegate.ndb.mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug#29621 - ndb_mgmd can timeout logevent request, making it to fail
parent
2b489b89
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
30 deletions
+52
-30
storage/ndb/src/mgmsrv/MgmtSrvr.cpp
storage/ndb/src/mgmsrv/MgmtSrvr.cpp
+52
-30
No files found.
storage/ndb/src/mgmsrv/MgmtSrvr.cpp
View file @
5258da2a
...
@@ -119,7 +119,11 @@ operator<<(NdbOut& out, const LogLevel & ll)
...
@@ -119,7 +119,11 @@ operator<<(NdbOut& out, const LogLevel & ll)
void
void
MgmtSrvr
::
logLevelThreadRun
()
MgmtSrvr
::
logLevelThreadRun
()
{
{
while
(
!
_isStopThread
)
{
while
(
!
_isStopThread
)
{
Vector
<
NodeId
>
failed_started_nodes
;
Vector
<
EventSubscribeReq
>
failed_log_level_requests
;
/**
/**
* Handle started nodes
* Handle started nodes
*/
*/
...
@@ -145,13 +149,14 @@ MgmtSrvr::logLevelThreadRun()
...
@@ -145,13 +149,14 @@ MgmtSrvr::logLevelThreadRun()
if
(
setEventReportingLevelImpl
(
node
,
req
))
if
(
setEventReportingLevelImpl
(
node
,
req
))
{
{
ndbout_c
(
"setEventReportingLevelImpl(%d): failed"
,
node
);
failed_started_nodes
.
push_back
(
node
);
}
}
else
{
SetLogLevelOrd
ord
;
SetLogLevelOrd
ord
;
ord
=
m_nodeLogLevel
[
node
];
ord
=
m_nodeLogLevel
[
node
];
setNodeLogLevelImpl
(
node
,
ord
);
setNodeLogLevelImpl
(
node
,
ord
);
}
m_started_nodes
.
lock
();
m_started_nodes
.
lock
();
}
}
}
}
...
@@ -169,14 +174,17 @@ MgmtSrvr::logLevelThreadRun()
...
@@ -169,14 +174,17 @@ MgmtSrvr::logLevelThreadRun()
req
.
blockRef
=
_ownReference
;
req
.
blockRef
=
_ownReference
;
if
(
setEventReportingLevelImpl
(
0
,
req
))
if
(
setEventReportingLevelImpl
(
0
,
req
))
{
{
ndbout_c
(
"setEventReportingLevelImpl: failed 2!"
);
failed_log_level_requests
.
push_back
(
req
);
}
}
}
}
else
else
{
{
SetLogLevelOrd
ord
;
SetLogLevelOrd
ord
;
ord
=
req
;
ord
=
req
;
setNodeLogLevelImpl
(
req
.
blockRef
,
ord
);
if
(
setNodeLogLevelImpl
(
req
.
blockRef
,
ord
))
{
failed_log_level_requests
.
push_back
(
req
);
}
}
}
m_log_level_requests
.
lock
();
m_log_level_requests
.
lock
();
}
}
...
@@ -185,7 +193,28 @@ MgmtSrvr::logLevelThreadRun()
...
@@ -185,7 +193,28 @@ MgmtSrvr::logLevelThreadRun()
if
(
!
ERROR_INSERTED
(
10000
))
if
(
!
ERROR_INSERTED
(
10000
))
m_event_listner
.
check_listeners
();
m_event_listner
.
check_listeners
();
NdbSleep_MilliSleep
(
_logLevelThreadSleep
);
Uint32
sleeptime
=
_logLevelThreadSleep
;
if
(
failed_started_nodes
.
size
())
{
m_started_nodes
.
lock
();
for
(
Uint32
i
=
0
;
i
<
failed_started_nodes
.
size
();
i
++
)
m_started_nodes
.
push_back
(
failed_started_nodes
[
i
],
false
);
m_started_nodes
.
unlock
();
failed_started_nodes
.
clear
();
sleeptime
=
100
;
}
if
(
failed_log_level_requests
.
size
())
{
m_log_level_requests
.
lock
();
for
(
Uint32
i
=
0
;
i
<
failed_log_level_requests
.
size
();
i
++
)
m_log_level_requests
.
push_back
(
failed_log_level_requests
[
i
],
false
);
m_log_level_requests
.
unlock
();
failed_log_level_requests
.
clear
();
sleeptime
=
100
;
}
NdbSleep_MilliSleep
(
sleeptime
);
}
}
}
}
...
@@ -1535,7 +1564,6 @@ MgmtSrvr::setEventReportingLevelImpl(int nodeId_arg,
...
@@ -1535,7 +1564,6 @@ MgmtSrvr::setEventReportingLevelImpl(int nodeId_arg,
{
{
SignalSender
ss
(
theFacade
);
SignalSender
ss
(
theFacade
);
NdbNodeBitmask
nodes
;
NdbNodeBitmask
nodes
;
int
retries
=
30
;
nodes
.
clear
();
nodes
.
clear
();
while
(
1
)
while
(
1
)
{
{
...
@@ -1572,19 +1600,9 @@ MgmtSrvr::setEventReportingLevelImpl(int nodeId_arg,
...
@@ -1572,19 +1600,9 @@ MgmtSrvr::setEventReportingLevelImpl(int nodeId_arg,
continue
;
continue
;
}
}
// api_reg_conf not recevied yet, need to retry
// api_reg_conf not recevied yet, need to retry
break
;
}
}
if
(
nodeId
<=
max
)
{
if
(
--
retries
)
{
ss
.
unlock
();
NdbSleep_MilliSleep
(
100
);
continue
;
}
return
SEND_OR_RECEIVE_FAILED
;
return
SEND_OR_RECEIVE_FAILED
;
}
}
}
if
(
nodeId_arg
==
0
)
if
(
nodeId_arg
==
0
)
{
{
...
@@ -1607,6 +1625,10 @@ MgmtSrvr::setEventReportingLevelImpl(int nodeId_arg,
...
@@ -1607,6 +1625,10 @@ MgmtSrvr::setEventReportingLevelImpl(int nodeId_arg,
continue
;
// node is not connected, skip
continue
;
// node is not connected, skip
if
(
ss
.
sendSignal
(
nodeId
,
&
ssig
)
==
SEND_OK
)
if
(
ss
.
sendSignal
(
nodeId
,
&
ssig
)
==
SEND_OK
)
nodes
.
set
(
nodeId
);
nodes
.
set
(
nodeId
);
else
if
(
max
==
nodeId
)
{
return
SEND_OR_RECEIVE_FAILED
;
}
}
}
break
;
break
;
}
}
...
@@ -2988,8 +3010,8 @@ int MgmtSrvr::connect_to_self(void)
...
@@ -2988,8 +3010,8 @@ int MgmtSrvr::connect_to_self(void)
return
0
;
return
0
;
}
}
template
class
Vector
<
unsigned
short
>;
template
class
MutexVector
<
unsigned
short
>;
template
class
MutexVector
<
unsigned
short
>;
template
class
MutexVector
<
Ndb_mgmd_event_service
::
Event_listener
>;
template
class
MutexVector
<
Ndb_mgmd_event_service
::
Event_listener
>;
template
class
Vector
<
EventSubscribeReq
>;
template
class
MutexVector
<
EventSubscribeReq
>;
template
class
MutexVector
<
EventSubscribeReq
>;
This diff is collapsed.
Click to expand it.
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