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
0a3778c0
Commit
0a3778c0
authored
Aug 29, 2006
by
gni/root@dev3-127.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge gni@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into dev3-127.(none):/mnt/mysql/home/ngb/mysql-5.0-ndb-bj
parents
f03cdb01
56e42906
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
444 additions
and
103 deletions
+444
-103
ndb/src/mgmclient/CommandInterpreter.cpp
ndb/src/mgmclient/CommandInterpreter.cpp
+416
-92
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
ndb/src/mgmsrv/ConfigInfo.cpp
ndb/src/mgmsrv/ConfigInfo.cpp
+9
-2
ndb/src/mgmsrv/MgmtSrvr.cpp
ndb/src/mgmsrv/MgmtSrvr.cpp
+4
-1
ndb/src/mgmsrv/Services.cpp
ndb/src/mgmsrv/Services.cpp
+7
-0
ndb/src/ndbapi/ndberror.c
ndb/src/ndbapi/ndberror.c
+1
-1
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+3
-3
No files found.
ndb/src/mgmclient/CommandInterpreter.cpp
View file @
0a3778c0
...
@@ -55,11 +55,11 @@ class CommandInterpreter {
...
@@ -55,11 +55,11 @@ class CommandInterpreter {
*
*
* @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 @@ class CommandInterpreter {
...
@@ -99,7 +99,7 @@ class CommandInterpreter {
*/
*/
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 @@ class CommandInterpreter {
...
@@ -137,7 +137,7 @@ class CommandInterpreter {
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
);
}
}
/*****************************************************************************
/*****************************************************************************
...
@@ -266,7 +266,7 @@ static const char* helpText =
...
@@ -266,7 +266,7 @@ static const char* helpText =
" NDB Cluster -- Management Client -- Help
\n
"
" NDB Cluster -- Management Client -- Help
\n
"
"---------------------------------------------------------------------------
\n
"
"---------------------------------------------------------------------------
\n
"
"HELP Print help text
\n
"
"HELP Print help text
\n
"
"HELP
SHOW Help for SHOW command
\n
"
"HELP
COMMAND Print detailed help for COMMAND(e.g. SHOW)
\n
"
#ifdef HAVE_GLOBAL_REPLICATION
#ifdef HAVE_GLOBAL_REPLICATION
"HELP REPLICATION Help for global replication
\n
"
"HELP REPLICATION Help for global replication
\n
"
#endif // HAVE_GLOBAL_REPLICATION
#endif // HAVE_GLOBAL_REPLICATION
...
@@ -286,10 +286,10 @@ static const char* helpText =
...
@@ -286,10 +286,10 @@ static const char* helpText =
"CLUSTERLOG OFF [<severity>] ... Disable Cluster logging
\n
"
"CLUSTERLOG OFF [<severity>] ... Disable Cluster logging
\n
"
"CLUSTERLOG TOGGLE [<severity>] ... Toggle severity filter on/off
\n
"
"CLUSTERLOG TOGGLE [<severity>] ... Toggle severity filter on/off
\n
"
"CLUSTERLOG INFO Print cluster log information
\n
"
"CLUSTERLOG INFO Print cluster log information
\n
"
"<id> START Start
DB
node (started with -n)
\n
"
"<id> START Start
data
node (started with -n)
\n
"
"<id> RESTART [-n] [-i] Restart
DB
node
\n
"
"<id> RESTART [-n] [-i] Restart
data or management server
node
\n
"
"<id> STOP Stop
DB
node
\n
"
"<id> STOP Stop
data or management server
node
\n
"
"ENTER SINGLE USER MODE <
api-node>
Enter single user mode
\n
"
"ENTER SINGLE USER MODE <
id>
Enter single user mode
\n
"
"EXIT SINGLE USER MODE Exit single user mode
\n
"
"EXIT SINGLE USER MODE Exit single user mode
\n
"
"<id> STATUS Print status
\n
"
"<id> STATUS Print status
\n
"
"<id> CLUSTERLOG {<category>=<level>}+ Set log level for cluster log
\n
"
"<id> CLUSTERLOG {<category>=<level>}+ Set log level for cluster log
\n
"
...
@@ -305,14 +305,296 @@ static const char* helpTextShow =
...
@@ -305,14 +305,296 @@ static const char* helpTextShow =
"---------------------------------------------------------------------------
\n
"
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for SHOW command
\n
"
" NDB Cluster -- Management Client -- Help for SHOW command
\n
"
"---------------------------------------------------------------------------
\n
"
"---------------------------------------------------------------------------
\n
"
"SHOW prints NDB Cluster information
\n\n
"
"SHOW Print information about cluster
\n\n
"
"SHOW Print information about cluster
\n
"
"SHOW Print information about cluster.The status reported is from
\n
"
" the perspective of the data nodes. API and Management Server nodes
\n
"
" are only reported as connected once the data nodes have started.
\n
"
#if 0
#if 0
"SHOW CONFIG Print configuration (in initial config file format)\n"
"SHOW CONFIG Print configuration (in initial config file format)\n"
"SHOW PARAMETERS Print information about configuration parameters\n\n"
"SHOW PARAMETERS Print information about configuration parameters\n\n"
#endif
#endif
;
;
static
const
char
*
helpTextHelp
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for HELP command
\n
"
"---------------------------------------------------------------------------
\n
"
"HELP List available commands of NDB Cluster Management Client
\n\n
"
"HELP List available commands.
\n
"
;
static
const
char
*
helpTextBackup
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for BACKUP command
\n
"
"---------------------------------------------------------------------------
\n
"
"BACKUP A backup is a snapshot of the database at a given time.
\n
"
" The backup consists of three main parts:
\n\n
"
" Metadata: the names and definitions of all database tables.
\n
"
" Table records: the data actually stored in the database tables
\n
"
" at the time that the backup was made.
\n
"
" Transaction log: a sequential record telling how
\n
"
" and when data was stored in the database.
\n\n
"
" Backups are stored on each data node in the cluster that
\n
"
" participates in the backup.
\n\n
"
" The cluster log records backup related events (such as
\n
"
" backup started, aborted, finished).
\n
"
;
static
const
char
*
helpTextStartBackup
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for START BACKUP command
\n
"
"---------------------------------------------------------------------------
\n
"
"START BACKUP Start a cluster backup
\n\n
"
"START BACKUP [NOWAIT | WAIT STARTED | WAIT COMPLETED]
\n
"
" Start a backup for the cluster.
\n
"
" Each backup gets an ID number that is reported to the
\n
"
" user. This ID number can help you find the backup on the
\n
"
" file system, or ABORT BACKUP if you wish to cancel a
\n
"
" running backup.
\n\n
"
" NOWAIT
\n
"
" Start a cluster backup and return immediately.
\n
"
" The management client will return control directly
\n
"
" to the user without waiting for the backup
\n
"
" to have started.
\n
"
" The status of the backup is recorded in the Cluster log.
\n
"
" WAIT STARTED
\n
"
" Start a cluster backup and return until the backup has
\n
"
" started. The management client will wait for the backup
\n
"
" to have started before returning control to the user.
\n
"
" WAIT COMPLETED
\n
"
" Start a cluster backup and return until the backup has
\n
"
" completed. The management client will wait for the backup
\n
"
" to complete before returning control to the user.
\n
"
;
static
const
char
*
helpTextAbortBackup
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for ABORT BACKUP command
\n
"
"---------------------------------------------------------------------------
\n
"
"ABORT BACKUP Abort a cluster backup
\n\n
"
"ABORT BACKUP <backup id>
\n
"
" Abort a backup that is already in progress.
\n
"
" The backup id can be seen in the cluster log or in the
\n
"
" output of the START BACKUP command.
\n
"
;
static
const
char
*
helpTextShutdown
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for SHUTDOWN command
\n
"
"---------------------------------------------------------------------------
\n
"
"SHUTDOWN Shutdown the cluster
\n\n
"
"SHUTDOWN Shutdown the data nodes and management nodes.
\n
"
" MySQL Servers and NDBAPI nodes are currently not
\n
"
" shut down by issuing this command.
\n
"
;
static
const
char
*
helpTextClusterlogOn
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for CLUSTERLOG ON command
\n
"
"---------------------------------------------------------------------------
\n
"
"CLUSTERLOG ON Enable Cluster logging
\n\n
"
"CLUSTERLOG ON [<severity>] ...
\n
"
" Turn the cluster log on.
\n
"
" It tells management server which severity levels
\n
"
" messages will be logged.
\n\n
"
" <severity> can be any one of the following values:
\n
"
" ALERT, CRITICAL, ERROR, WARNING, INFO, DEBUG.
\n
"
;
static
const
char
*
helpTextClusterlogOff
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for CLUSTERLOG OFF command
\n
"
"---------------------------------------------------------------------------
\n
"
"CLUSTERLOG OFF Disable Cluster logging
\n\n
"
"CLUSTERLOG OFF [<severity>] ...
\n
"
" Turn the cluster log off.
\n
"
" It tells management server which serverity
\n
"
" levels logging will be disabled.
\n\n
"
" <severity> can be any one of the following values:
\n
"
" ALERT, CRITICAL, ERROR, WARNING, INFO, DEBUG.
\n
"
;
static
const
char
*
helpTextClusterlogToggle
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for CLUSTERLOG TOGGLE command
\n
"
"---------------------------------------------------------------------------
\n
"
"CLUSTERLOG TOGGLE Toggle severity filter on/off
\n\n
"
"CLUSTERLOG TOGGLE [<severity>] ...
\n
"
" Toggle serverity filter on/off.
\n
"
" If a serverity level is already enabled,then it will
\n
"
" be disabled after you use the command,vice versa.
\n\n
"
" <severity> can be any one of the following values:
\n
"
" ALERT, CRITICAL, ERROR, WARNING, INFO, DEBUG.
\n
"
;
static
const
char
*
helpTextClusterlogInfo
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for CLUSTERLOG INFO command
\n
"
"---------------------------------------------------------------------------
\n
"
"CLUSTERLOG INFO Print cluster log information
\n\n
"
"CLUSTERLOG INFO Display which severity levels have been enabled,
\n
"
" see HELP CLUSTERLOG for list of the severity levels.
\n
"
;
static
const
char
*
helpTextStart
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for START command
\n
"
"---------------------------------------------------------------------------
\n
"
"START Start data node (started with -n)
\n\n
"
"<id> START Start the data node identified by <id>.
\n
"
" Only starts data nodes that have not
\n
"
" yet joined the cluster. These are nodes
\n
"
" launched or restarted with the -n(--nostart)
\n
"
" option.
\n\n
"
" It does not launch the ndbd process on a remote
\n
"
" machine.
\n
"
;
static
const
char
*
helpTextRestart
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for RESTART command
\n
"
"---------------------------------------------------------------------------
\n
"
"RESTART Restart data or management server node
\n\n
"
"<id> RESTART [-n] [-i]
\n
"
" Restart the data or management node <id>(or All data nodes).
\n\n
"
" -n (--nostart) restarts the node but does not
\n
"
" make it join the cluster. Use '<id> START' to
\n
"
" join the node to the cluster.
\n\n
"
" -i (--initial) perform initial start.
\n
"
" This cleans the file system (ndb_<id>_fs)
\n
"
" and the node will copy data from another node
\n
"
" in the same node group during start up.
\n\n
"
" Consult the documentation before using -i.
\n\n
"
" INCORRECT USE OF -i WILL CAUSE DATA LOSS!
\n
"
;
static
const
char
*
helpTextStop
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for STOP command
\n
"
"---------------------------------------------------------------------------
\n
"
"STOP Stop data or management server node
\n\n
"
"<id> STOP Stop the data or management server node <id>.
\n\n
"
" ALL STOP will just stop all data nodes.
\n\n
"
" If you desire to also shut down management servers,
\n
"
" use SHUTDOWN instead.
\n
"
;
static
const
char
*
helpTextEnterSingleUserMode
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for ENTER SINGLE USER MODE command
\n
"
"---------------------------------------------------------------------------
\n
"
"ENTER SINGLE USER MODE Enter single user mode
\n\n
"
"ENTER SINGLE USER MODE <id>
\n
"
" Enters single-user mode, whereby only the MySQL Server or NDBAPI
\n
"
" node identified by <id> is allowed to access the database.
\n
"
;
static
const
char
*
helpTextExitSingleUserMode
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for EXIT SINGLE USER MODE command
\n
"
"---------------------------------------------------------------------------
\n
"
"EXIT SINGLE USER MODE Exit single user mode
\n\n
"
"EXIT SINGLE USER MODE
\n
"
" Exits single-user mode, allowing all SQL nodes
\n
"
" (that is, all running mysqld processes) to access the database.
\n
"
;
static
const
char
*
helpTextStatus
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for STATUS command
\n
"
"---------------------------------------------------------------------------
\n
"
"STATUS Print status
\n\n
"
"<id> STATUS Displays status information for the data node <id>
\n
"
" or for All data nodes.
\n\n
"
" e.g.
\n
"
" ALL STATUS
\n
"
" 1 STATUS
\n\n
"
" When a node is starting, the start phase will be
\n
"
" listed.
\n\n
"
" Start Phase Meaning
\n
"
" 1 Clear the cluster file system(ndb_<id>_fs).
\n
"
" This stage occurs only when the --initial option
\n
"
" has been specified.
\n
"
" 2 This stage sets up Cluster connections, establishes
\n
"
" inter-node communications and starts Cluster heartbeats.
\n
"
" 3 The arbitrator node is elected.
\n
"
" 4 Initializes a number of internal cluster variables.
\n
"
" 5 For an initial start or initial node restart,
\n
"
" the redo log files are created.
\n
"
" 6 If this is an initial start, create internal system tables.
\n
"
" 7 Update internal variables.
\n
"
" 8 In a system restart, rebuild all indexes.
\n
"
" 9 Update internal variables.
\n
"
" 10 The node can be connected by APIs and can receive events.
\n
"
" 11 At this point,event delivery is handed over to
\n
"
" the node joining the cluster.
\n
"
"(see manual for more information)
\n
"
;
static
const
char
*
helpTextClusterlog
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for CLUSTERLOG command
\n
"
"---------------------------------------------------------------------------
\n
"
"CLUSTERLOG Set log level for cluster log
\n\n
"
" <id> CLUSTERLOG {<category>=<level>}+
\n
"
" Logs <category> events with priority less than
\n
"
" or equal to <level> in the cluster log.
\n\n
"
" <category> can be any one of the following values:
\n
"
" STARTUP, SHUTDOWN, STATISTICS, CHECKPOINT, NODERESTART,
\n
"
" CONNECTION, ERROR, INFO, CONGESTION, DEBUG, or BACKUP.
\n\n
"
" <level> is represented by one of the numbers
\n
"
" from 1 to 15 inclusive, where 1 indicates 'most important'
\n
"
" and 15 'least important'.
\n\n
"
" <severity> can be any one of the following values:
\n
"
" ALERT, CRITICAL, ERROR, WARNING, INFO, DEBUG.
\n
"
;
static
const
char
*
helpTextPurgeStaleSessions
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for PURGE STALE SESSIONS command
\n
"
"---------------------------------------------------------------------------
\n
"
"PURGE STALE SESSIONS Reset reserved nodeid's in the mgmt server
\n\n
"
"PURGE STALE SESSIONS
\n
"
" Running this statement forces all reserved
\n
"
" node IDs to be checked; any that are not
\n
"
" being used by nodes acutally connected to
\n
"
" the cluster are then freed.
\n\n
"
" This command is not normally needed, but may be
\n
"
" required in some situations where failed nodes
\n
"
" cannot rejoin the cluster due to failing to
\n
"
" allocate a node id.
\n
"
;
static
const
char
*
helpTextConnect
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for CONNECT command
\n
"
"---------------------------------------------------------------------------
\n
"
"CONNECT Connect to management server (reconnect if already connected)
\n\n
"
"CONNECT [<connectstring>]
\n
"
" Connect to management server.
\n
"
" The optional parameter connectstring specifies the
\n
"
" connect string to user.
\n\n
"
" A connect string may be:
\n
"
" mgm-server
\n
"
" mgm-server:port
\n
"
" mgm1:port,mgm2:port
\n
"
" With multiple management servers comma separated.
\n
"
" The management client with try to connect to the
\n
"
" management servers in the order they are listed.
\n\n
"
" If no connect string is specified, the default
\n
"
" is used.
\n
"
;
static
const
char
*
helpTextQuit
=
"---------------------------------------------------------------------------
\n
"
" NDB Cluster -- Management Client -- Help for QUIT command
\n
"
"---------------------------------------------------------------------------
\n
"
"QUIT Quit management client
\n\n
"
"QUIT Terminates the management client.
\n
"
;
#ifdef HAVE_GLOBAL_REPLICATION
#ifdef HAVE_GLOBAL_REPLICATION
static
const
char
*
helpTextRep
=
static
const
char
*
helpTextRep
=
"---------------------------------------------------------------------------
\n
"
"---------------------------------------------------------------------------
\n
"
...
@@ -370,6 +652,44 @@ static const char* helpTextDebug =
...
@@ -370,6 +652,44 @@ static const char* helpTextDebug =
;
;
#endif
#endif
struct
{
const
char
*
cmd
;
const
char
*
help
;
}
help_items
[]
=
{
{
"SHOW"
,
helpTextShow
},
{
"HELP"
,
helpTextHelp
},
{
"BACKUP"
,
helpTextBackup
},
{
"START BACKUP"
,
helpTextStartBackup
},
{
"START BACKUP NOWAIT"
,
helpTextStartBackup
},
{
"START BACKUP WAIT STARTED"
,
helpTextStartBackup
},
{
"START BACKUP WAIT"
,
helpTextStartBackup
},
{
"START BACKUP WAIT COMPLETED"
,
helpTextStartBackup
},
{
"ABORT BACKUP"
,
helpTextAbortBackup
},
{
"SHUTDOWN"
,
helpTextShutdown
},
{
"CLUSTERLOG ON"
,
helpTextClusterlogOn
},
{
"CLUSTERLOG OFF"
,
helpTextClusterlogOff
},
{
"CLUSTERLOG TOGGLE"
,
helpTextClusterlogToggle
},
{
"CLUSTERLOG INFO"
,
helpTextClusterlogInfo
},
{
"START"
,
helpTextStart
},
{
"RESTART"
,
helpTextRestart
},
{
"STOP"
,
helpTextStop
},
{
"ENTER SINGLE USER MODE"
,
helpTextEnterSingleUserMode
},
{
"EXIT SINGLE USER MODE"
,
helpTextExitSingleUserMode
},
{
"STATUS"
,
helpTextStatus
},
{
"CLUSTERLOG"
,
helpTextClusterlog
},
{
"PURGE STALE SESSIONS"
,
helpTextPurgeStaleSessions
},
{
"CONNECT"
,
helpTextConnect
},
{
"QUIT"
,
helpTextQuit
},
#ifdef HAVE_GLOBAL_REPLICATION
{
"REPLICATION"
,
helpTextRep
},
{
"REP"
,
helpTextRep
},
#endif // HAVE_GLOBAL_REPLICATION
#ifdef VM_TRACE // DEBUG ONLY
{
"DEBUG"
,
helpTextDebug
},
#endif //VM_TRACE
{
NULL
,
NULL
}
};
static
bool
static
bool
convert
(
const
char
*
s
,
int
&
val
)
{
convert
(
const
char
*
s
,
int
&
val
)
{
...
@@ -400,7 +720,7 @@ CommandInterpreter::CommandInterpreter(const char *_host,int verbose)
...
@@ -400,7 +720,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 +815,7 @@ event_thread_run(void* p)
...
@@ -495,7 +815,7 @@ event_thread_run(void* p)
}
}
bool
bool
CommandInterpreter
::
connect
()
CommandInterpreter
::
connect
(
bool
interactive
)
{
{
DBUG_ENTER
(
"CommandInterpreter::connect"
);
DBUG_ENTER
(
"CommandInterpreter::connect"
);
...
@@ -507,10 +827,12 @@ CommandInterpreter::connect()
...
@@ -507,10 +827,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 +846,64 @@ CommandInterpreter::connect()
...
@@ -524,62 +846,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 +926,7 @@ CommandInterpreter::disconnect()
...
@@ -602,7 +926,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 +942,11 @@ CommandInterpreter::disconnect()
...
@@ -618,11 +942,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 +961,7 @@ invalid_command(const char *cmd)
...
@@ -637,7 +961,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 +1010,7 @@ CommandInterpreter::execute_impl(const char *_line)
...
@@ -686,7 +1010,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 +1025,7 @@ CommandInterpreter::execute_impl(const char *_line)
...
@@ -701,7 +1025,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
)
{
...
@@ -1045,19 +1369,19 @@ CommandInterpreter::executeHelp(char* parameters)
...
@@ -1045,19 +1369,19 @@ CommandInterpreter::executeHelp(char* parameters)
ndbout
<<
"<level> = "
<<
"0 - 15"
<<
endl
;
ndbout
<<
"<level> = "
<<
"0 - 15"
<<
endl
;
ndbout
<<
"<id> = "
<<
"ALL | Any database node id"
<<
endl
;
ndbout
<<
"<id> = "
<<
"ALL | Any database node id"
<<
endl
;
ndbout
<<
endl
;
ndbout
<<
endl
;
}
else
if
(
strcasecmp
(
parameters
,
"SHOW"
)
==
0
)
{
ndbout
<<
"For detailed help on COMMAND, use HELP COMMAND."
<<
endl
;
ndbout
<<
helpTextShow
;
#ifdef HAVE_GLOBAL_REPLICATION
}
else
if
(
strcasecmp
(
parameters
,
"REPLICATION"
)
==
0
||
strcasecmp
(
parameters
,
"REP"
)
==
0
)
{
ndbout
<<
helpTextRep
;
#endif // HAVE_GLOBAL_REPLICATION
#ifdef VM_TRACE // DEBUG ONLY
}
else
if
(
strcasecmp
(
parameters
,
"DEBUG"
)
==
0
)
{
ndbout
<<
helpTextDebug
;
#endif
}
else
{
}
else
{
invalid_command
(
parameters
);
int
i
=
0
;
for
(
i
=
0
;
help_items
[
i
].
cmd
!=
NULL
;
i
++
)
{
if
(
strcasecmp
(
parameters
,
help_items
[
i
].
cmd
)
==
0
)
{
ndbout
<<
help_items
[
i
].
help
;
break
;
}
}
if
(
help_items
[
i
].
cmd
==
NULL
)
ndbout
<<
"No help for "
<<
parameters
<<
" available"
<<
endl
;
}
}
}
}
...
@@ -1314,13 +1638,13 @@ CommandInterpreter::executeShow(char* parameters)
...
@@ -1314,13 +1638,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
);
}
}
//*****************************************************************************
//*****************************************************************************
...
@@ -2161,7 +2485,7 @@ CommandInterpreter::executeStartBackup(char* parameters)
...
@@ -2161,7 +2485,7 @@ CommandInterpreter::executeStartBackup(char* parameters)
}
}
if
(
result
!=
0
)
{
if
(
result
!=
0
)
{
ndbout
<<
"
Start of b
ackup failed"
<<
endl
;
ndbout
<<
"
B
ackup failed"
<<
endl
;
printError
();
printError
();
#if 0
#if 0
close(fd);
close(fd);
...
...
ndb/src/mgmclient/main.cpp
View file @
0a3778c0
...
@@ -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 @
0a3778c0
...
@@ -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
;
...
...
ndb/src/mgmsrv/ConfigInfo.cpp
View file @
0a3778c0
...
@@ -2604,6 +2604,13 @@ transformNode(InitConfigFileParser::Context & ctx, const char * data){
...
@@ -2604,6 +2604,13 @@ transformNode(InitConfigFileParser::Context & ctx, const char * data){
return
false
;
return
false
;
}
}
if
(
id
>=
MAX_NODES
)
{
ctx
.
reportError
(
"too many nodes configured, only up to %d nodes supported."
,
MAX_NODES
);
return
false
;
}
// next node id _always_ next numbers after last used id
// next node id _always_ next numbers after last used id
ctx
.
m_userProperties
.
put
(
"NextNodeId"
,
id
+
1
,
true
);
ctx
.
m_userProperties
.
put
(
"NextNodeId"
,
id
+
1
,
true
);
...
@@ -3495,11 +3502,11 @@ sanity_checks(Vector<ConfigInfo::ConfigRuleSection>§ions,
...
@@ -3495,11 +3502,11 @@ sanity_checks(Vector<ConfigInfo::ConfigRuleSection>§ions,
Uint32
mgm_nodes
=
0
;
Uint32
mgm_nodes
=
0
;
Uint32
api_nodes
=
0
;
Uint32
api_nodes
=
0
;
if
(
!
ctx
.
m_userProperties
.
get
(
"DB"
,
&
db_nodes
))
{
if
(
!
ctx
.
m_userProperties
.
get
(
"DB"
,
&
db_nodes
))
{
ctx
.
reportError
(
"At least one database node should be defined in config file"
);
ctx
.
reportError
(
"At least one database node
(ndbd)
should be defined in config file"
);
return
false
;
return
false
;
}
}
if
(
!
ctx
.
m_userProperties
.
get
(
"MGM"
,
&
mgm_nodes
))
{
if
(
!
ctx
.
m_userProperties
.
get
(
"MGM"
,
&
mgm_nodes
))
{
ctx
.
reportError
(
"At least one management server node should be defined in config file"
);
ctx
.
reportError
(
"At least one management server node
(ndb_mgmd)
should be defined in config file"
);
return
false
;
return
false
;
}
}
if
(
!
ctx
.
m_userProperties
.
get
(
"API"
,
&
api_nodes
))
{
if
(
!
ctx
.
m_userProperties
.
get
(
"API"
,
&
api_nodes
))
{
...
...
ndb/src/mgmsrv/MgmtSrvr.cpp
View file @
0a3778c0
...
@@ -449,7 +449,10 @@ MgmtSrvr::MgmtSrvr(SocketServer *socket_server,
...
@@ -449,7 +449,10 @@ MgmtSrvr::MgmtSrvr(SocketServer *socket_server,
// read config locally
// read config locally
_config
=
readConfig
();
_config
=
readConfig
();
if
(
_config
==
0
)
{
if
(
_config
==
0
)
{
ndbout
<<
"Unable to read config file"
<<
endl
;
if
(
config_filename
!=
NULL
)
ndbout
<<
"Invalid configuration file: "
<<
config_filename
<<
endl
;
else
ndbout
<<
"Invalid configuration file"
<<
endl
;
exit
(
-
1
);
exit
(
-
1
);
}
}
}
}
...
...
ndb/src/mgmsrv/Services.cpp
View file @
0a3778c0
...
@@ -33,6 +33,7 @@
...
@@ -33,6 +33,7 @@
#include "../mgmapi/ndb_logevent.hpp"
#include "../mgmapi/ndb_logevent.hpp"
#include <base64.h>
#include <base64.h>
#include <ndberror.h>
extern
bool
g_StopServer
;
extern
bool
g_StopServer
;
extern
bool
g_RestartServer
;
extern
bool
g_RestartServer
;
...
@@ -1325,6 +1326,12 @@ Ndb_mgmd_event_service::log(int eventType, const Uint32* theData, NodeId nodeId)
...
@@ -1325,6 +1326,12 @@ Ndb_mgmd_event_service::log(int eventType, const Uint32* theData, NodeId nodeId)
if
(
ndb_logevent_body
[
i
].
index_fn
)
if
(
ndb_logevent_body
[
i
].
index_fn
)
val
=
(
*
(
ndb_logevent_body
[
i
].
index_fn
))(
val
);
val
=
(
*
(
ndb_logevent_body
[
i
].
index_fn
))(
val
);
str
.
appfmt
(
"%s=%d
\n
"
,
ndb_logevent_body
[
i
].
token
,
val
);
str
.
appfmt
(
"%s=%d
\n
"
,
ndb_logevent_body
[
i
].
token
,
val
);
if
(
strcmp
(
ndb_logevent_body
[
i
].
token
,
"error"
)
==
0
)
{
int
m_text_len
=
strlen
(
m_text
);
snprintf
(
m_text
+
m_text_len
,
4
,
" - "
);
ndb_error_string
(
theData
[
3
],
m_text
+
(
m_text_len
+
3
),
sizeof
(
m_text
)
-
m_text_len
-
3
);
}
}
}
Vector
<
NDB_SOCKET_TYPE
>
copy
;
Vector
<
NDB_SOCKET_TYPE
>
copy
;
...
...
ndb/src/ndbapi/ndberror.c
View file @
0a3778c0
...
@@ -378,7 +378,7 @@ ErrorBundle ErrorCodes[] = {
...
@@ -378,7 +378,7 @@ ErrorBundle ErrorCodes[] = {
{
1305
,
IE
,
"Backup definition not implemented"
},
{
1305
,
IE
,
"Backup definition not implemented"
},
{
1306
,
AE
,
"Backup not supported in diskless mode (change Diskless)"
},
{
1306
,
AE
,
"Backup not supported in diskless mode (change Diskless)"
},
{
1321
,
IE
,
"Backup aborted by application
"
},
{
1321
,
UD
,
"Backup aborted by user request
"
},
{
1322
,
IE
,
"Backup already completed"
},
{
1322
,
IE
,
"Backup already completed"
},
{
1323
,
IE
,
"1323"
},
{
1323
,
IE
,
"1323"
},
{
1324
,
IE
,
"Backup log buffer full"
},
{
1324
,
IE
,
"Backup log buffer full"
},
...
...
sql/ha_ndbcluster.cc
View file @
0a3778c0
...
@@ -147,7 +147,7 @@ static long ndb_cluster_node_id= 0;
...
@@ -147,7 +147,7 @@ static long ndb_cluster_node_id= 0;
static
const
char
*
ndb_connected_host
=
0
;
static
const
char
*
ndb_connected_host
=
0
;
static
long
ndb_connected_port
=
0
;
static
long
ndb_connected_port
=
0
;
static
long
ndb_number_of_replicas
=
0
;
static
long
ndb_number_of_replicas
=
0
;
static
long
ndb_number_of_
storage
_nodes
=
0
;
static
long
ndb_number_of_
data
_nodes
=
0
;
static
int
update_status_variables
(
Ndb_cluster_connection
*
c
)
static
int
update_status_variables
(
Ndb_cluster_connection
*
c
)
{
{
...
@@ -155,7 +155,7 @@ static int update_status_variables(Ndb_cluster_connection *c)
...
@@ -155,7 +155,7 @@ static int update_status_variables(Ndb_cluster_connection *c)
ndb_connected_port
=
c
->
get_connected_port
();
ndb_connected_port
=
c
->
get_connected_port
();
ndb_connected_host
=
c
->
get_connected_host
();
ndb_connected_host
=
c
->
get_connected_host
();
ndb_number_of_replicas
=
0
;
ndb_number_of_replicas
=
0
;
ndb_number_of_
storage
_nodes
=
c
->
no_db_nodes
();
ndb_number_of_
data
_nodes
=
c
->
no_db_nodes
();
return
0
;
return
0
;
}
}
...
@@ -164,7 +164,7 @@ struct show_var_st ndb_status_variables[]= {
...
@@ -164,7 +164,7 @@ struct show_var_st ndb_status_variables[]= {
{
"config_from_host"
,
(
char
*
)
&
ndb_connected_host
,
SHOW_CHAR_PTR
},
{
"config_from_host"
,
(
char
*
)
&
ndb_connected_host
,
SHOW_CHAR_PTR
},
{
"config_from_port"
,
(
char
*
)
&
ndb_connected_port
,
SHOW_LONG
},
{
"config_from_port"
,
(
char
*
)
&
ndb_connected_port
,
SHOW_LONG
},
// {"number_of_replicas", (char*) &ndb_number_of_replicas, SHOW_LONG},
// {"number_of_replicas", (char*) &ndb_number_of_replicas, SHOW_LONG},
{
"number_of_
storage_nodes"
,(
char
*
)
&
ndb_number_of_storage
_nodes
,
SHOW_LONG
},
{
"number_of_
data_nodes"
,(
char
*
)
&
ndb_number_of_data
_nodes
,
SHOW_LONG
},
{
NullS
,
NullS
,
SHOW_LONG
}
{
NullS
,
NullS
,
SHOW_LONG
}
};
};
...
...
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