Commit efb0ae38 authored by joreland@mysql.com's avatar joreland@mysql.com

Merge joreland@bk-internal.mysql.com:/home/bk/mysql-4.1-ndb

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