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
facaf4f7
Commit
facaf4f7
authored
Nov 26, 2004
by
tomas@poseidon.ndb.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1
into poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-clean
parents
14b60dfc
8c3144c1
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
81 additions
and
59 deletions
+81
-59
ndb/src/mgmapi/mgmapi.cpp
ndb/src/mgmapi/mgmapi.cpp
+17
-5
ndb/src/mgmclient/CommandInterpreter.cpp
ndb/src/mgmclient/CommandInterpreter.cpp
+51
-46
ndb/src/mgmclient/main.cpp
ndb/src/mgmclient/main.cpp
+12
-7
ndb/src/mgmclient/ndb_mgmclient.hpp
ndb/src/mgmclient/ndb_mgmclient.hpp
+1
-1
No files found.
ndb/src/mgmapi/mgmapi.cpp
View file @
facaf4f7
...
...
@@ -379,18 +379,30 @@ ndb_mgm_connect(NdbMgmHandle handle, int no_retries,
setError
(
handle
,
NDB_MGM_COULD_NOT_CONNECT_TO_SOCKET
,
__LINE__
,
"Unable to connect with connect string: %s"
,
cfg
.
makeConnectString
(
buf
,
sizeof
(
buf
)));
if
(
verbose
==
-
2
)
ndbout
<<
", failed."
<<
endl
;
return
-
1
;
}
if
(
verbose
==
-
1
)
{
ndbout
<<
"retrying every "
<<
retry_delay_in_seconds
<<
" seconds:"
;
ndbout
<<
"Retrying every "
<<
retry_delay_in_seconds
<<
" seconds"
;
if
(
no_retries
>
0
)
ndbout
<<
". Attempts left:"
;
else
ndbout
<<
", until connected."
;;
ndbout
<<
flush
;
verbose
=
-
2
;
}
NdbSleep_SecSleep
(
retry_delay_in_seconds
);
if
(
verbose
==
-
2
)
{
ndbout
<<
" "
<<
no_retries
;
if
(
no_retries
>
0
)
{
if
(
verbose
==
-
2
)
{
ndbout
<<
" "
<<
no_retries
;
ndbout
<<
flush
;
}
no_retries
--
;
}
no_retries
--
;
NdbSleep_SecSleep
(
retry_delay_in_seconds
)
;
}
if
(
verbose
==
-
2
)
ndbout
<<
endl
;
handle
->
cfg_i
=
i
;
...
...
ndb/src/mgmclient/CommandInterpreter.cpp
View file @
facaf4f7
...
...
@@ -44,7 +44,7 @@ class CommandInterpreter {
* Constructor
* @param mgmtSrvr: Management server to use when executing commands
*/
CommandInterpreter
(
const
char
*
);
CommandInterpreter
(
const
char
*
,
int
verbose
);
~
CommandInterpreter
();
/**
...
...
@@ -94,6 +94,7 @@ class CommandInterpreter {
*/
void
executeHelp
(
char
*
parameters
);
void
executeShow
(
char
*
parameters
);
void
executeConnect
(
char
*
parameters
);
void
executePurge
(
char
*
parameters
);
void
executeShutdown
(
char
*
parameters
);
void
executeRun
(
char
*
parameters
);
...
...
@@ -153,6 +154,7 @@ class CommandInterpreter {
NdbMgmHandle
m_mgmsrv
;
bool
connected
;
int
m_verbose
;
int
try_reconnect
;
#ifdef HAVE_GLOBAL_REPLICATION
NdbRepHandle
m_repserver
;
...
...
@@ -169,9 +171,9 @@ class CommandInterpreter {
#include "ndb_mgmclient.hpp"
#include "ndb_mgmclient.h"
Ndb_mgmclient
::
Ndb_mgmclient
(
const
char
*
host
)
Ndb_mgmclient
::
Ndb_mgmclient
(
const
char
*
host
,
int
verbose
)
{
m_cmd
=
new
CommandInterpreter
(
host
);
m_cmd
=
new
CommandInterpreter
(
host
,
verbose
);
}
Ndb_mgmclient
::~
Ndb_mgmclient
()
{
...
...
@@ -275,6 +277,7 @@ static const char* helpText =
"REP CONNECT <host:port> Connect to REP server on host:port
\n
"
#endif
"PURGE STALE SESSIONS Reset reserved nodeid's in the mgmt server
\n
"
"CONNECT Connect to management server (reconnect if already connected)
\n
"
"QUIT Quit management client
\n
"
;
...
...
@@ -373,7 +376,8 @@ convert(const char* s, int& val) {
/*
* Constructor
*/
CommandInterpreter
::
CommandInterpreter
(
const
char
*
_host
)
CommandInterpreter
::
CommandInterpreter
(
const
char
*
_host
,
int
verbose
)
:
m_verbose
(
verbose
)
{
m_mgmsrv
=
ndb_mgm_create_handle
();
if
(
m_mgmsrv
==
NULL
)
{
...
...
@@ -437,7 +441,15 @@ CommandInterpreter::connect()
{
if
(
!
connected
)
{
if
(
!
ndb_mgm_connect
(
m_mgmsrv
,
try_reconnect
-
1
,
5
,
1
))
{
connected
=
true
;
if
(
m_verbose
)
{
printf
(
"Connected to Management Server at: %s:%d
\n
"
,
ndb_mgm_get_connected_host
(
m_mgmsrv
),
ndb_mgm_get_connected_port
(
m_mgmsrv
));
}
}
}
return
connected
;
}
...
...
@@ -445,7 +457,7 @@ CommandInterpreter::connect()
bool
CommandInterpreter
::
disconnect
()
{
if
(
ndb_mgm_disconnect
(
m_mgmsrv
)
==
-
1
)
{
if
(
connected
&&
(
ndb_mgm_disconnect
(
m_mgmsrv
)
==
-
1
)
)
{
ndbout_c
(
"Could not disconnect from management server"
);
printError
();
}
...
...
@@ -459,18 +471,21 @@ CommandInterpreter::disconnect()
int
CommandInterpreter
::
execute
(
const
char
*
_line
,
int
_try_reconnect
)
{
DBUG_ENTER
(
"CommandInterpreter::execute"
);
DBUG_PRINT
(
"info"
,(
"line=
\"
%s
\"
"
,
_line
));
if
(
_try_reconnect
>=
0
)
try_reconnect
=
_try_reconnect
;
char
*
line
;
if
(
_line
==
NULL
)
{
// ndbout << endl;
return
false
;
DBUG_RETURN
(
false
)
;
}
line
=
my_strdup
(
_line
,
MYF
(
MY_WME
));
My_auto_ptr
<
char
>
ptr
(
line
);
if
(
emptyString
(
line
))
{
return
true
;
DBUG_RETURN
(
true
)
;
}
for
(
unsigned
int
i
=
0
;
i
<
strlen
(
line
);
++
i
)
{
...
...
@@ -484,41 +499,49 @@ CommandInterpreter::execute(const char *_line, int _try_reconnect)
if
(
strcmp
(
firstToken
,
"HELP"
)
==
0
||
strcmp
(
firstToken
,
"?"
)
==
0
)
{
executeHelp
(
allAfterFirstToken
);
return
true
;
DBUG_RETURN
(
true
);
}
else
if
(
strcmp
(
firstToken
,
"CONNECT"
)
==
0
)
{
executeConnect
(
allAfterFirstToken
);
DBUG_RETURN
(
true
);
}
else
if
(
strcmp
(
firstToken
,
"SHOW"
)
==
0
)
{
if
(
!
connect
())
DBUG_RETURN
(
true
);
if
(
strcmp
(
firstToken
,
"SHOW"
)
==
0
)
{
executeShow
(
allAfterFirstToken
);
return
true
;
DBUG_RETURN
(
true
)
;
}
else
if
(
strcmp
(
firstToken
,
"SHUTDOWN"
)
==
0
)
{
executeShutdown
(
allAfterFirstToken
);
return
true
;
DBUG_RETURN
(
true
)
;
}
else
if
(
strcmp
(
firstToken
,
"CLUSTERLOG"
)
==
0
){
executeClusterLog
(
allAfterFirstToken
);
return
true
;
DBUG_RETURN
(
true
)
;
}
else
if
(
strcmp
(
firstToken
,
"START"
)
==
0
&&
allAfterFirstToken
!=
NULL
&&
strncmp
(
allAfterFirstToken
,
"BACKUP"
,
sizeof
(
"BACKUP"
)
-
1
)
==
0
){
executeStartBackup
(
allAfterFirstToken
);
return
true
;
DBUG_RETURN
(
true
)
;
}
else
if
(
strcmp
(
firstToken
,
"ABORT"
)
==
0
&&
allAfterFirstToken
!=
NULL
&&
strncmp
(
allAfterFirstToken
,
"BACKUP"
,
sizeof
(
"BACKUP"
)
-
1
)
==
0
){
executeAbortBackup
(
allAfterFirstToken
);
return
true
;
DBUG_RETURN
(
true
)
;
}
else
if
(
strcmp
(
firstToken
,
"PURGE"
)
==
0
)
{
executePurge
(
allAfterFirstToken
);
return
true
;
DBUG_RETURN
(
true
)
;
}
#ifdef HAVE_GLOBAL_REPLICATION
else
if
(
strcmp
(
firstToken
,
"REPLICATION"
)
==
0
||
strcmp
(
firstToken
,
"REP"
)
==
0
)
{
executeRep
(
allAfterFirstToken
);
return
true
;
DBUG_RETURN
(
true
)
;
}
#endif // HAVE_GLOBAL_REPLICATION
else
if
(
strcmp
(
firstToken
,
"ENTER"
)
==
0
&&
...
...
@@ -526,14 +549,14 @@ CommandInterpreter::execute(const char *_line, int _try_reconnect)
strncmp
(
allAfterFirstToken
,
"SINGLE USER MODE "
,
sizeof
(
"SINGLE USER MODE"
)
-
1
)
==
0
){
executeEnterSingleUser
(
allAfterFirstToken
);
return
true
;
DBUG_RETURN
(
true
)
;
}
else
if
(
strcmp
(
firstToken
,
"EXIT"
)
==
0
&&
allAfterFirstToken
!=
NULL
&&
strncmp
(
allAfterFirstToken
,
"SINGLE USER MODE "
,
sizeof
(
"SINGLE USER MODE"
)
-
1
)
==
0
){
executeExitSingleUser
(
allAfterFirstToken
);
return
true
;
DBUG_RETURN
(
true
)
;
}
else
if
(
strcmp
(
firstToken
,
"ALL"
)
==
0
)
{
analyseAfterFirstToken
(
-
1
,
allAfterFirstToken
);
...
...
@@ -542,7 +565,7 @@ CommandInterpreter::execute(const char *_line, int _try_reconnect)
strcmp
(
firstToken
,
"EXIT"
)
==
0
||
strcmp
(
firstToken
,
"BYE"
)
==
0
)
&&
allAfterFirstToken
==
NULL
){
return
false
;
DBUG_RETURN
(
false
)
;
}
else
{
/**
* First token should be a digit, node ID
...
...
@@ -552,18 +575,18 @@ CommandInterpreter::execute(const char *_line, int _try_reconnect)
if
(
!
convert
(
firstToken
,
nodeId
))
{
ndbout
<<
"Invalid command: "
<<
line
<<
endl
;
ndbout
<<
"Type HELP for help."
<<
endl
<<
endl
;
return
true
;
DBUG_RETURN
(
true
)
;
}
if
(
nodeId
<
0
)
{
ndbout
<<
"Invalid node ID: "
<<
firstToken
<<
"."
<<
endl
;
return
true
;
DBUG_RETURN
(
true
)
;
}
analyseAfterFirstToken
(
nodeId
,
allAfterFirstToken
);
}
return
true
;
DBUG_RETURN
(
true
)
;
}
...
...
@@ -692,7 +715,6 @@ CommandInterpreter::executeForAll(const char * cmd, ExecuteFunction fun,
ndbout_c
(
"Trying to start all nodes of system."
);
ndbout_c
(
"Use ALL STATUS to see the system start-up phases."
);
}
else
{
connect
();
struct
ndb_mgm_cluster_state
*
cl
=
ndb_mgm_get_status
(
m_mgmsrv
);
if
(
cl
==
0
){
ndbout_c
(
"Unable get status from management server"
);
...
...
@@ -826,8 +848,6 @@ CommandInterpreter::executeHelp(char* parameters)
void
CommandInterpreter
::
executeShutdown
(
char
*
parameters
)
{
connect
();
ndb_mgm_cluster_state
*
state
=
ndb_mgm_get_status
(
m_mgmsrv
);
if
(
state
==
NULL
)
{
ndbout_c
(
"Could not get status"
);
...
...
@@ -979,7 +999,6 @@ CommandInterpreter::executePurge(char* parameters)
int
i
;
char
*
str
;
connect
();
if
(
ndb_mgm_purge_stale_sessions
(
m_mgmsrv
,
&
str
))
{
ndbout_c
(
"Command failed"
);
...
...
@@ -999,7 +1018,6 @@ void
CommandInterpreter
::
executeShow
(
char
*
parameters
)
{
int
i
;
connect
();
if
(
emptyString
(
parameters
))
{
ndbout
<<
"Cluster Configuration"
<<
endl
<<
"---------------------"
<<
endl
;
...
...
@@ -1087,6 +1105,12 @@ CommandInterpreter::executeShow(char* parameters)
}
}
void
CommandInterpreter
::
executeConnect
(
char
*
parameters
)
{
disconnect
();
connect
();
}
//*****************************************************************************
//*****************************************************************************
...
...
@@ -1094,7 +1118,6 @@ void
CommandInterpreter
::
executeClusterLog
(
char
*
parameters
)
{
int
i
;
connect
();
if
(
parameters
!=
0
&&
strlen
(
parameters
)
!=
0
)
{
enum
ndb_mgm_clusterlog_level
severity
=
NDB_MGM_CLUSTERLOG_ALL
;
int
isOk
=
true
;
...
...
@@ -1240,7 +1263,6 @@ CommandInterpreter::executeClusterLog(char* parameters)
void
CommandInterpreter
::
executeStop
(
int
processId
,
const
char
*
,
bool
all
)
{
connect
();
int
result
=
0
;
if
(
all
)
{
result
=
ndb_mgm_stop
(
m_mgmsrv
,
0
,
0
);
...
...
@@ -1262,7 +1284,6 @@ CommandInterpreter::executeStop(int processId, const char *, bool all)
void
CommandInterpreter
::
executeEnterSingleUser
(
char
*
parameters
)
{
connect
();
strtok
(
parameters
,
" "
);
struct
ndb_mgm_reply
reply
;
char
*
id
=
strtok
(
NULL
,
" "
);
...
...
@@ -1289,7 +1310,6 @@ CommandInterpreter::executeEnterSingleUser(char* parameters)
void
CommandInterpreter
::
executeExitSingleUser
(
char
*
parameters
)
{
connect
();
int
result
=
ndb_mgm_exit_single_user
(
m_mgmsrv
,
0
);
if
(
result
!=
0
)
{
ndbout_c
(
"Exiting single user mode failed."
);
...
...
@@ -1304,7 +1324,6 @@ void
CommandInterpreter
::
executeStart
(
int
processId
,
const
char
*
parameters
,
bool
all
)
{
connect
();
int
result
;
if
(
all
)
{
result
=
ndb_mgm_start
(
m_mgmsrv
,
0
,
0
);
...
...
@@ -1328,7 +1347,6 @@ void
CommandInterpreter
::
executeRestart
(
int
processId
,
const
char
*
parameters
,
bool
all
)
{
connect
();
int
result
;
int
nostart
=
0
;
int
initialstart
=
0
;
...
...
@@ -1378,7 +1396,6 @@ CommandInterpreter::executeDumpState(int processId, const char* parameters,
ndbout
<<
"Expected argument"
<<
endl
;
return
;
}
connect
();
Uint32
no
=
0
;
int
pars
[
25
];
...
...
@@ -1418,7 +1435,6 @@ CommandInterpreter::executeStatus(int processId,
return
;
}
connect
();
ndb_mgm_node_status
status
;
Uint32
startPhase
,
version
;
bool
system
;
...
...
@@ -1469,7 +1485,6 @@ void
CommandInterpreter
::
executeLogLevel
(
int
processId
,
const
char
*
parameters
,
bool
all
)
{
connect
();
(
void
)
all
;
BaseString
tmp
(
parameters
);
...
...
@@ -1525,7 +1540,6 @@ void CommandInterpreter::executeError(int processId,
return
;
}
connect
();
// Copy parameters since strtok will modify it
char
*
newpar
=
my_strdup
(
parameters
,
MYF
(
MY_WME
));
My_auto_ptr
<
char
>
ap1
(
newpar
);
...
...
@@ -1589,7 +1603,6 @@ void
CommandInterpreter
::
executeLog
(
int
processId
,
const
char
*
parameters
,
bool
all
)
{
connect
();
struct
ndb_mgm_reply
reply
;
Vector
<
const
char
*>
blocks
;
if
(
!
parseBlockSpecification
(
parameters
,
blocks
))
{
...
...
@@ -1657,7 +1670,6 @@ CommandInterpreter::executeTestOn(int processId,
ndbout
<<
"No parameters expected to this command."
<<
endl
;
return
;
}
connect
();
struct
ndb_mgm_reply
reply
;
int
result
=
ndb_mgm_start_signallog
(
m_mgmsrv
,
processId
,
&
reply
);
if
(
result
!=
0
)
{
...
...
@@ -1676,7 +1688,6 @@ CommandInterpreter::executeTestOff(int processId,
ndbout
<<
"No parameters expected to this command."
<<
endl
;
return
;
}
connect
();
struct
ndb_mgm_reply
reply
;
int
result
=
ndb_mgm_stop_signallog
(
m_mgmsrv
,
processId
,
&
reply
);
if
(
result
!=
0
)
{
...
...
@@ -1798,8 +1809,6 @@ CommandInterpreter::executeEventReporting(int processId,
ndbout
<<
"Expected argument"
<<
endl
;
return
;
}
connect
();
BaseString
tmp
(
parameters
);
Vector
<
BaseString
>
spec
;
tmp
.
split
(
spec
,
"="
);
...
...
@@ -1850,7 +1859,6 @@ CommandInterpreter::executeEventReporting(int processId,
void
CommandInterpreter
::
executeStartBackup
(
char
*
/*parameters*/
)
{
connect
();
struct
ndb_mgm_reply
reply
;
unsigned
int
backupId
;
...
...
@@ -1897,8 +1905,6 @@ CommandInterpreter::executeStartBackup(char* /*parameters*/)
void
CommandInterpreter
::
executeAbortBackup
(
char
*
parameters
)
{
connect
();
strtok
(
parameters
,
" "
);
struct
ndb_mgm_reply
reply
;
char
*
id
=
strtok
(
NULL
,
"
\0
"
);
...
...
@@ -1952,7 +1958,6 @@ CommandInterpreter::executeRep(char* parameters)
return
;
}
connect
();
char
*
line
=
my_strdup
(
parameters
,
MYF
(
MY_WME
));
My_auto_ptr
<
char
>
ap1
((
char
*
)
line
);
char
*
firstToken
=
strtok
(
line
,
" "
);
...
...
ndb/src/mgmclient/main.cpp
View file @
facaf4f7
...
...
@@ -56,17 +56,18 @@ handler(int sig){
}
}
static
const
char
default_prompt
[]
=
"ndb_mgm> "
;
static
unsigned
_try_reconnect
;
static
char
*
opt_connect_str
=
0
;
static
const
char
*
prompt
=
default_prompt
;
static
struct
my_option
my_long_options
[]
=
{
NDB_STD_OPTS
(
"ndb_mgm"
),
{
"try-reconnect"
,
't'
,
"Specify number of
retries for connecting to ndb_mgmd, default infinite
"
,
"Specify number of
tries for connecting to ndb_mgmd (0 = infinite)
"
,
(
gptr
*
)
&
_try_reconnect
,
(
gptr
*
)
&
_try_reconnect
,
0
,
GET_UINT
,
REQUIRED_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
GET_UINT
,
REQUIRED_ARG
,
3
,
0
,
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
,
0
,
0
,
GET_NO_ARG
,
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
}
};
static
void
short_usage_sub
(
void
)
...
...
@@ -116,13 +117,13 @@ read_and_execute(int _try_reconnect)
}
#ifdef HAVE_READLINE
/* Get a line from the user. */
line_read
=
readline
(
"ndb_mgm> "
);
line_read
=
readline
(
prompt
);
/* If the line has any text in it, save it on the history. */
if
(
line_read
&&
*
line_read
)
add_history
(
line_read
);
#else
static
char
linebuffer
[
254
];
fputs
(
"ndb_mgm> "
,
stdout
);
fputs
(
prompt
,
stdout
);
linebuffer
[
sizeof
(
linebuffer
)
-
1
]
=
0
;
line_read
=
fgets
(
linebuffer
,
sizeof
(
linebuffer
)
-
1
,
stdin
);
if
(
line_read
==
linebuffer
)
{
...
...
@@ -155,12 +156,16 @@ int main(int argc, char** argv){
opt_connect_str
=
buf
;
}
if
(
!
isatty
(
0
))
{
prompt
=
0
;
}
ndbout
<<
"-- NDB Cluster -- Management Client --"
<<
endl
;
printf
(
"Connecting to Management Server: %s
\n
"
,
opt_connect_str
?
opt_connect_str
:
"default"
);
signal
(
SIGPIPE
,
handler
);
com
=
new
Ndb_mgmclient
(
opt_connect_str
);
com
=
new
Ndb_mgmclient
(
opt_connect_str
,
1
);
while
(
read_and_execute
(
_try_reconnect
));
delete
com
;
...
...
ndb/src/mgmclient/ndb_mgmclient.hpp
View file @
facaf4f7
...
...
@@ -21,7 +21,7 @@ class CommandInterpreter;
class
Ndb_mgmclient
{
public:
Ndb_mgmclient
(
const
char
*
);
Ndb_mgmclient
(
const
char
*
,
int
verbose
=
0
);
~
Ndb_mgmclient
();
int
execute
(
const
char
*
_line
,
int
_try_reconnect
=-
1
);
int
execute
(
int
argc
,
char
**
argv
,
int
_try_reconnect
=-
1
);
...
...
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