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
85394329
Commit
85394329
authored
Aug 15, 2006
by
dli/root@dev3-76.dev.cn.tlan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug#19047, not start the event thread when ndb_mgm is running in executing (-e) thread.
parent
a0e70db3
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
80 additions
and
76 deletions
+80
-76
ndb/src/mgmclient/CommandInterpreter.cpp
ndb/src/mgmclient/CommandInterpreter.cpp
+76
-72
ndb/src/mgmclient/main.cpp
ndb/src/mgmclient/main.cpp
+2
-2
ndb/src/mgmclient/ndb_mgmclient.hpp
ndb/src/mgmclient/ndb_mgmclient.hpp
+2
-2
No files found.
ndb/src/mgmclient/CommandInterpreter.cpp
View file @
85394329
...
@@ -55,11 +55,11 @@ public:
...
@@ -55,11 +55,11 @@ public:
*
*
* @return true until quit/bye/exit has been typed
* @return true until quit/bye/exit has been typed
*/
*/
int
execute
(
const
char
*
_line
,
int
_try_reconnect
=-
1
,
int
*
error
=
0
);
int
execute
(
const
char
*
_line
,
int
_try_reconnect
=-
1
,
bool
interactive
=
1
,
int
*
error
=
0
);
private:
private:
void
printError
();
void
printError
();
int
execute_impl
(
const
char
*
_line
);
int
execute_impl
(
const
char
*
_line
,
bool
interactive
=
1
);
/**
/**
* Analyse the command line, after the first token.
* Analyse the command line, after the first token.
...
@@ -99,7 +99,7 @@ private:
...
@@ -99,7 +99,7 @@ private:
*/
*/
void
executeHelp
(
char
*
parameters
);
void
executeHelp
(
char
*
parameters
);
void
executeShow
(
char
*
parameters
);
void
executeShow
(
char
*
parameters
);
void
executeConnect
(
char
*
parameters
);
void
executeConnect
(
char
*
parameters
,
bool
interactive
);
void
executePurge
(
char
*
parameters
);
void
executePurge
(
char
*
parameters
);
int
executeShutdown
(
char
*
parameters
);
int
executeShutdown
(
char
*
parameters
);
void
executeRun
(
char
*
parameters
);
void
executeRun
(
char
*
parameters
);
...
@@ -137,7 +137,7 @@ public:
...
@@ -137,7 +137,7 @@ public:
void
executeCpc
(
char
*
parameters
);
void
executeCpc
(
char
*
parameters
);
public:
public:
bool
connect
();
bool
connect
(
bool
interactive
);
bool
disconnect
();
bool
disconnect
();
/**
/**
...
@@ -198,9 +198,9 @@ Ndb_mgmclient::~Ndb_mgmclient()
...
@@ -198,9 +198,9 @@ Ndb_mgmclient::~Ndb_mgmclient()
{
{
delete
m_cmd
;
delete
m_cmd
;
}
}
int
Ndb_mgmclient
::
execute
(
const
char
*
_line
,
int
_try_reconnect
,
int
*
error
)
int
Ndb_mgmclient
::
execute
(
const
char
*
_line
,
int
_try_reconnect
,
bool
interactive
,
int
*
error
)
{
{
return
m_cmd
->
execute
(
_line
,
_try_reconnect
,
error
);
return
m_cmd
->
execute
(
_line
,
_try_reconnect
,
interactive
,
error
);
}
}
int
int
Ndb_mgmclient
::
disconnect
()
Ndb_mgmclient
::
disconnect
()
...
@@ -246,7 +246,7 @@ extern "C" {
...
@@ -246,7 +246,7 @@ extern "C" {
#include <util/InputStream.hpp>
#include <util/InputStream.hpp>
#include <util/OutputStream.hpp>
#include <util/OutputStream.hpp>
int
Ndb_mgmclient
::
execute
(
int
argc
,
char
**
argv
,
int
_try_reconnect
,
int
*
error
)
int
Ndb_mgmclient
::
execute
(
int
argc
,
char
**
argv
,
int
_try_reconnect
,
bool
interactive
,
int
*
error
)
{
{
if
(
argc
<=
0
)
if
(
argc
<=
0
)
return
0
;
return
0
;
...
@@ -255,7 +255,7 @@ int Ndb_mgmclient::execute(int argc, char** argv, int _try_reconnect, int *error
...
@@ -255,7 +255,7 @@ int Ndb_mgmclient::execute(int argc, char** argv, int _try_reconnect, int *error
{
{
_line
.
appfmt
(
" %s"
,
argv
[
i
]);
_line
.
appfmt
(
" %s"
,
argv
[
i
]);
}
}
return
m_cmd
->
execute
(
_line
.
c_str
(),
_try_reconnect
,
error
);
return
m_cmd
->
execute
(
_line
.
c_str
(),
_try_reconnect
,
interactive
,
error
);
}
}
/*****************************************************************************
/*****************************************************************************
...
@@ -400,7 +400,7 @@ CommandInterpreter::CommandInterpreter(const char *_host,int verbose)
...
@@ -400,7 +400,7 @@ CommandInterpreter::CommandInterpreter(const char *_host,int verbose)
{
{
m_constr
=
_host
;
m_constr
=
_host
;
m_connected
=
false
;
m_connected
=
false
;
m_event_thread
=
0
;
m_event_thread
=
NULL
;
try_reconnect
=
0
;
try_reconnect
=
0
;
m_print_mutex
=
NdbMutex_Create
();
m_print_mutex
=
NdbMutex_Create
();
#ifdef HAVE_GLOBAL_REPLICATION
#ifdef HAVE_GLOBAL_REPLICATION
...
@@ -495,7 +495,7 @@ event_thread_run(void* p)
...
@@ -495,7 +495,7 @@ event_thread_run(void* p)
}
}
bool
bool
CommandInterpreter
::
connect
()
CommandInterpreter
::
connect
(
bool
interactive
)
{
{
DBUG_ENTER
(
"CommandInterpreter::connect"
);
DBUG_ENTER
(
"CommandInterpreter::connect"
);
...
@@ -507,10 +507,12 @@ CommandInterpreter::connect()
...
@@ -507,10 +507,12 @@ CommandInterpreter::connect()
ndbout_c
(
"Cannot create handle to management server."
);
ndbout_c
(
"Cannot create handle to management server."
);
exit
(
-
1
);
exit
(
-
1
);
}
}
m_mgmsrv2
=
ndb_mgm_create_handle
();
if
(
interactive
)
{
if
(
m_mgmsrv2
==
NULL
)
{
m_mgmsrv2
=
ndb_mgm_create_handle
();
ndbout_c
(
"Cannot create 2:nd handle to management server."
);
if
(
m_mgmsrv2
==
NULL
)
{
exit
(
-
1
);
ndbout_c
(
"Cannot create 2:nd handle to management server."
);
exit
(
-
1
);
}
}
}
if
(
ndb_mgm_set_connectstring
(
m_mgmsrv
,
m_constr
))
if
(
ndb_mgm_set_connectstring
(
m_mgmsrv
,
m_constr
))
...
@@ -524,62 +526,64 @@ CommandInterpreter::connect()
...
@@ -524,62 +526,64 @@ CommandInterpreter::connect()
const
char
*
host
=
ndb_mgm_get_connected_host
(
m_mgmsrv
);
const
char
*
host
=
ndb_mgm_get_connected_host
(
m_mgmsrv
);
unsigned
port
=
ndb_mgm_get_connected_port
(
m_mgmsrv
);
unsigned
port
=
ndb_mgm_get_connected_port
(
m_mgmsrv
);
BaseString
constr
;
if
(
interactive
)
{
constr
.
assfmt
(
"%s:%d"
,
host
,
port
);
BaseString
constr
;
if
(
!
ndb_mgm_set_connectstring
(
m_mgmsrv2
,
constr
.
c_str
())
&&
constr
.
assfmt
(
"%s:%d"
,
host
,
port
);
!
ndb_mgm_connect
(
m_mgmsrv2
,
try_reconnect
-
1
,
5
,
1
))
if
(
!
ndb_mgm_set_connectstring
(
m_mgmsrv2
,
constr
.
c_str
())
&&
{
!
ndb_mgm_connect
(
m_mgmsrv2
,
try_reconnect
-
1
,
5
,
1
))
DBUG_PRINT
(
"info"
,(
"2:ndb connected to Management Server ok at: %s:%d"
,
host
,
port
));
assert
(
m_event_thread
==
0
);
assert
(
do_event_thread
==
0
);
do_event_thread
=
0
;
struct
event_thread_param
p
;
p
.
m
=
&
m_mgmsrv2
;
p
.
p
=
&
m_print_mutex
;
m_event_thread
=
NdbThread_Create
(
event_thread_run
,
(
void
**
)
&
p
,
32768
,
"CommandInterpreted_event_thread"
,
NDB_THREAD_PRIO_LOW
);
if
(
m_event_thread
!=
0
)
{
{
DBUG_PRINT
(
"info"
,(
"Thread created ok, waiting for started..."
));
DBUG_PRINT
(
"info"
,(
"2:ndb connected to Management Server ok at: %s:%d"
,
int
iter
=
1000
;
// try for 30 seconds
host
,
port
));
while
(
do_event_thread
==
0
&&
assert
(
m_event_thread
==
NULL
);
iter
--
>
0
)
assert
(
do_event_thread
==
0
);
NdbSleep_MilliSleep
(
30
);
}
if
(
m_event_thread
==
0
||
do_event_thread
==
0
||
do_event_thread
==
-
1
)
{
DBUG_PRINT
(
"info"
,(
"Warning, event thread startup failed, "
"degraded printouts as result, errno=%d"
,
errno
));
printf
(
"Warning, event thread startup failed, "
"degraded printouts as result, errno=%d
\n
"
,
errno
);
do_event_thread
=
0
;
do_event_thread
=
0
;
struct
event_thread_param
p
;
p
.
m
=
&
m_mgmsrv2
;
p
.
p
=
&
m_print_mutex
;
m_event_thread
=
NdbThread_Create
(
event_thread_run
,
(
void
**
)
&
p
,
32768
,
"CommandInterpreted_event_thread"
,
NDB_THREAD_PRIO_LOW
);
if
(
m_event_thread
)
if
(
m_event_thread
)
{
{
void
*
res
;
DBUG_PRINT
(
"info"
,(
"Thread created ok, waiting for started..."
));
NdbThread_WaitFor
(
m_event_thread
,
&
res
);
int
iter
=
1000
;
// try for 30 seconds
NdbThread_Destroy
(
&
m_event_thread
);
while
(
do_event_thread
==
0
&&
iter
--
>
0
)
NdbSleep_MilliSleep
(
30
);
}
if
(
m_event_thread
==
NULL
||
do_event_thread
==
0
||
do_event_thread
==
-
1
)
{
DBUG_PRINT
(
"info"
,(
"Warning, event thread startup failed, "
"degraded printouts as result, errno=%d"
,
errno
));
printf
(
"Warning, event thread startup failed, "
"degraded printouts as result, errno=%d
\n
"
,
errno
);
do_event_thread
=
0
;
if
(
m_event_thread
)
{
void
*
res
;
NdbThread_WaitFor
(
m_event_thread
,
&
res
);
NdbThread_Destroy
(
&
m_event_thread
);
}
ndb_mgm_disconnect
(
m_mgmsrv2
);
}
}
ndb_mgm_disconnect
(
m_mgmsrv2
);
}
}
}
else
else
{
{
DBUG_PRINT
(
"warning"
,
DBUG_PRINT
(
"warning"
,
(
"Could not do 2:nd connect to mgmtserver for event listening"
));
(
"Could not do 2:nd connect to mgmtserver for event listening"
));
DBUG_PRINT
(
"info"
,
(
"code: %d, msg: %s"
,
DBUG_PRINT
(
"info"
,
(
"code: %d, msg: %s"
,
ndb_mgm_get_latest_error
(
m_mgmsrv2
)
,
ndb_mgm_get_latest_error
(
m_mgmsrv2
),
ndb_mgm_get_latest_error_msg
(
m_mgmsrv2
)));
ndb_mgm_get_latest_error_msg
(
m_mgmsrv2
))
);
printf
(
"Warning, event connect failed, degraded printouts as result
\n
"
);
printf
(
"Warning, event connect failed, degraded printouts as result
\n
"
);
printf
(
"code: %d, msg: %s
\n
"
,
printf
(
"code: %d, msg: %s
\n
"
,
ndb_mgm_get_latest_error
(
m_mgmsrv2
)
,
ndb_mgm_get_latest_error
(
m_mgmsrv2
),
ndb_mgm_get_latest_error_msg
(
m_mgmsrv2
));
ndb_mgm_get_latest_error_msg
(
m_mgmsrv2
));
}
}
}
m_connected
=
true
;
m_connected
=
true
;
DBUG_PRINT
(
"info"
,(
"Connected to Management Server at: %s:%d"
,
host
,
port
));
DBUG_PRINT
(
"info"
,(
"Connected to Management Server at: %s:%d"
,
host
,
port
));
...
@@ -602,7 +606,7 @@ CommandInterpreter::disconnect()
...
@@ -602,7 +606,7 @@ CommandInterpreter::disconnect()
do_event_thread
=
0
;
do_event_thread
=
0
;
NdbThread_WaitFor
(
m_event_thread
,
&
res
);
NdbThread_WaitFor
(
m_event_thread
,
&
res
);
NdbThread_Destroy
(
&
m_event_thread
);
NdbThread_Destroy
(
&
m_event_thread
);
m_event_thread
=
0
;
m_event_thread
=
NULL
;
ndb_mgm_destroy_handle
(
&
m_mgmsrv2
);
ndb_mgm_destroy_handle
(
&
m_mgmsrv2
);
}
}
if
(
m_connected
)
if
(
m_connected
)
...
@@ -618,11 +622,11 @@ CommandInterpreter::disconnect()
...
@@ -618,11 +622,11 @@ CommandInterpreter::disconnect()
int
int
CommandInterpreter
::
execute
(
const
char
*
_line
,
int
_try_reconnect
,
CommandInterpreter
::
execute
(
const
char
*
_line
,
int
_try_reconnect
,
int
*
error
)
bool
interactive
,
int
*
error
)
{
{
if
(
_try_reconnect
>=
0
)
if
(
_try_reconnect
>=
0
)
try_reconnect
=
_try_reconnect
;
try_reconnect
=
_try_reconnect
;
int
result
=
execute_impl
(
_line
);
int
result
=
execute_impl
(
_line
,
interactive
);
if
(
error
)
if
(
error
)
*
error
=
m_error
;
*
error
=
m_error
;
...
@@ -637,7 +641,7 @@ invalid_command(const char *cmd)
...
@@ -637,7 +641,7 @@ invalid_command(const char *cmd)
}
}
int
int
CommandInterpreter
::
execute_impl
(
const
char
*
_line
)
CommandInterpreter
::
execute_impl
(
const
char
*
_line
,
bool
interactive
)
{
{
DBUG_ENTER
(
"CommandInterpreter::execute_impl"
);
DBUG_ENTER
(
"CommandInterpreter::execute_impl"
);
DBUG_PRINT
(
"enter"
,(
"line=
\"
%s
\"
"
,
_line
));
DBUG_PRINT
(
"enter"
,(
"line=
\"
%s
\"
"
,
_line
));
...
@@ -686,7 +690,7 @@ CommandInterpreter::execute_impl(const char *_line)
...
@@ -686,7 +690,7 @@ CommandInterpreter::execute_impl(const char *_line)
DBUG_RETURN
(
true
);
DBUG_RETURN
(
true
);
}
}
else
if
(
strcasecmp
(
firstToken
,
"CONNECT"
)
==
0
)
{
else
if
(
strcasecmp
(
firstToken
,
"CONNECT"
)
==
0
)
{
executeConnect
(
allAfterFirstToken
);
executeConnect
(
allAfterFirstToken
,
interactive
);
DBUG_RETURN
(
true
);
DBUG_RETURN
(
true
);
}
}
else
if
(
strcasecmp
(
firstToken
,
"SLEEP"
)
==
0
)
{
else
if
(
strcasecmp
(
firstToken
,
"SLEEP"
)
==
0
)
{
...
@@ -701,7 +705,7 @@ CommandInterpreter::execute_impl(const char *_line)
...
@@ -701,7 +705,7 @@ CommandInterpreter::execute_impl(const char *_line)
DBUG_RETURN
(
false
);
DBUG_RETURN
(
false
);
}
}
if
(
!
connect
())
if
(
!
connect
(
interactive
))
DBUG_RETURN
(
true
);
DBUG_RETURN
(
true
);
if
(
strcasecmp
(
firstToken
,
"SHOW"
)
==
0
)
{
if
(
strcasecmp
(
firstToken
,
"SHOW"
)
==
0
)
{
...
@@ -1312,13 +1316,13 @@ CommandInterpreter::executeShow(char* parameters)
...
@@ -1312,13 +1316,13 @@ CommandInterpreter::executeShow(char* parameters)
}
}
void
void
CommandInterpreter
::
executeConnect
(
char
*
parameters
)
CommandInterpreter
::
executeConnect
(
char
*
parameters
,
bool
interactive
)
{
{
disconnect
();
disconnect
();
if
(
!
emptyString
(
parameters
))
{
if
(
!
emptyString
(
parameters
))
{
m_constr
=
BaseString
(
parameters
).
trim
().
c_str
();
m_constr
=
BaseString
(
parameters
).
trim
().
c_str
();
}
}
connect
();
connect
(
interactive
);
}
}
//*****************************************************************************
//*****************************************************************************
...
...
ndb/src/mgmclient/main.cpp
View file @
85394329
...
@@ -121,7 +121,7 @@ read_and_execute(int _try_reconnect)
...
@@ -121,7 +121,7 @@ read_and_execute(int _try_reconnect)
line_read
=
strdup
(
linebuffer
);
line_read
=
strdup
(
linebuffer
);
}
}
#endif
#endif
return
com
->
execute
(
line_read
,
_try_reconnect
);
return
com
->
execute
(
line_read
,
_try_reconnect
,
1
);
}
}
int
main
(
int
argc
,
char
**
argv
){
int
main
(
int
argc
,
char
**
argv
){
...
@@ -163,7 +163,7 @@ int main(int argc, char** argv){
...
@@ -163,7 +163,7 @@ int main(int argc, char** argv){
}
}
else
else
{
{
com
->
execute
(
opt_execute_str
,
_try_reconnect
,
&
ret
);
com
->
execute
(
opt_execute_str
,
_try_reconnect
,
0
,
&
ret
);
}
}
delete
com
;
delete
com
;
...
...
ndb/src/mgmclient/ndb_mgmclient.hpp
View file @
85394329
...
@@ -23,8 +23,8 @@ class Ndb_mgmclient
...
@@ -23,8 +23,8 @@ class Ndb_mgmclient
public:
public:
Ndb_mgmclient
(
const
char
*
,
int
verbose
=
0
);
Ndb_mgmclient
(
const
char
*
,
int
verbose
=
0
);
~
Ndb_mgmclient
();
~
Ndb_mgmclient
();
int
execute
(
const
char
*
_line
,
int
_try_reconnect
=-
1
,
int
*
error
=
0
);
int
execute
(
const
char
*
_line
,
int
_try_reconnect
=-
1
,
bool
interactive
=
1
,
int
*
error
=
0
);
int
execute
(
int
argc
,
char
**
argv
,
int
_try_reconnect
=-
1
,
int
*
error
=
0
);
int
execute
(
int
argc
,
char
**
argv
,
int
_try_reconnect
=-
1
,
bool
interactive
=
1
,
int
*
error
=
0
);
int
disconnect
();
int
disconnect
();
private:
private:
CommandInterpreter
*
m_cmd
;
CommandInterpreter
*
m_cmd
;
...
...
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