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
50a69b1b
Commit
50a69b1b
authored
Mar 03, 2005
by
joreland@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into mysql.com:/home/jonas/src/mysql-5.0-ndb
parents
d0c4159f
bc716e25
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
148 additions
and
48 deletions
+148
-48
ndb/include/mgmapi/mgmapi.h
ndb/include/mgmapi/mgmapi.h
+5
-1
ndb/include/mgmcommon/ConfigRetriever.hpp
ndb/include/mgmcommon/ConfigRetriever.hpp
+1
-0
ndb/include/transporter/TransporterRegistry.hpp
ndb/include/transporter/TransporterRegistry.hpp
+10
-1
ndb/src/common/transporter/Transporter.cpp
ndb/src/common/transporter/Transporter.cpp
+9
-0
ndb/src/common/transporter/Transporter.hpp
ndb/src/common/transporter/Transporter.hpp
+1
-0
ndb/src/common/transporter/TransporterRegistry.cpp
ndb/src/common/transporter/TransporterRegistry.cpp
+62
-36
ndb/src/kernel/main.cpp
ndb/src/kernel/main.cpp
+7
-0
ndb/src/kernel/vm/Configuration.cpp
ndb/src/kernel/vm/Configuration.cpp
+1
-2
ndb/src/kernel/vm/Configuration.hpp
ndb/src/kernel/vm/Configuration.hpp
+3
-2
ndb/src/mgmapi/mgmapi.cpp
ndb/src/mgmapi/mgmapi.cpp
+37
-6
ndb/src/mgmsrv/Services.cpp
ndb/src/mgmsrv/Services.cpp
+10
-0
ndb/src/mgmsrv/Services.hpp
ndb/src/mgmsrv/Services.hpp
+2
-0
No files found.
ndb/include/mgmapi/mgmapi.h
View file @
50a69b1b
...
@@ -994,8 +994,12 @@ extern "C" {
...
@@ -994,8 +994,12 @@ extern "C" {
*
*
* @note the socket is now able to be used as a transporter connection
* @note the socket is now able to be used as a transporter connection
*/
*/
NDB_SOCKET_TYPE
ndb_mgm_convert_to_transporter
(
NdbMgmHandle
handle
);
NDB_SOCKET_TYPE
ndb_mgm_convert_to_transporter
(
NdbMgmHandle
*
handle
);
/**
* Get the node id of the mgm server we're connected to
*/
Uint32
ndb_mgm_get_mgmd_nodeid
(
NdbMgmHandle
handle
);
/**
/**
* Config iterator
* Config iterator
...
...
ndb/include/mgmcommon/ConfigRetriever.hpp
View file @
50a69b1b
...
@@ -76,6 +76,7 @@ public:
...
@@ -76,6 +76,7 @@ public:
const
char
*
get_mgmd_host
()
const
;
const
char
*
get_mgmd_host
()
const
;
const
char
*
get_connectstring
(
char
*
buf
,
int
buf_sz
)
const
;
const
char
*
get_connectstring
(
char
*
buf
,
int
buf_sz
)
const
;
NdbMgmHandle
get_mgmHandle
()
{
return
m_handle
;
};
NdbMgmHandle
get_mgmHandle
()
{
return
m_handle
;
};
NdbMgmHandle
*
get_mgmHandlePtr
()
{
return
&
m_handle
;
};
Uint32
get_configuration_nodeid
()
const
;
Uint32
get_configuration_nodeid
()
const
;
private:
private:
...
...
ndb/include/transporter/TransporterRegistry.hpp
View file @
50a69b1b
...
@@ -116,11 +116,20 @@ public:
...
@@ -116,11 +116,20 @@ public:
*/
*/
bool
connect_server
(
NDB_SOCKET_TYPE
sockfd
);
bool
connect_server
(
NDB_SOCKET_TYPE
sockfd
);
bool
connect_client
(
NdbMgmHandle
*
h
);
/**
/**
* use a mgmd connection to connect as a transporter
* Given a SocketClient, creates a NdbMgmHandle, turns it into a transporter
* and returns the socket.
*/
*/
NDB_SOCKET_TYPE
connect_ndb_mgmd
(
SocketClient
*
sc
);
NDB_SOCKET_TYPE
connect_ndb_mgmd
(
SocketClient
*
sc
);
/**
* Given a connected NdbMgmHandle, turns it into a transporter
* and returns the socket.
*/
NDB_SOCKET_TYPE
connect_ndb_mgmd
(
NdbMgmHandle
*
h
);
/**
/**
* Remove all transporters
* Remove all transporters
*/
*/
...
...
ndb/src/common/transporter/Transporter.cpp
View file @
50a69b1b
...
@@ -124,6 +124,15 @@ Transporter::connect_client() {
...
@@ -124,6 +124,15 @@ Transporter::connect_client() {
else
else
sockfd
=
m_socket_client
->
connect
();
sockfd
=
m_socket_client
->
connect
();
connect_client
(
sockfd
);
}
bool
Transporter
::
connect_client
(
NDB_SOCKET_TYPE
sockfd
)
{
if
(
m_connected
)
return
true
;
if
(
sockfd
==
NDB_INVALID_SOCKET
)
if
(
sockfd
==
NDB_INVALID_SOCKET
)
return
false
;
return
false
;
...
...
ndb/src/common/transporter/Transporter.hpp
View file @
50a69b1b
...
@@ -44,6 +44,7 @@ public:
...
@@ -44,6 +44,7 @@ public:
* Use isConnected() to check status
* Use isConnected() to check status
*/
*/
bool
connect_client
();
bool
connect_client
();
bool
connect_client
(
NDB_SOCKET_TYPE
sockfd
);
bool
connect_server
(
NDB_SOCKET_TYPE
socket
);
bool
connect_server
(
NDB_SOCKET_TYPE
socket
);
/**
/**
...
...
ndb/src/common/transporter/TransporterRegistry.cpp
View file @
50a69b1b
...
@@ -1365,6 +1365,8 @@ TransporterRegistry::add_transporter_interface(NodeId remoteNodeId,
...
@@ -1365,6 +1365,8 @@ TransporterRegistry::add_transporter_interface(NodeId remoteNodeId,
bool
bool
TransporterRegistry
::
start_service
(
SocketServer
&
socket_server
)
TransporterRegistry
::
start_service
(
SocketServer
&
socket_server
)
{
{
struct
ndb_mgm_reply
mgm_reply
;
DBUG_ENTER
(
"TransporterRegistry::start_service"
);
DBUG_ENTER
(
"TransporterRegistry::start_service"
);
if
(
m_transporter_interface
.
size
()
>
0
&&
!
nodeIdSpecified
)
if
(
m_transporter_interface
.
size
()
>
0
&&
!
nodeIdSpecified
)
{
{
...
@@ -1521,63 +1523,87 @@ TransporterRegistry::get_transporter(NodeId nodeId) {
...
@@ -1521,63 +1523,87 @@ TransporterRegistry::get_transporter(NodeId nodeId) {
return
theTransporters
[
nodeId
];
return
theTransporters
[
nodeId
];
}
}
NDB_SOCKET_TYPE
TransporterRegistry
::
connect_ndb_mgmd
(
SocketClient
*
sc
)
bool
TransporterRegistry
::
connect_client
(
NdbMgmHandle
*
h
)
{
{
NdbMgmHandle
h
=
ndb_mgm_create_handle
();
DBUG_ENTER
(
"TransporterRegistry::connect_client(NdbMgmHandle)"
);
struct
ndb_mgm_reply
mgm_reply
;
if
(
h
==
NULL
)
Uint32
mgm_nodeid
=
ndb_mgm_get_mgmd_nodeid
(
*
h
);
{
return
NDB_INVALID_SOCKET
;
}
/**
if
(
!
mgm_nodeid
)
* Set connectstring
return
false
;
*/
{
char
c
[
100
];
char
*
cs
=
&
c
[
0
];
unsigned
len
=
strlen
(
sc
->
get_server_name
())
+
20
;
if
(
len
>
sizeof
(
c
)
)
{
/*
* server name is long. malloc enough for it and the port number
*/
cs
=
(
char
*
)
malloc
(
len
*
sizeof
(
char
));
if
(
!
cs
)
{
ndb_mgm_destroy_handle
(
&
h
);
return
NDB_INVALID_SOCKET
;
}
}
snprintf
(
cs
,
len
,
"%s:%u"
,
sc
->
get_server_name
(),
sc
->
get_port
());
ndb_mgm_set_connectstring
(
h
,
cs
);
if
(
cs
!=
&
c
[
0
])
free
(
cs
);
}
if
(
ndb_mgm_connect
(
h
,
0
,
0
,
0
)
<
0
)
Transporter
*
t
=
theTransporters
[
mgm_nodeid
];
if
(
!
t
)
return
false
;
DBUG_RETURN
(
t
->
connect_client
(
connect_ndb_mgmd
(
h
)));
}
/**
* Given a connected NdbMgmHandle, turns it into a transporter
* and returns the socket.
*/
NDB_SOCKET_TYPE
TransporterRegistry
::
connect_ndb_mgmd
(
NdbMgmHandle
*
h
)
{
struct
ndb_mgm_reply
mgm_reply
;
if
(
h
==
NULL
||
*
h
==
NULL
)
{
{
ndb_mgm_destroy_handle
(
&
h
);
return
NDB_INVALID_SOCKET
;
return
NDB_INVALID_SOCKET
;
}
}
for
(
unsigned
int
i
=
0
;
i
<
m_transporter_interface
.
size
();
i
++
)
for
(
unsigned
int
i
=
0
;
i
<
m_transporter_interface
.
size
();
i
++
)
if
(
ndb_mgm_set_connection_int_parameter
(
h
,
if
(
m_transporter_interface
[
i
].
m_s_service_port
<
0
&&
ndb_mgm_set_connection_int_parameter
(
*
h
,
get_localNodeId
(),
get_localNodeId
(),
m_transporter_interface
[
i
].
m_remote_nodeId
,
m_transporter_interface
[
i
].
m_remote_nodeId
,
CFG_CONNECTION_SERVER_PORT
,
CFG_CONNECTION_SERVER_PORT
,
m_transporter_interface
[
i
].
m_s_service_port
,
m_transporter_interface
[
i
].
m_s_service_port
,
&
mgm_reply
)
<
0
)
&
mgm_reply
)
<
0
)
{
{
ndb_mgm_destroy_handle
(
&
h
);
ndb_mgm_destroy_handle
(
h
);
return
NDB_INVALID_SOCKET
;
return
NDB_INVALID_SOCKET
;
}
}
/**
* convert_to_transporter also disposes of the handle (i.e. we don't leak
* memory here.
*/
NDB_SOCKET_TYPE
sockfd
=
ndb_mgm_convert_to_transporter
(
h
);
NDB_SOCKET_TYPE
sockfd
=
ndb_mgm_convert_to_transporter
(
h
);
if
(
sockfd
==
NDB_INVALID_SOCKET
)
if
(
sockfd
==
NDB_INVALID_SOCKET
)
ndb_mgm_destroy_handle
(
&
h
);
ndb_mgm_destroy_handle
(
h
);
return
sockfd
;
return
sockfd
;
}
}
/**
* Given a SocketClient, creates a NdbMgmHandle, turns it into a transporter
* and returns the socket.
*/
NDB_SOCKET_TYPE
TransporterRegistry
::
connect_ndb_mgmd
(
SocketClient
*
sc
)
{
NdbMgmHandle
h
=
ndb_mgm_create_handle
();
if
(
h
==
NULL
)
{
return
NDB_INVALID_SOCKET
;
}
/**
* Set connectstring
*/
{
BaseString
cs
;
cs
.
assfmt
(
"%s:%u"
,
sc
->
get_server_name
(),
sc
->
get_port
());
ndb_mgm_set_connectstring
(
h
,
cs
.
c_str
());
}
if
(
ndb_mgm_connect
(
h
,
0
,
0
,
0
)
<
0
)
{
ndb_mgm_destroy_handle
(
&
h
);
return
NDB_INVALID_SOCKET
;
}
return
connect_ndb_mgmd
(
&
h
);
}
template
class
Vector
<
TransporterRegistry
::
Transporter_interface
>;
template
class
Vector
<
TransporterRegistry
::
Transporter_interface
>;
ndb/src/kernel/main.cpp
View file @
50a69b1b
...
@@ -190,6 +190,13 @@ int main(int argc, char** argv)
...
@@ -190,6 +190,13 @@ int main(int argc, char** argv)
exit
(
-
1
);
exit
(
-
1
);
}
}
// Re-use the mgm handle as a transporter
if
(
!
globalTransporterRegistry
.
connect_client
(
theConfig
->
get_config_retriever
()
->
get_mgmHandlePtr
()))
ERROR_SET
(
fatal
,
ERR_INVALID_CONFIG
,
"Connection to mgmd terminated before setup was complete"
,
"StopOnError missing"
);
if
(
!
globalTransporterRegistry
.
start_clients
()){
if
(
!
globalTransporterRegistry
.
start_clients
()){
ndbout_c
(
"globalTransporterRegistry.start_clients() failed"
);
ndbout_c
(
"globalTransporterRegistry.start_clients() failed"
);
exit
(
-
1
);
exit
(
-
1
);
...
...
ndb/src/kernel/vm/Configuration.cpp
View file @
50a69b1b
...
@@ -189,7 +189,6 @@ Configuration::fetch_configuration(){
...
@@ -189,7 +189,6 @@ Configuration::fetch_configuration(){
}
}
m_mgmd_port
=
0
;
m_mgmd_port
=
0
;
m_mgmd_host
=
0
;
m_config_retriever
=
new
ConfigRetriever
(
getConnectString
(),
m_config_retriever
=
new
ConfigRetriever
(
getConnectString
(),
NDB_VERSION
,
NODE_TYPE_DB
);
NDB_VERSION
,
NODE_TYPE_DB
);
...
@@ -211,7 +210,7 @@ Configuration::fetch_configuration(){
...
@@ -211,7 +210,7 @@ Configuration::fetch_configuration(){
}
}
m_mgmd_port
=
m_config_retriever
->
get_mgmd_port
();
m_mgmd_port
=
m_config_retriever
->
get_mgmd_port
();
m_mgmd_host
=
m_config_retriever
->
get_mgmd_host
(
);
m_mgmd_host
.
assign
(
m_config_retriever
->
get_mgmd_host
()
);
ConfigRetriever
&
cr
=
*
m_config_retriever
;
ConfigRetriever
&
cr
=
*
m_config_retriever
;
...
...
ndb/src/kernel/vm/Configuration.hpp
View file @
50a69b1b
...
@@ -17,6 +17,7 @@
...
@@ -17,6 +17,7 @@
#ifndef Configuration_H
#ifndef Configuration_H
#define Configuration_H
#define Configuration_H
#include <util/BaseString.hpp>
#include <mgmapi.h>
#include <mgmapi.h>
#include <ndb_types.h>
#include <ndb_types.h>
...
@@ -67,7 +68,7 @@ public:
...
@@ -67,7 +68,7 @@ public:
const
ndb_mgm_configuration_iterator
*
getOwnConfigIterator
()
const
;
const
ndb_mgm_configuration_iterator
*
getOwnConfigIterator
()
const
;
Uint32
get_mgmd_port
()
const
{
return
m_mgmd_port
;};
Uint32
get_mgmd_port
()
const
{
return
m_mgmd_port
;};
const
char
*
get_mgmd_host
()
const
{
return
m_mgmd_host
;};
const
char
*
get_mgmd_host
()
const
{
return
m_mgmd_host
.
c_str
()
;};
ConfigRetriever
*
get_config_retriever
()
{
return
m_config_retriever
;
};
ConfigRetriever
*
get_config_retriever
()
{
return
m_config_retriever
;
};
class
LogLevel
*
m_logLevel
;
class
LogLevel
*
m_logLevel
;
...
@@ -99,7 +100,7 @@ private:
...
@@ -99,7 +100,7 @@ private:
bool
_initialStart
;
bool
_initialStart
;
char
*
_connectString
;
char
*
_connectString
;
Uint32
m_mgmd_port
;
Uint32
m_mgmd_port
;
const
char
*
m_mgmd_host
;
BaseString
m_mgmd_host
;
bool
_daemonMode
;
bool
_daemonMode
;
void
calcSizeAlt
(
class
ConfigValues
*
);
void
calcSizeAlt
(
class
ConfigValues
*
);
...
...
ndb/src/mgmapi/mgmapi.cpp
View file @
50a69b1b
...
@@ -2189,23 +2189,54 @@ ndb_mgm_get_connection_int_parameter(NdbMgmHandle handle,
...
@@ -2189,23 +2189,54 @@ ndb_mgm_get_connection_int_parameter(NdbMgmHandle handle,
extern
"C"
extern
"C"
NDB_SOCKET_TYPE
NDB_SOCKET_TYPE
ndb_mgm_convert_to_transporter
(
NdbMgmHandle
handle
)
ndb_mgm_convert_to_transporter
(
NdbMgmHandle
*
handle
)
{
{
NDB_SOCKET_TYPE
s
;
NDB_SOCKET_TYPE
s
;
CHECK_HANDLE
(
handle
,
NDB_INVALID_SOCKET
);
CHECK_HANDLE
(
(
*
handle
)
,
NDB_INVALID_SOCKET
);
CHECK_CONNECTED
(
handle
,
NDB_INVALID_SOCKET
);
CHECK_CONNECTED
(
(
*
handle
)
,
NDB_INVALID_SOCKET
);
handle
->
connected
=
0
;
// we pretend we're disconnected
(
*
handle
)
->
connected
=
0
;
// we pretend we're disconnected
s
=
handle
->
socket
;
s
=
(
*
handle
)
->
socket
;
SocketOutputStream
s_output
(
s
);
SocketOutputStream
s_output
(
s
);
s_output
.
println
(
"transporter connect"
);
s_output
.
println
(
"transporter connect"
);
s_output
.
println
(
""
);
s_output
.
println
(
""
);
ndb_mgm_destroy_handle
(
&
handle
);
// set connected=0, so won't disconnect
ndb_mgm_destroy_handle
(
handle
);
// set connected=0, so won't disconnect
return
s
;
return
s
;
}
}
extern
"C"
Uint32
ndb_mgm_get_mgmd_nodeid
(
NdbMgmHandle
handle
)
{
Uint32
nodeid
=
0
;
DBUG_ENTER
(
"ndb_mgm_get_mgmd_nodeid"
);
CHECK_HANDLE
(
handle
,
0
);
CHECK_CONNECTED
(
handle
,
0
);
Properties
args
;
const
ParserRow
<
ParserDummy
>
reply
[]
=
{
MGM_CMD
(
"get mgmd nodeid reply"
,
NULL
,
""
),
MGM_ARG
(
"nodeid"
,
Int
,
Mandatory
,
"Node ID"
),
MGM_END
()
};
const
Properties
*
prop
;
prop
=
ndb_mgm_call
(
handle
,
reply
,
"get mgmd nodeid"
,
&
args
);
CHECK_REPLY
(
prop
,
0
);
if
(
!
prop
->
get
(
"nodeid"
,
&
nodeid
)){
ndbout_c
(
"Unable to get value"
);
return
0
;
}
delete
prop
;
DBUG_RETURN
(
nodeid
);
}
template
class
Vector
<
const
ParserRow
<
ParserDummy
>
*>
;
template
class
Vector
<
const
ParserRow
<
ParserDummy
>
*>
;
ndb/src/mgmsrv/Services.cpp
View file @
50a69b1b
...
@@ -266,6 +266,8 @@ ParserRow<MgmApiSession> commands[] = {
...
@@ -266,6 +266,8 @@ ParserRow<MgmApiSession> commands[] = {
MGM_CMD
(
"transporter connect"
,
&
MgmApiSession
::
transporter_connect
,
""
),
MGM_CMD
(
"transporter connect"
,
&
MgmApiSession
::
transporter_connect
,
""
),
MGM_CMD
(
"get mgmd nodeid"
,
&
MgmApiSession
::
get_mgmd_nodeid
,
""
),
MGM_END
()
MGM_END
()
};
};
...
@@ -1554,5 +1556,13 @@ MgmApiSession::transporter_connect(Parser_t::Context &ctx,
...
@@ -1554,5 +1556,13 @@ MgmApiSession::transporter_connect(Parser_t::Context &ctx,
m_mgmsrv
.
transporter_connect
(
s
);
m_mgmsrv
.
transporter_connect
(
s
);
}
}
void
MgmApiSession
::
get_mgmd_nodeid
(
Parser_t
::
Context
&
ctx
,
Properties
const
&
args
)
{
m_output
->
println
(
"get mgmd nodeid reply"
);
m_output
->
println
(
"nodeid:%u"
,
m_mgmsrv
.
getOwnNodeId
());
m_output
->
println
(
""
);
}
template
class
MutexVector
<
int
>;
template
class
MutexVector
<
int
>;
template
class
Vector
<
ParserRow
<
MgmApiSession
>
const
*>
;
template
class
Vector
<
ParserRow
<
MgmApiSession
>
const
*>
;
ndb/src/mgmsrv/Services.hpp
View file @
50a69b1b
...
@@ -99,6 +99,8 @@ public:
...
@@ -99,6 +99,8 @@ public:
void
check_connection
(
Parser_t
::
Context
&
ctx
,
const
class
Properties
&
args
);
void
check_connection
(
Parser_t
::
Context
&
ctx
,
const
class
Properties
&
args
);
void
transporter_connect
(
Parser_t
::
Context
&
ctx
,
Properties
const
&
args
);
void
transporter_connect
(
Parser_t
::
Context
&
ctx
,
Properties
const
&
args
);
void
get_mgmd_nodeid
(
Parser_t
::
Context
&
ctx
,
Properties
const
&
args
);
void
repCommand
(
Parser_t
::
Context
&
ctx
,
const
class
Properties
&
args
);
void
repCommand
(
Parser_t
::
Context
&
ctx
,
const
class
Properties
&
args
);
};
};
...
...
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