mirror of
https://github.com/MariaDB/server.git
synced 2026-05-07 23:54:31 +02:00
Hand merge
acinclude.m4: Auto merged ndb/include/mgmapi/mgmapi_config_parameters.h: Auto merged ndb/src/common/mgmcommon/IPCConfig.cpp: Auto merged ndb/src/mgmsrv/ConfigInfo.cpp: Auto merged
This commit is contained in:
commit
dbf87bf899
27 changed files with 672 additions and 534 deletions
|
|
@ -100,6 +100,7 @@ miguel@hegel.txg.br
|
|||
miguel@light.
|
||||
miguel@light.local
|
||||
miguel@sartre.local
|
||||
mikael@mc04.(none)
|
||||
mikron@c-fb0ae253.1238-1-64736c10.cust.bredbandsbolaget.se
|
||||
mikron@mikael-ronstr-ms-dator.local
|
||||
mmatthew@markslaptop.
|
||||
|
|
@ -129,6 +130,7 @@ mwagner@here.mwagner.org
|
|||
mwagner@work.mysql.com
|
||||
mydev@mysql.com
|
||||
mysql@home.(none)
|
||||
mysql@mc04.(none)
|
||||
mysqldev@build.mysql2.com
|
||||
mysqldev@melody.local
|
||||
mysqldev@mysql.com
|
||||
|
|
@ -158,6 +160,7 @@ ram@ram.(none)
|
|||
ranger@regul.home.lan
|
||||
rburnett@build.mysql.com
|
||||
root@home.(none)
|
||||
root@mc04.(none)
|
||||
root@x3.internalnet
|
||||
salle@banica.(none)
|
||||
salle@geopard.(none)
|
||||
|
|
|
|||
50
acinclude.m4
50
acinclude.m4
|
|
@ -1548,16 +1548,43 @@ dnl Sets HAVE_NDBCLUSTER_DB if --with-ndbcluster is used
|
|||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
AC_DEFUN([MYSQL_CHECK_NDB_OPTIONS], [
|
||||
AC_ARG_WITH([ndb-sci],
|
||||
AC_HELP_STRING([--with-ndb-sci=DIR],
|
||||
[Provide MySQL with a custom location of
|
||||
sci library. Given DIR, sci library is
|
||||
assumed to be in $DIR/lib and header files
|
||||
in $DIR/include.]),
|
||||
[mysql_sci_dir=${withval}],
|
||||
[mysql_sci_dir=""])
|
||||
|
||||
case "$mysql_sci_dir" in
|
||||
"no" )
|
||||
have_ndb_sci=no
|
||||
AC_MSG_RESULT([-- not including sci transporter])
|
||||
;;
|
||||
* )
|
||||
if test -f "$mysql_sci_dir/lib/libsisci.a" -a \
|
||||
-f "$mysql_sci_dir/include/sisci_api.h"; then
|
||||
NDB_SCI_INCLUDES="-I$mysql_sci_dir/include"
|
||||
NDB_SCI_LIBS="-L$mysql_sci_dir/lib -lsisci"
|
||||
AC_MSG_RESULT([-- including sci transporter])
|
||||
AC_DEFINE([NDB_SCI_TRANSPORTER], [1],
|
||||
[Including Ndb Cluster DB sci transporter])
|
||||
AC_SUBST(NDB_SCI_INCLUDES)
|
||||
AC_SUBST(NDB_SCI_LIBS)
|
||||
have_ndb_sci="yes"
|
||||
AC_MSG_RESULT([found sci transporter in $mysql_sci_dir/{include, lib}])
|
||||
else
|
||||
AC_MSG_RESULT([could not find sci transporter in $mysql_sci_dir/{include, lib}])
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_ARG_WITH([ndb-shm],
|
||||
[
|
||||
--with-ndb-shm Include the NDB Cluster shared memory transporter],
|
||||
[ndb_shm="$withval"],
|
||||
[ndb_shm=no])
|
||||
AC_ARG_WITH([ndb-sci],
|
||||
[
|
||||
--with-ndb-sci Include the NDB Cluster sci transporter],
|
||||
[ndb_sci="$withval"],
|
||||
[ndb_sci=no])
|
||||
AC_ARG_WITH([ndb-test],
|
||||
[
|
||||
--with-ndb-test Include the NDB Cluster ndbapi test programs],
|
||||
|
|
@ -1590,19 +1617,6 @@ AC_DEFUN([MYSQL_CHECK_NDB_OPTIONS], [
|
|||
;;
|
||||
esac
|
||||
|
||||
have_ndb_sci=no
|
||||
case "$ndb_sci" in
|
||||
yes )
|
||||
AC_MSG_RESULT([-- including sci transporter])
|
||||
AC_DEFINE([NDB_SCI_TRANSPORTER], [1],
|
||||
[Including Ndb Cluster DB sci transporter])
|
||||
have_ndb_sci="yes"
|
||||
;;
|
||||
* )
|
||||
AC_MSG_RESULT([-- not including sci transporter])
|
||||
;;
|
||||
esac
|
||||
|
||||
have_ndb_test=no
|
||||
case "$ndb_test" in
|
||||
yes )
|
||||
|
|
|
|||
|
|
@ -3024,11 +3024,11 @@ AC_SUBST([ndb_port_base])
|
|||
ndb_transporter_opt_objs=""
|
||||
if test X"$have_ndb_shm" = Xyes
|
||||
then
|
||||
ndb_transporter_opt_objs="$(ndb_transporter_opt_objs) SHM_Transporter.lo SHM_Transporter.unix.lo"
|
||||
ndb_transporter_opt_objs="$ndb_transporter_opt_objs SHM_Transporter.lo SHM_Transporter.unix.lo"
|
||||
fi
|
||||
if test X"$have_ndb_sci" = Xyes
|
||||
then
|
||||
ndb_transporter_opt_objs="$(ndb_transporter_opt_objs) SCI_Transporter.lo"
|
||||
ndb_transporter_opt_objs="$ndb_transporter_opt_objs SCI_Transporter.lo"
|
||||
fi
|
||||
AC_SUBST([ndb_transporter_opt_objs])
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ LDADD += $(top_builddir)/ndb/test/src/libNDBT.a \
|
|||
$(top_builddir)/ndb/src/libndbclient.la \
|
||||
$(top_builddir)/dbug/libdbug.a \
|
||||
$(top_builddir)/mysys/libmysys.a \
|
||||
$(top_builddir)/strings/libmystrings.a
|
||||
$(top_builddir)/strings/libmystrings.a @NDB_SCI_LIBS@
|
||||
|
||||
INCLUDES += -I$(srcdir) -I$(top_srcdir)/include \
|
||||
-I$(top_srcdir)/ndb/include \
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ LDADD += \
|
|||
$(top_builddir)/ndb/src/libndbclient.la \
|
||||
$(top_builddir)/dbug/libdbug.a \
|
||||
$(top_builddir)/mysys/libmysys.a \
|
||||
$(top_builddir)/strings/libmystrings.a
|
||||
$(top_builddir)/strings/libmystrings.a @NDB_SCI_LIBS@
|
||||
|
||||
INCLUDES += -I$(srcdir) -I$(top_srcdir)/include \
|
||||
-I$(top_srcdir)/ndb/include \
|
||||
|
|
|
|||
|
|
@ -121,16 +121,14 @@
|
|||
#define CFG_SHM_KEY 502
|
||||
#define CFG_SHM_BUFFER_MEM 503
|
||||
|
||||
#define CFG_SCI_ID_0 550
|
||||
#define CFG_SCI_ID_1 551
|
||||
#define CFG_SCI_SEND_LIMIT 552
|
||||
#define CFG_SCI_BUFFER_MEM 553
|
||||
#define CFG_SCI_NODE1_ADAPTERS 554
|
||||
#define CFG_SCI_NODE1_ADAPTER0 555
|
||||
#define CFG_SCI_NODE1_ADAPTER1 556
|
||||
#define CFG_SCI_NODE2_ADAPTERS 554
|
||||
#define CFG_SCI_NODE2_ADAPTER0 555
|
||||
#define CFG_SCI_NODE2_ADAPTER1 556
|
||||
#define CFG_SCI_HOST1_ID_0 550
|
||||
#define CFG_SCI_HOST1_ID_1 551
|
||||
#define CFG_SCI_HOST2_ID_0 552
|
||||
#define CFG_SCI_HOST2_ID_1 553
|
||||
#define CFG_SCI_HOSTNAME_1 554
|
||||
#define CFG_SCI_HOSTNAME_2 555
|
||||
#define CFG_SCI_SEND_LIMIT 556
|
||||
#define CFG_SCI_BUFFER_MEM 557
|
||||
|
||||
#define CFG_OSE_PRIO_A_SIZE 602
|
||||
#define CFG_OSE_PRIO_B_SIZE 603
|
||||
|
|
|
|||
|
|
@ -59,8 +59,6 @@ struct TCP_TransporterConfiguration {
|
|||
NodeId localNodeId;
|
||||
Uint32 sendBufferSize; // Size of SendBuffer of priority B
|
||||
Uint32 maxReceiveSize; // Maximum no of bytes to receive
|
||||
Uint32 byteOrder;
|
||||
bool compression;
|
||||
bool checksum;
|
||||
bool signalId;
|
||||
};
|
||||
|
|
@ -72,10 +70,8 @@ struct SHM_TransporterConfiguration {
|
|||
Uint32 port;
|
||||
NodeId remoteNodeId;
|
||||
NodeId localNodeId;
|
||||
bool compression;
|
||||
bool checksum;
|
||||
bool signalId;
|
||||
int byteOrder;
|
||||
|
||||
Uint32 shmKey;
|
||||
Uint32 shmSize;
|
||||
|
|
@ -89,10 +85,8 @@ struct OSE_TransporterConfiguration {
|
|||
const char *localHostName;
|
||||
NodeId remoteNodeId;
|
||||
NodeId localNodeId;
|
||||
bool compression;
|
||||
bool checksum;
|
||||
bool signalId;
|
||||
int byteOrder;
|
||||
|
||||
Uint32 prioASignalSize;
|
||||
Uint32 prioBSignalSize;
|
||||
|
|
@ -103,20 +97,20 @@ struct OSE_TransporterConfiguration {
|
|||
* SCI Transporter Configuration
|
||||
*/
|
||||
struct SCI_TransporterConfiguration {
|
||||
const char *remoteHostName;
|
||||
const char *localHostName;
|
||||
Uint32 port;
|
||||
Uint32 sendLimit; // Packet size
|
||||
Uint32 bufferSize; // Buffer size
|
||||
|
||||
Uint32 nLocalAdapters; // 1 or 2, the number of adapters on local host
|
||||
|
||||
Uint32 nRemoteAdapters;
|
||||
Uint32 remoteSciNodeId0; // SCInodeId for adapter 1
|
||||
Uint32 remoteSciNodeId1; // SCInodeId for adapter 2
|
||||
|
||||
NodeId localNodeId; // Local node Id
|
||||
NodeId remoteNodeId; // Remote node Id
|
||||
|
||||
Uint32 byteOrder;
|
||||
bool compression;
|
||||
bool checksum;
|
||||
bool signalId;
|
||||
|
||||
|
|
|
|||
|
|
@ -133,7 +133,6 @@ IPCConfig::configureTransporters(TransporterRegistry * theTransporterRegistry){
|
|||
Uint32 compression;
|
||||
Uint32 checksum;
|
||||
if(!tmp->get("SendSignalId", &sendSignalId)) continue;
|
||||
if(!tmp->get("Compression", &compression)) continue;
|
||||
if(!tmp->get("Checksum", &checksum)) continue;
|
||||
|
||||
const char * type;
|
||||
|
|
@ -143,8 +142,6 @@ IPCConfig::configureTransporters(TransporterRegistry * theTransporterRegistry){
|
|||
SHM_TransporterConfiguration conf;
|
||||
conf.localNodeId = the_ownId;
|
||||
conf.remoteNodeId = (nodeId1 != the_ownId ? nodeId1 : nodeId2);
|
||||
conf.byteOrder = 0;
|
||||
conf.compression = compression;
|
||||
conf.checksum = checksum;
|
||||
conf.signalId = sendSignalId;
|
||||
|
||||
|
|
@ -164,8 +161,6 @@ IPCConfig::configureTransporters(TransporterRegistry * theTransporterRegistry){
|
|||
SCI_TransporterConfiguration conf;
|
||||
conf.localNodeId = the_ownId;
|
||||
conf.remoteNodeId = (nodeId1 != the_ownId ? nodeId1 : nodeId2);
|
||||
conf.byteOrder = 0;
|
||||
conf.compression = compression;
|
||||
conf.checksum = checksum;
|
||||
conf.signalId = sendSignalId;
|
||||
|
||||
|
|
@ -174,18 +169,16 @@ IPCConfig::configureTransporters(TransporterRegistry * theTransporterRegistry){
|
|||
|
||||
if(the_ownId == nodeId1){
|
||||
if(!tmp->get("Node1_NoOfAdapters", &conf.nLocalAdapters)) continue;
|
||||
if(!tmp->get("Node2_NoOfAdapters", &conf.nRemoteAdapters)) continue;
|
||||
if(!tmp->get("Node2_Adapter", 0, &conf.remoteSciNodeId0)) continue;
|
||||
|
||||
if(conf.nRemoteAdapters > 1){
|
||||
if(conf.nLocalAdapters > 1){
|
||||
if(!tmp->get("Node2_Adapter", 1, &conf.remoteSciNodeId1)) continue;
|
||||
}
|
||||
} else {
|
||||
if(!tmp->get("Node2_NoOfAdapters", &conf.nLocalAdapters)) continue;
|
||||
if(!tmp->get("Node1_NoOfAdapters", &conf.nRemoteAdapters)) continue;
|
||||
if(!tmp->get("Node1_Adapter", 0, &conf.remoteSciNodeId0)) continue;
|
||||
|
||||
if(conf.nRemoteAdapters > 1){
|
||||
if(conf.nLocalAdapters > 1){
|
||||
if(!tmp->get("Node1_Adapter", 1, &conf.remoteSciNodeId1)) continue;
|
||||
}
|
||||
}
|
||||
|
|
@ -243,8 +236,6 @@ IPCConfig::configureTransporters(TransporterRegistry * theTransporterRegistry){
|
|||
conf.localHostName = ownHostName;
|
||||
conf.remoteNodeId = remoteNodeId;
|
||||
conf.localNodeId = ownNodeId;
|
||||
conf.byteOrder = 0;
|
||||
conf.compression = compression;
|
||||
conf.checksum = checksum;
|
||||
conf.signalId = sendSignalId;
|
||||
|
||||
|
|
@ -270,8 +261,6 @@ IPCConfig::configureTransporters(TransporterRegistry * theTransporterRegistry){
|
|||
conf.localHostName = ownHostName;
|
||||
conf.remoteNodeId = remoteNodeId;
|
||||
conf.localNodeId = ownNodeId;
|
||||
conf.byteOrder = 0;
|
||||
conf.compression = compression;
|
||||
conf.checksum = checksum;
|
||||
conf.signalId = sendSignalId;
|
||||
|
||||
|
|
@ -344,6 +333,7 @@ Uint32
|
|||
IPCConfig::configureTransporters(Uint32 nodeId,
|
||||
const class ndb_mgm_configuration & config,
|
||||
class TransporterRegistry & tr){
|
||||
DBUG_ENTER("IPCConfig::configureTransporters");
|
||||
|
||||
Uint32 noOfTransportersCreated= 0;
|
||||
ndb_mgm_configuration_iterator iter(config, CFG_SECTION_CONNECTION);
|
||||
|
|
@ -379,14 +369,13 @@ IPCConfig::configureTransporters(Uint32 nodeId,
|
|||
if (nodeId <= nodeId1 && nodeId <= nodeId2) {
|
||||
tr.add_transporter_interface(localHostName, server_port);
|
||||
}
|
||||
|
||||
DBUG_PRINT("info", ("Transporter between this node %d and node %d using port %d, signalId %d, checksum %d",
|
||||
nodeId, remoteNodeId, tmp_server_port, sendSignalId, checksum));
|
||||
switch(type){
|
||||
case CONNECTION_TYPE_SHM:{
|
||||
SHM_TransporterConfiguration conf;
|
||||
conf.localNodeId = nodeId;
|
||||
conf.remoteNodeId = remoteNodeId;
|
||||
conf.byteOrder = 0;
|
||||
conf.compression = 0;
|
||||
conf.checksum = checksum;
|
||||
conf.signalId = sendSignalId;
|
||||
|
||||
|
|
@ -396,45 +385,60 @@ IPCConfig::configureTransporters(Uint32 nodeId,
|
|||
conf.port= server_port;
|
||||
|
||||
if(!tr.createTransporter(&conf)){
|
||||
DBUG_PRINT("error", ("Failed to create SCI Transporter from %d to %d",
|
||||
conf.localNodeId, conf.remoteNodeId));
|
||||
ndbout << "Failed to create SHM Transporter from: "
|
||||
<< conf.localNodeId << " to: " << conf.remoteNodeId << endl;
|
||||
} else {
|
||||
noOfTransportersCreated++;
|
||||
}
|
||||
DBUG_PRINT("info", ("Created SHM Transporter using shmkey %d, buf size = %d",
|
||||
conf.shmKey, conf.shmSize));
|
||||
break;
|
||||
}
|
||||
case CONNECTION_TYPE_SCI:{
|
||||
SCI_TransporterConfiguration conf;
|
||||
const char * host1, * host2;
|
||||
conf.localNodeId = nodeId;
|
||||
conf.remoteNodeId = remoteNodeId;
|
||||
conf.byteOrder = 0;
|
||||
conf.compression = 0;
|
||||
conf.checksum = checksum;
|
||||
conf.signalId = sendSignalId;
|
||||
conf.port= tmp_server_port;
|
||||
|
||||
if(iter.get(CFG_SCI_HOSTNAME_1, &host1)) break;
|
||||
if(iter.get(CFG_SCI_HOSTNAME_2, &host2)) break;
|
||||
|
||||
conf.localHostName = (nodeId == nodeId1 ? host1 : host2);
|
||||
conf.remoteHostName = (nodeId == nodeId1 ? host2 : host1);
|
||||
|
||||
if(iter.get(CFG_SCI_SEND_LIMIT, &conf.sendLimit)) break;
|
||||
if(iter.get(CFG_SCI_BUFFER_MEM, &conf.bufferSize)) break;
|
||||
|
||||
if(nodeId == nodeId1){
|
||||
if(iter.get(CFG_SCI_NODE1_ADAPTERS, &conf.nLocalAdapters)) break;
|
||||
if(iter.get(CFG_SCI_NODE2_ADAPTERS, &conf.nRemoteAdapters)) break;
|
||||
if(iter.get(CFG_SCI_NODE2_ADAPTER0, &conf.remoteSciNodeId0)) break;
|
||||
if(conf.nRemoteAdapters > 1){
|
||||
if(iter.get(CFG_SCI_NODE2_ADAPTER1, &conf.remoteSciNodeId1)) break;
|
||||
}
|
||||
if (nodeId == nodeId1) {
|
||||
if(iter.get(CFG_SCI_HOST2_ID_0, &conf.remoteSciNodeId0)) break;
|
||||
if(iter.get(CFG_SCI_HOST2_ID_1, &conf.remoteSciNodeId1)) break;
|
||||
} else {
|
||||
if(iter.get(CFG_SCI_NODE2_ADAPTERS, &conf.nLocalAdapters)) break;
|
||||
if(iter.get(CFG_SCI_NODE1_ADAPTERS, &conf.nRemoteAdapters)) break;
|
||||
if(iter.get(CFG_SCI_NODE1_ADAPTER0, &conf.remoteSciNodeId0)) break;
|
||||
if(conf.nRemoteAdapters > 1){
|
||||
if(iter.get(CFG_SCI_NODE1_ADAPTER1, &conf.remoteSciNodeId1)) break;
|
||||
if(iter.get(CFG_SCI_HOST1_ID_0, &conf.remoteSciNodeId0)) break;
|
||||
if(iter.get(CFG_SCI_HOST1_ID_1, &conf.remoteSciNodeId1)) break;
|
||||
}
|
||||
if (conf.remoteSciNodeId1 == 0) {
|
||||
conf.nLocalAdapters = 1;
|
||||
} else {
|
||||
conf.nLocalAdapters = 2;
|
||||
}
|
||||
|
||||
if(!tr.createTransporter(&conf)){
|
||||
DBUG_PRINT("error", ("Failed to create SCI Transporter from %d to %d",
|
||||
conf.localNodeId, conf.remoteNodeId));
|
||||
ndbout << "Failed to create SCI Transporter from: "
|
||||
<< conf.localNodeId << " to: " << conf.remoteNodeId << endl;
|
||||
} else {
|
||||
DBUG_PRINT("info", ("Created SCI Transporter: Adapters = %d, remote SCI node id %d",
|
||||
conf.nLocalAdapters, conf.remoteSciNodeId0));
|
||||
DBUG_PRINT("info", ("Host 1 = %s, Host 2 = %s, sendLimit = %d, buf size = %d",
|
||||
conf.localHostName, conf.remoteHostName, conf.sendLimit, conf.bufferSize));
|
||||
if (conf.nLocalAdapters > 1) {
|
||||
DBUG_PRINT("info", ("Fault-tolerant with 2 Remote Adapters, second remote SCI node id = %d",
|
||||
conf.remoteSciNodeId1));
|
||||
}
|
||||
noOfTransportersCreated++;
|
||||
continue;
|
||||
}
|
||||
|
|
@ -458,8 +462,6 @@ IPCConfig::configureTransporters(Uint32 nodeId,
|
|||
conf.remoteNodeId = remoteNodeId;
|
||||
conf.localHostName = localHostName;
|
||||
conf.remoteHostName = remoteHostName;
|
||||
conf.byteOrder = 0;
|
||||
conf.compression = 0;
|
||||
conf.checksum = checksum;
|
||||
conf.signalId = sendSignalId;
|
||||
|
||||
|
|
@ -469,6 +471,9 @@ IPCConfig::configureTransporters(Uint32 nodeId,
|
|||
} else {
|
||||
noOfTransportersCreated++;
|
||||
}
|
||||
DBUG_PRINT("info", ("Created TCP Transporter: sendBufferSize = %d, maxReceiveSize = %d",
|
||||
conf.sendBufferSize, conf.maxReceiveSize));
|
||||
break;
|
||||
case CONNECTION_TYPE_OSE:{
|
||||
OSE_TransporterConfiguration conf;
|
||||
|
||||
|
|
@ -480,8 +485,6 @@ IPCConfig::configureTransporters(Uint32 nodeId,
|
|||
conf.remoteNodeId = remoteNodeId;
|
||||
conf.localHostName = localHostName;
|
||||
conf.remoteHostName = remoteHostName;
|
||||
conf.byteOrder = 0;
|
||||
conf.compression = 0;
|
||||
conf.checksum = checksum;
|
||||
conf.signalId = sendSignalId;
|
||||
|
||||
|
|
@ -499,6 +502,6 @@ IPCConfig::configureTransporters(Uint32 nodeId,
|
|||
}
|
||||
}
|
||||
}
|
||||
return noOfTransportersCreated;
|
||||
DBUG_RETURN(noOfTransportersCreated);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ EXTRA_libtransporter_la_SOURCES = SHM_Transporter.cpp SHM_Transporter.unix.cpp S
|
|||
libtransporter_la_LIBADD = @ndb_transporter_opt_objs@
|
||||
libtransporter_la_DEPENDENCIES = @ndb_transporter_opt_objs@
|
||||
|
||||
INCLUDES_LOC = -I$(top_srcdir)/ndb/include/kernel -I$(top_srcdir)/ndb/include/transporter
|
||||
INCLUDES_LOC = -I$(top_srcdir)/ndb/include/kernel -I$(top_srcdir)/ndb/include/transporter @NDB_SCI_INCLUDES@
|
||||
|
||||
include $(top_srcdir)/ndb/config/common.mk.am
|
||||
include $(top_srcdir)/ndb/config/type_util.mk.am
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
#include <TransporterCallback.hpp>
|
||||
#include <RefConvert.hpp>
|
||||
|
||||
#define MAX_RECEIVED_SIGNALS 1024
|
||||
Uint32
|
||||
TransporterRegistry::unpack(Uint32 * readPtr,
|
||||
Uint32 sizeOfData,
|
||||
|
|
@ -30,12 +31,15 @@ TransporterRegistry::unpack(Uint32 * readPtr,
|
|||
LinearSectionPtr ptr[3];
|
||||
|
||||
Uint32 usedData = 0;
|
||||
Uint32 loop_count = 0;
|
||||
|
||||
if(state == NoHalt || state == HaltOutput){
|
||||
while(sizeOfData >= 4 + sizeof(Protocol6)){
|
||||
while ((sizeOfData >= 4 + sizeof(Protocol6)) &&
|
||||
(loop_count < MAX_RECEIVED_SIGNALS)) {
|
||||
Uint32 word1 = readPtr[0];
|
||||
Uint32 word2 = readPtr[1];
|
||||
Uint32 word3 = readPtr[2];
|
||||
loop_count++;
|
||||
|
||||
#if 0
|
||||
if(Protocol6::getByteOrder(word1) != MY_OWN_BYTE_ORDER){
|
||||
|
|
@ -112,10 +116,12 @@ TransporterRegistry::unpack(Uint32 * readPtr,
|
|||
} else {
|
||||
/** state = HaltIO || state == HaltInput */
|
||||
|
||||
while(sizeOfData >= 4 + sizeof(Protocol6)){
|
||||
while ((sizeOfData >= 4 + sizeof(Protocol6)) &&
|
||||
(loop_count < MAX_RECEIVED_SIGNALS)) {
|
||||
Uint32 word1 = readPtr[0];
|
||||
Uint32 word2 = readPtr[1];
|
||||
Uint32 word3 = readPtr[2];
|
||||
loop_count++;
|
||||
|
||||
#if 0
|
||||
if(Protocol6::getByteOrder(word1) != MY_OWN_BYTE_ORDER){
|
||||
|
|
@ -208,12 +214,13 @@ TransporterRegistry::unpack(Uint32 * readPtr,
|
|||
IOState state) {
|
||||
static SignalHeader signalHeader;
|
||||
static LinearSectionPtr ptr[3];
|
||||
Uint32 loop_count = 0;
|
||||
if(state == NoHalt || state == HaltOutput){
|
||||
while(readPtr < eodPtr){
|
||||
while ((readPtr < eodPtr) && (loop_count < MAX_RECEIVED_SIGNALS)) {
|
||||
Uint32 word1 = readPtr[0];
|
||||
Uint32 word2 = readPtr[1];
|
||||
Uint32 word3 = readPtr[2];
|
||||
|
||||
loop_count++;
|
||||
#if 0
|
||||
if(Protocol6::getByteOrder(word1) != MY_OWN_BYTE_ORDER){
|
||||
//Do funky stuff
|
||||
|
|
@ -280,11 +287,11 @@ TransporterRegistry::unpack(Uint32 * readPtr,
|
|||
} else {
|
||||
/** state = HaltIO || state == HaltInput */
|
||||
|
||||
while(readPtr < eodPtr){
|
||||
while ((readPtr < eodPtr) && (loop_count < MAX_RECEIVED_SIGNALS)) {
|
||||
Uint32 word1 = readPtr[0];
|
||||
Uint32 word2 = readPtr[1];
|
||||
Uint32 word3 = readPtr[2];
|
||||
|
||||
loop_count++;
|
||||
#if 0
|
||||
if(Protocol6::getByteOrder(word1) != MY_OWN_BYTE_ORDER){
|
||||
//Do funky stuff
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
#include <ndb_types.h>
|
||||
|
||||
/**
|
||||
/**
|
||||
* The SCI Transporter
|
||||
*
|
||||
* The design goal of the SCI transporter is to deliver high performance
|
||||
|
|
@ -135,15 +135,17 @@ public:
|
|||
bool getConnectionStatus();
|
||||
|
||||
private:
|
||||
SCI_Transporter(Uint32 packetSize,
|
||||
SCI_Transporter(TransporterRegistry &t_reg,
|
||||
const char *local_host,
|
||||
const char *remote_host,
|
||||
int port,
|
||||
Uint32 packetSize,
|
||||
Uint32 bufferSize,
|
||||
Uint32 nAdapters,
|
||||
Uint16 remoteSciNodeId0,
|
||||
Uint16 remoteSciNodeId1,
|
||||
NodeId localNodeID,
|
||||
NodeId remoteNodeID,
|
||||
int byteorder,
|
||||
bool compression,
|
||||
bool checksum,
|
||||
bool signalId,
|
||||
Uint32 reportFreq = 4096);
|
||||
|
|
@ -160,7 +162,8 @@ private:
|
|||
/**
|
||||
* For statistics on transfered packets
|
||||
*/
|
||||
#ifdef DEBUG_TRANSPORTER
|
||||
//#ifdef DEBUG_TRANSPORTER
|
||||
#if 1
|
||||
Uint32 i1024;
|
||||
Uint32 i2048;
|
||||
Uint32 i2049;
|
||||
|
|
@ -177,10 +180,8 @@ private:
|
|||
struct {
|
||||
Uint32 * m_buffer; // The buffer
|
||||
Uint32 m_dataSize; // No of words in buffer
|
||||
Uint32 m_bufferSize; // Buffer size
|
||||
Uint32 m_sendBufferSize; // Buffer size
|
||||
Uint32 m_forceSendLimit; // Send when buffer is this full
|
||||
|
||||
bool full() const { return (m_dataSize * 4) > m_forceSendLimit ;}
|
||||
} m_sendBuffer;
|
||||
|
||||
SHM_Reader * reader;
|
||||
|
|
@ -196,7 +197,7 @@ private:
|
|||
Uint32 m_adapters;
|
||||
Uint32 m_numberOfRemoteNodes;
|
||||
|
||||
Uint16* m_remoteNodes;
|
||||
Uint16 m_remoteNodes[2];
|
||||
|
||||
typedef struct SciAdapter {
|
||||
sci_desc_t scidesc;
|
||||
|
|
@ -296,12 +297,11 @@ private:
|
|||
*/
|
||||
bool sendIsPossible(struct timeval * timeout);
|
||||
|
||||
|
||||
void getReceivePtr(Uint32 ** ptr, Uint32 ** eod){
|
||||
reader->getReadPtr(* ptr, * eod);
|
||||
}
|
||||
|
||||
void updateReceivePtr(Uint32 * ptr){
|
||||
void updateReceivePtr(Uint32 *ptr){
|
||||
reader->updateReadPtr(ptr);
|
||||
}
|
||||
|
||||
|
|
@ -341,6 +341,8 @@ private:
|
|||
*/
|
||||
void failoverShmWriter();
|
||||
|
||||
bool init_local();
|
||||
bool init_remote();
|
||||
|
||||
protected:
|
||||
|
||||
|
|
@ -350,7 +352,8 @@ protected:
|
|||
* retrying.
|
||||
* @return Returns true on success, otherwize falser
|
||||
*/
|
||||
bool connectImpl(Uint32 timeOutMillis);
|
||||
bool connect_server_impl(NDB_SOCKET_TYPE sockfd);
|
||||
bool connect_client_impl(NDB_SOCKET_TYPE sockfd);
|
||||
|
||||
/**
|
||||
* We will disconnect if:
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public:
|
|||
}
|
||||
|
||||
void clear() {
|
||||
m_readIndex = * m_sharedReadIndex;
|
||||
m_readIndex = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -71,7 +71,7 @@ public:
|
|||
/**
|
||||
* Update read ptr
|
||||
*/
|
||||
inline void updateReadPtr(Uint32 * readPtr);
|
||||
inline void updateReadPtr(Uint32 *ptr);
|
||||
|
||||
private:
|
||||
char * const m_startOfBuffer;
|
||||
|
|
@ -98,8 +98,8 @@ SHM_Reader::empty() const{
|
|||
*/
|
||||
inline
|
||||
void
|
||||
SHM_Reader::getReadPtr(Uint32 * & ptr, Uint32 * & eod){
|
||||
|
||||
SHM_Reader::getReadPtr(Uint32 * & ptr, Uint32 * & eod)
|
||||
{
|
||||
Uint32 tReadIndex = m_readIndex;
|
||||
Uint32 tWriteIndex = * m_sharedWriteIndex;
|
||||
|
||||
|
|
@ -117,14 +117,14 @@ SHM_Reader::getReadPtr(Uint32 * & ptr, Uint32 * & eod){
|
|||
*/
|
||||
inline
|
||||
void
|
||||
SHM_Reader::updateReadPtr(Uint32 * ptr){
|
||||
|
||||
Uint32 tReadIndex = ((char *)ptr) - m_startOfBuffer;
|
||||
SHM_Reader::updateReadPtr(Uint32 *ptr)
|
||||
{
|
||||
Uint32 tReadIndex = ((char*)ptr) - m_startOfBuffer;
|
||||
|
||||
assert(tReadIndex < m_totalBufferSize);
|
||||
|
||||
if(tReadIndex >= m_bufferSize){
|
||||
tReadIndex = 0; //-= m_bufferSize;
|
||||
tReadIndex = 0;
|
||||
}
|
||||
|
||||
m_readIndex = tReadIndex;
|
||||
|
|
@ -149,7 +149,7 @@ public:
|
|||
}
|
||||
|
||||
void clear() {
|
||||
m_writeIndex = * m_sharedWriteIndex;
|
||||
m_writeIndex = 0;
|
||||
}
|
||||
|
||||
inline char * getWritePtr(Uint32 sz);
|
||||
|
|
@ -206,7 +206,7 @@ SHM_Writer::updateWritePtr(Uint32 sz){
|
|||
assert(tWriteIndex < m_totalBufferSize);
|
||||
|
||||
if(tWriteIndex >= m_bufferSize){
|
||||
tWriteIndex = 0; //-= m_bufferSize;
|
||||
tWriteIndex = 0;
|
||||
}
|
||||
|
||||
m_writeIndex = tWriteIndex;
|
||||
|
|
|
|||
|
|
@ -32,13 +32,12 @@ SHM_Transporter::SHM_Transporter(TransporterRegistry &t_reg,
|
|||
int r_port,
|
||||
NodeId lNodeId,
|
||||
NodeId rNodeId,
|
||||
bool compression,
|
||||
bool checksum,
|
||||
bool signalId,
|
||||
key_t _shmKey,
|
||||
Uint32 _shmSize) :
|
||||
Transporter(t_reg, lHostName, rHostName, r_port, lNodeId, rNodeId,
|
||||
0, compression, checksum, signalId),
|
||||
0, false, checksum, signalId),
|
||||
shmKey(_shmKey),
|
||||
shmSize(_shmSize)
|
||||
{
|
||||
|
|
@ -92,8 +91,6 @@ SHM_Transporter::setupBuffers(){
|
|||
clientStatusFlag = base2 + 4;
|
||||
char * startOfBuf2 = ((char *)base2)+sharedSize;
|
||||
|
||||
* sharedReadIndex2 = * sharedWriteIndex2 = 0;
|
||||
|
||||
if(isServer){
|
||||
* serverStatusFlag = 0;
|
||||
reader = new SHM_Reader(startOfBuf1,
|
||||
|
|
@ -109,10 +106,10 @@ SHM_Transporter::setupBuffers(){
|
|||
sharedWriteIndex2);
|
||||
|
||||
* sharedReadIndex1 = 0;
|
||||
* sharedWriteIndex2 = 0;
|
||||
* sharedWriteIndex1 = 0;
|
||||
|
||||
* sharedReadIndex2 = 0;
|
||||
* sharedWriteIndex1 = 0;
|
||||
* sharedWriteIndex2 = 0;
|
||||
|
||||
reader->clear();
|
||||
writer->clear();
|
||||
|
|
@ -224,6 +221,7 @@ SHM_Transporter::prepareSend(const SignalHeader * const signalHeader,
|
|||
bool
|
||||
SHM_Transporter::connect_server_impl(NDB_SOCKET_TYPE sockfd)
|
||||
{
|
||||
DBUG_ENTER("SHM_Transporter::connect_server_impl");
|
||||
SocketOutputStream s_output(sockfd);
|
||||
SocketInputStream s_input(sockfd);
|
||||
char buf[256];
|
||||
|
|
@ -233,7 +231,7 @@ SHM_Transporter::connect_server_impl(NDB_SOCKET_TYPE sockfd)
|
|||
if (!ndb_shm_create()) {
|
||||
report_error(TE_SHM_UNABLE_TO_CREATE_SEGMENT);
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return false;
|
||||
DBUG_RETURN(false);
|
||||
}
|
||||
_shmSegCreated = true;
|
||||
}
|
||||
|
|
@ -243,7 +241,7 @@ SHM_Transporter::connect_server_impl(NDB_SOCKET_TYPE sockfd)
|
|||
if (!ndb_shm_attach()) {
|
||||
report_error(TE_SHM_UNABLE_TO_ATTACH_SEGMENT);
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return false;
|
||||
DBUG_RETURN(false);
|
||||
}
|
||||
_attached = true;
|
||||
}
|
||||
|
|
@ -254,7 +252,7 @@ SHM_Transporter::connect_server_impl(NDB_SOCKET_TYPE sockfd)
|
|||
// Wait for ok from client
|
||||
if (s_input.gets(buf, 256) == 0) {
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return false;
|
||||
DBUG_RETURN(false);
|
||||
}
|
||||
|
||||
int r= connect_common(sockfd);
|
||||
|
|
@ -265,17 +263,20 @@ SHM_Transporter::connect_server_impl(NDB_SOCKET_TYPE sockfd)
|
|||
// Wait for ok from client
|
||||
if (s_input.gets(buf, 256) == 0) {
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return false;
|
||||
DBUG_RETURN(false);
|
||||
}
|
||||
DBUG_PRINT("info", ("Successfully connected server to node %d",
|
||||
remoteNodeId));
|
||||
}
|
||||
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return r;
|
||||
DBUG_RETURN(r);
|
||||
}
|
||||
|
||||
bool
|
||||
SHM_Transporter::connect_client_impl(NDB_SOCKET_TYPE sockfd)
|
||||
{
|
||||
DBUG_ENTER("SHM_Transporter::connect_client_impl");
|
||||
SocketInputStream s_input(sockfd);
|
||||
SocketOutputStream s_output(sockfd);
|
||||
char buf[256];
|
||||
|
|
@ -283,14 +284,18 @@ SHM_Transporter::connect_client_impl(NDB_SOCKET_TYPE sockfd)
|
|||
// Wait for server to create and attach
|
||||
if (s_input.gets(buf, 256) == 0) {
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return false;
|
||||
DBUG_PRINT("error", ("Server id %d did not attach",
|
||||
remoteNodeId));
|
||||
DBUG_RETURN(false);
|
||||
}
|
||||
|
||||
// Create
|
||||
if(!_shmSegCreated){
|
||||
if (!ndb_shm_get()) {
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return false;
|
||||
DBUG_PRINT("error", ("Failed create of shm seg to node %d",
|
||||
remoteNodeId));
|
||||
DBUG_RETURN(false);
|
||||
}
|
||||
_shmSegCreated = true;
|
||||
}
|
||||
|
|
@ -300,7 +305,9 @@ SHM_Transporter::connect_client_impl(NDB_SOCKET_TYPE sockfd)
|
|||
if (!ndb_shm_attach()) {
|
||||
report_error(TE_SHM_UNABLE_TO_ATTACH_SEGMENT);
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return false;
|
||||
DBUG_PRINT("error", ("Failed attach of shm seg to node %d",
|
||||
remoteNodeId));
|
||||
DBUG_RETURN(false);
|
||||
}
|
||||
_attached = true;
|
||||
}
|
||||
|
|
@ -314,21 +321,28 @@ SHM_Transporter::connect_client_impl(NDB_SOCKET_TYPE sockfd)
|
|||
// Wait for ok from server
|
||||
if (s_input.gets(buf, 256) == 0) {
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return false;
|
||||
DBUG_PRINT("error", ("No ok from server node %d",
|
||||
remoteNodeId));
|
||||
DBUG_RETURN(false);
|
||||
}
|
||||
// Send ok to server
|
||||
s_output.println("shm client 2 ok");
|
||||
DBUG_PRINT("info", ("Successfully connected client to node %d",
|
||||
remoteNodeId));
|
||||
}
|
||||
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return r;
|
||||
DBUG_RETURN(r);
|
||||
}
|
||||
|
||||
bool
|
||||
SHM_Transporter::connect_common(NDB_SOCKET_TYPE sockfd)
|
||||
{
|
||||
if (!checkConnected())
|
||||
if (!checkConnected()) {
|
||||
DBUG_PRINT("error", ("Already connected to node %d",
|
||||
remoteNodeId));
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!setupBuffersDone) {
|
||||
setupBuffers();
|
||||
|
|
@ -341,5 +355,7 @@ SHM_Transporter::connect_common(NDB_SOCKET_TYPE sockfd)
|
|||
return true;
|
||||
}
|
||||
|
||||
DBUG_PRINT("error", ("Failed to set up buffers to node %d",
|
||||
remoteNodeId));
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ public:
|
|||
int r_port,
|
||||
NodeId lNodeId,
|
||||
NodeId rNodeId,
|
||||
bool compression,
|
||||
bool checksum,
|
||||
bool signalId,
|
||||
key_t shmKey,
|
||||
|
|
@ -127,6 +126,7 @@ protected:
|
|||
private:
|
||||
bool _shmSegCreated;
|
||||
bool _attached;
|
||||
bool m_connected;
|
||||
|
||||
key_t shmKey;
|
||||
volatile Uint32 * serverStatusFlag;
|
||||
|
|
|
|||
|
|
@ -70,11 +70,10 @@ TCP_Transporter::TCP_Transporter(TransporterRegistry &t_reg,
|
|||
int r_port,
|
||||
NodeId lNodeId,
|
||||
NodeId rNodeId,
|
||||
int byte_order,
|
||||
bool compr, bool chksm, bool signalId,
|
||||
bool chksm, bool signalId,
|
||||
Uint32 _reportFreq) :
|
||||
Transporter(t_reg, lHostName, rHostName, r_port, lNodeId, rNodeId,
|
||||
byte_order, compr, chksm, signalId),
|
||||
0, false, chksm, signalId),
|
||||
m_sendBuffer(sendBufSize)
|
||||
{
|
||||
maxReceiveSize = maxRecvSize;
|
||||
|
|
@ -106,12 +105,14 @@ TCP_Transporter::~TCP_Transporter() {
|
|||
|
||||
bool TCP_Transporter::connect_server_impl(NDB_SOCKET_TYPE sockfd)
|
||||
{
|
||||
return connect_common(sockfd);
|
||||
DBUG_ENTER("TCP_Transpporter::connect_server_impl");
|
||||
DBUG_RETURN(connect_common(sockfd));
|
||||
}
|
||||
|
||||
bool TCP_Transporter::connect_client_impl(NDB_SOCKET_TYPE sockfd)
|
||||
{
|
||||
return connect_common(sockfd);
|
||||
DBUG_ENTER("TCP_Transpporter::connect_client_impl");
|
||||
DBUG_RETURN(connect_common(sockfd));
|
||||
}
|
||||
|
||||
bool TCP_Transporter::connect_common(NDB_SOCKET_TYPE sockfd)
|
||||
|
|
@ -119,6 +120,8 @@ bool TCP_Transporter::connect_common(NDB_SOCKET_TYPE sockfd)
|
|||
theSocket = sockfd;
|
||||
setSocketOptions();
|
||||
setSocketNonBlocking(theSocket);
|
||||
DBUG_PRINT("info", ("Successfully set-up TCP transporter to node %d",
|
||||
remoteNodeId));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -52,8 +52,7 @@ private:
|
|||
int r_port,
|
||||
NodeId lHostId,
|
||||
NodeId rHostId,
|
||||
int byteorder,
|
||||
bool compression, bool checksum, bool signalId,
|
||||
bool checksum, bool signalId,
|
||||
Uint32 reportFreq = 4096);
|
||||
|
||||
// Disconnect, delete send buffers and receive buffer
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
#include <ndb_global.h>
|
||||
#include <my_pthread.h>
|
||||
|
||||
#include <TransporterRegistry.hpp>
|
||||
#include "TransporterInternalDefinitions.hpp"
|
||||
|
|
@ -48,9 +49,10 @@
|
|||
|
||||
SocketServer::Session * TransporterService::newSession(NDB_SOCKET_TYPE sockfd)
|
||||
{
|
||||
DBUG_ENTER("SocketServer::Session * TransporterService::newSession");
|
||||
if (m_auth && !m_auth->server_authenticate(sockfd)){
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return 0;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
{
|
||||
|
|
@ -60,27 +62,32 @@ SocketServer::Session * TransporterService::newSession(NDB_SOCKET_TYPE sockfd)
|
|||
char buf[256];
|
||||
if (s_input.gets(buf, 256) == 0) {
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return 0;
|
||||
DBUG_PRINT("error", ("Could not get node id from client"));
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
if (sscanf(buf, "%d", &nodeId) != 1) {
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return 0;
|
||||
DBUG_PRINT("error", ("Error in node id from client"));
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
//check that nodeid is valid and that there is an allocated transporter
|
||||
if ( nodeId < 0 || nodeId >= (int) m_transporter_registry->maxTransporters) {
|
||||
if ( nodeId < 0 || nodeId >= (int)m_transporter_registry->maxTransporters) {
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return 0;
|
||||
DBUG_PRINT("error", ("Node id out of range from client"));
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
if (m_transporter_registry->theTransporters[nodeId] == 0) {
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return 0;
|
||||
DBUG_PRINT("error", ("No transporter for this node id from client"));
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
//check that the transporter should be connected
|
||||
if (m_transporter_registry->performStates[nodeId] != TransporterRegistry::CONNECTING) {
|
||||
NDB_CLOSE_SOCKET(sockfd);
|
||||
return 0;
|
||||
DBUG_PRINT("error", ("Transporter in wrong state for this node id from client"));
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
Transporter *t= m_transporter_registry->theTransporters[nodeId];
|
||||
|
|
@ -93,13 +100,14 @@ SocketServer::Session * TransporterService::newSession(NDB_SOCKET_TYPE sockfd)
|
|||
t->connect_server(sockfd);
|
||||
}
|
||||
|
||||
return 0;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
TransporterRegistry::TransporterRegistry(void * callback,
|
||||
unsigned _maxTransporters,
|
||||
unsigned sizeOfLongSignalMemory)
|
||||
{
|
||||
unsigned sizeOfLongSignalMemory) {
|
||||
|
||||
m_transporter_service= 0;
|
||||
nodeIdSpecified = false;
|
||||
maxTransporters = _maxTransporters;
|
||||
sendCounter = 1;
|
||||
|
|
@ -149,6 +157,7 @@ TransporterRegistry::~TransporterRegistry() {
|
|||
delete[] theTransporters;
|
||||
delete[] performStates;
|
||||
delete[] ioStates;
|
||||
|
||||
#ifdef NDB_OSE_TRANSPORTER
|
||||
if(theOSEReceiver != NULL){
|
||||
theOSEReceiver->destroyPhantom();
|
||||
|
|
@ -207,8 +216,6 @@ TransporterRegistry::createTransporter(TCP_TransporterConfiguration *config) {
|
|||
config->port,
|
||||
localNodeId,
|
||||
config->remoteNodeId,
|
||||
config->byteOrder,
|
||||
config->compression,
|
||||
config->checksum,
|
||||
config->signalId);
|
||||
if (t == NULL)
|
||||
|
|
@ -262,8 +269,6 @@ TransporterRegistry::createTransporter(OSE_TransporterConfiguration *conf) {
|
|||
conf->localHostName,
|
||||
conf->remoteNodeId,
|
||||
conf->remoteHostName,
|
||||
conf->byteOrder,
|
||||
conf->compression,
|
||||
conf->checksum,
|
||||
conf->signalId);
|
||||
if (t == NULL)
|
||||
|
|
@ -304,15 +309,17 @@ TransporterRegistry::createTransporter(SCI_TransporterConfiguration *config) {
|
|||
if(theTransporters[config->remoteNodeId] != NULL)
|
||||
return false;
|
||||
|
||||
SCI_Transporter * t = new SCI_Transporter(config->sendLimit,
|
||||
SCI_Transporter * t = new SCI_Transporter(*this,
|
||||
config->localHostName,
|
||||
config->remoteHostName,
|
||||
config->port,
|
||||
config->sendLimit,
|
||||
config->bufferSize,
|
||||
config->nLocalAdapters,
|
||||
config->remoteSciNodeId0,
|
||||
config->remoteSciNodeId1,
|
||||
localNodeId,
|
||||
config->remoteNodeId,
|
||||
config->byteOrder,
|
||||
config->compression,
|
||||
config->checksum,
|
||||
config->signalId);
|
||||
|
||||
|
|
@ -355,7 +362,6 @@ TransporterRegistry::createTransporter(SHM_TransporterConfiguration *config) {
|
|||
config->port,
|
||||
localNodeId,
|
||||
config->remoteNodeId,
|
||||
config->compression,
|
||||
config->checksum,
|
||||
config->signalId,
|
||||
config->shmKey,
|
||||
|
|
@ -853,8 +859,8 @@ TransporterRegistry::performReceive(){
|
|||
if(t->isConnected() && t->checkConnected()){
|
||||
Uint32 * readPtr, * eodPtr;
|
||||
t->getReceivePtr(&readPtr, &eodPtr);
|
||||
readPtr = unpack(readPtr, eodPtr, nodeId, ioStates[nodeId]);
|
||||
t->updateReceivePtr(readPtr);
|
||||
Uint32 *newPtr = unpack(readPtr, eodPtr, nodeId, ioStates[nodeId]);
|
||||
t->updateReceivePtr(newPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -868,8 +874,8 @@ TransporterRegistry::performReceive(){
|
|||
if(t->isConnected() && t->checkConnected()){
|
||||
Uint32 * readPtr, * eodPtr;
|
||||
t->getReceivePtr(&readPtr, &eodPtr);
|
||||
readPtr = unpack(readPtr, eodPtr, nodeId, ioStates[nodeId]);
|
||||
t->updateReceivePtr(readPtr);
|
||||
Uint32 *newPtr = unpack(readPtr, eodPtr, nodeId, ioStates[nodeId]);
|
||||
t->updateReceivePtr(newPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1021,7 +1027,9 @@ TransporterRegistry::setIOState(NodeId nodeId, IOState state) {
|
|||
static void *
|
||||
run_start_clients_C(void * me)
|
||||
{
|
||||
my_thread_init();
|
||||
((TransporterRegistry*) me)->start_clients_thread();
|
||||
my_thread_end();
|
||||
NdbThread_Exit(0);
|
||||
return me;
|
||||
}
|
||||
|
|
@ -1104,6 +1112,7 @@ TransporterRegistry::update_connections()
|
|||
void
|
||||
TransporterRegistry::start_clients_thread()
|
||||
{
|
||||
DBUG_ENTER("TransporterRegistry::start_clients_thread");
|
||||
while (m_run_start_clients_thread) {
|
||||
NdbSleep_MilliSleep(100);
|
||||
for (int i= 0, n= 0; n < nTransporters && m_run_start_clients_thread; i++){
|
||||
|
|
@ -1127,6 +1136,7 @@ TransporterRegistry::start_clients_thread()
|
|||
}
|
||||
}
|
||||
}
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ LDADD_LOC = \
|
|||
$(top_builddir)/ndb/src/libndbclient.la \
|
||||
$(top_builddir)/dbug/libdbug.a \
|
||||
$(top_builddir)/mysys/libmysys.a \
|
||||
$(top_builddir)/strings/libmystrings.a
|
||||
$(top_builddir)/strings/libmystrings.a @NDB_SCI_LIBS@
|
||||
|
||||
include $(top_srcdir)/ndb/config/common.mk.am
|
||||
include $(top_srcdir)/ndb/config/type_util.mk.am
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ LDADD += \
|
|||
$(top_builddir)/ndb/src/common/util/libgeneral.la \
|
||||
$(top_builddir)/dbug/libdbug.a \
|
||||
$(top_builddir)/mysys/libmysys.a \
|
||||
$(top_builddir)/strings/libmystrings.a
|
||||
$(top_builddir)/strings/libmystrings.a @NDB_SCI_LIBS@
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ LDADD_LOC = \
|
|||
$(top_builddir)/ndb/src/libndbclient.la \
|
||||
$(top_builddir)/dbug/libdbug.a \
|
||||
$(top_builddir)/mysys/libmysys.a \
|
||||
$(top_builddir)/strings/libmystrings.a
|
||||
$(top_builddir)/strings/libmystrings.a @NDB_SCI_LIBS@
|
||||
|
||||
include $(top_srcdir)/ndb/config/common.mk.am
|
||||
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ int
|
|||
FastScheduler::checkDoJob()
|
||||
{
|
||||
/*
|
||||
* Joob buffer overload protetction
|
||||
* Job buffer overload protetction
|
||||
* If the job buffer B is filled over a certain limit start
|
||||
* to execute the signals in the job buffer's
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ LDADD_LOC = $(top_builddir)/ndb/src/libndbclient.la \
|
|||
$(top_builddir)/dbug/libdbug.a \
|
||||
$(top_builddir)/mysys/libmysys.a \
|
||||
$(top_builddir)/strings/libmystrings.a \
|
||||
@TERMCAP_LIB@
|
||||
@TERMCAP_LIB@ @NDB_SCI_LIBS@
|
||||
|
||||
ndb_mgm_LDFLAGS = @ndb_bin_am_ldflags@
|
||||
|
||||
|
|
|
|||
|
|
@ -129,11 +129,14 @@ ConfigInfo::m_SectionRules[] = {
|
|||
|
||||
{ "TCP", fixHostname, "HostName1" },
|
||||
{ "TCP", fixHostname, "HostName2" },
|
||||
{ "SCI", fixHostname, "HostName1" },
|
||||
{ "SCI", fixHostname, "HostName2" },
|
||||
{ "OSE", fixHostname, "HostName1" },
|
||||
{ "OSE", fixHostname, "HostName2" },
|
||||
|
||||
{ "TCP", fixPortNumber, 0 }, // has to come after fixHostName
|
||||
{ "SHM", fixPortNumber, 0 }, // has to come after fixHostName
|
||||
{ "SCI", fixPortNumber, 0 }, // has to come after fixHostName
|
||||
//{ "SHM", fixShmKey, 0 },
|
||||
|
||||
/**
|
||||
|
|
@ -163,6 +166,8 @@ ConfigInfo::m_SectionRules[] = {
|
|||
|
||||
{ "TCP", checkTCPConstraints, "HostName1" },
|
||||
{ "TCP", checkTCPConstraints, "HostName2" },
|
||||
{ "SCI", checkTCPConstraints, "HostName1" },
|
||||
{ "SCI", checkTCPConstraints, "HostName2" },
|
||||
|
||||
{ "*", checkMandatory, 0 },
|
||||
|
||||
|
|
@ -1808,7 +1813,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = {
|
|||
"Id of node ("DB_TOKEN_PRINT", "API_TOKEN_PRINT" or "MGM_TOKEN_PRINT") on one side of the connection",
|
||||
ConfigInfo::USED,
|
||||
false,
|
||||
ConfigInfo::INT,
|
||||
ConfigInfo::STRING,
|
||||
MANDATORY,
|
||||
"0",
|
||||
STR_VALUE(MAX_INT_RNIL) },
|
||||
|
|
@ -1820,16 +1825,38 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = {
|
|||
"Id of node ("DB_TOKEN_PRINT", "API_TOKEN_PRINT" or "MGM_TOKEN_PRINT") on one side of the connection",
|
||||
ConfigInfo::USED,
|
||||
false,
|
||||
ConfigInfo::INT,
|
||||
ConfigInfo::STRING,
|
||||
MANDATORY,
|
||||
"0",
|
||||
STR_VALUE(MAX_INT_RNIL) },
|
||||
|
||||
{
|
||||
CFG_SCI_ID_0,
|
||||
"SciId0",
|
||||
CFG_SCI_HOSTNAME_1,
|
||||
"HostName1",
|
||||
"SCI",
|
||||
"Local SCI-node id for adapter 0 (a computer can have two adapters)",
|
||||
"Name/IP of computer on one side of the connection",
|
||||
ConfigInfo::INTERNAL,
|
||||
false,
|
||||
ConfigInfo::STRING,
|
||||
UNDEFINED,
|
||||
0, 0 },
|
||||
|
||||
{
|
||||
CFG_SCI_HOSTNAME_2,
|
||||
"HostName2",
|
||||
"SCI",
|
||||
"Name/IP of computer on one side of the connection",
|
||||
ConfigInfo::INTERNAL,
|
||||
false,
|
||||
ConfigInfo::STRING,
|
||||
UNDEFINED,
|
||||
0, 0 },
|
||||
|
||||
{
|
||||
CFG_CONNECTION_SERVER_PORT,
|
||||
"PortNumber",
|
||||
"SCI",
|
||||
"Port used for this transporter",
|
||||
ConfigInfo::USED,
|
||||
false,
|
||||
ConfigInfo::INT,
|
||||
|
|
@ -1838,10 +1865,10 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = {
|
|||
STR_VALUE(MAX_INT_RNIL) },
|
||||
|
||||
{
|
||||
CFG_SCI_ID_1,
|
||||
"SciId1",
|
||||
CFG_SCI_HOST1_ID_0,
|
||||
"Host1SciId0",
|
||||
"SCI",
|
||||
"Local SCI-node id for adapter 1 (a computer can have two adapters)",
|
||||
"SCI-node id for adapter 0 on Host1 (a computer can have two adapters)",
|
||||
ConfigInfo::USED,
|
||||
false,
|
||||
ConfigInfo::INT,
|
||||
|
|
@ -1849,6 +1876,42 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = {
|
|||
"0",
|
||||
STR_VALUE(MAX_INT_RNIL) },
|
||||
|
||||
{
|
||||
CFG_SCI_HOST1_ID_1,
|
||||
"Host1SciId1",
|
||||
"SCI",
|
||||
"SCI-node id for adapter 1 on Host1 (a computer can have two adapters)",
|
||||
ConfigInfo::USED,
|
||||
false,
|
||||
ConfigInfo::INT,
|
||||
"0",
|
||||
"0",
|
||||
STR_VALUE(MAX_INT_RNIL) },
|
||||
|
||||
{
|
||||
CFG_SCI_HOST2_ID_0,
|
||||
"Host2SciId0",
|
||||
"SCI",
|
||||
"SCI-node id for adapter 0 on Host2 (a computer can have two adapters)",
|
||||
ConfigInfo::USED,
|
||||
false,
|
||||
ConfigInfo::INT,
|
||||
MANDATORY,
|
||||
"0",
|
||||
STR_VALUE(MAX_INT_RNIL) },
|
||||
|
||||
{
|
||||
CFG_SCI_HOST2_ID_1,
|
||||
"Host2SciId1",
|
||||
"SCI",
|
||||
"SCI-node id for adapter 1 on Host2 (a computer can have two adapters)",
|
||||
ConfigInfo::USED,
|
||||
false,
|
||||
ConfigInfo::INT,
|
||||
"0",
|
||||
"0",
|
||||
STR_VALUE(MAX_INT_RNIL) },
|
||||
|
||||
{
|
||||
CFG_CONNECTION_SEND_SIGNAL_ID,
|
||||
"SendSignalId",
|
||||
|
|
@ -1881,9 +1944,9 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = {
|
|||
ConfigInfo::USED,
|
||||
false,
|
||||
ConfigInfo::INT,
|
||||
"2K",
|
||||
"512",
|
||||
STR_VALUE(MAX_INT_RNIL) },
|
||||
"8K",
|
||||
"128",
|
||||
"32K" },
|
||||
|
||||
{
|
||||
CFG_SCI_BUFFER_MEM,
|
||||
|
|
@ -1894,7 +1957,7 @@ const ConfigInfo::ParamInfo ConfigInfo::m_ParamInfo[] = {
|
|||
false,
|
||||
ConfigInfo::INT,
|
||||
"1M",
|
||||
"256K",
|
||||
"64K",
|
||||
STR_VALUE(MAX_INT_RNIL) },
|
||||
|
||||
{
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ LDADD_LOC = $(top_builddir)/ndb/src/libndbclient.la \
|
|||
$(top_builddir)/ndb/src/common/editline/libeditline.a \
|
||||
$(top_builddir)/dbug/libdbug.a \
|
||||
$(top_builddir)/mysys/libmysys.a \
|
||||
$(top_builddir)/strings/libmystrings.a
|
||||
$(top_builddir)/strings/libmystrings.a @NDB_SCI_LIBS@
|
||||
@TERMCAP_LIB@
|
||||
|
||||
DEFS_LOC = -DDEFAULT_MYSQL_HOME="\"$(MYSQLBASEdir)\"" \
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ LDADD_LOC = $(top_builddir)/ndb/src/mgmclient/CpcClient.o \
|
|||
$(top_builddir)/ndb/src/libndbclient.la \
|
||||
$(top_builddir)/dbug/libdbug.a \
|
||||
$(top_builddir)/mysys/libmysys.a \
|
||||
$(top_builddir)/strings/libmystrings.a
|
||||
$(top_builddir)/strings/libmystrings.a @NDB_SCI_LIBS@
|
||||
|
||||
wrappersdir=$(prefix)/bin
|
||||
wrappers_SCRIPTS=atrt-testBackup atrt-mysql-test-run
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ LDADD = @isam_libs@ \
|
|||
$(top_builddir)/mysys/libmysys.a \
|
||||
$(top_builddir)/dbug/libdbug.a \
|
||||
$(top_builddir)/regex/libregex.a \
|
||||
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@
|
||||
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@ @NDB_SCI_LIBS@
|
||||
|
||||
mysqld_LDADD = @MYSQLD_EXTRA_LDFLAGS@ \
|
||||
@bdb_libs@ @innodb_libs@ @pstack_libs@ \
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue