Bug #38502 NDB_PORT cause ndb_mgmd fail
Submitted: 31 Jul 2008 19:11 Modified: 10 Oct 2009 16:45
Reporter: Benmeida Marouane Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Cluster: Cluster (NDB) storage engine Severity:S2 (Serious)
Version:mysql-5.1 OS:Linux
Assigned to: Magnus Blåudd CPU Architecture:Any
Tags: -5.0.51b AND 5.0.51a, 5.1 bzr, aborted, cluster, ndb_mgmd

[31 Jul 2008 19:11] Benmeida Marouane
Description:

The ndb_mgmd won't start, if we try to start it with no Debug option the are no message at all, and if we try to start the Management Cluster with debug enabled we see only the message Aborted.

The 5 last messages in trace file:
ConfigRetriever.cpp:    91: | <ConfigRetriever::ConfigRetriever
    mgmapi.cpp:   465: | >ndb_mgm_connect
    mgmapi.cpp:    63: | | info: NDB_SOCKET: 4
    mgmapi.cpp:    60: | | info: NDB_CLOSE_SOCKET(4)
    mgmapi.cpp:   542: | | info: Unable to connect with connect string: nodeid=1,192.168.1.100:2202
    mgmapi.cpp:   557: | <ndb_mgm_connect

After some work i found that the bogus function is InitConfigFileParser::convertStringToUint64 but the problem come from the NDB_PORT variable.

How to repeat:
Compile on Suse 10.3 x86_64 EM64T:

LDFLAGS="-L/usr/lib64" CFLAGS="-mtune=nocona -m64 -O2 -pg -g" CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -mtune=nocona -m64 -O2 -pg -g" ./configure --prefix=/usr --libdir=/usr/lib64 --localstatedir=/test/mysql --datadir=/test/mysql --enable-thread-safe-client --enable-assembler --with-gnu-ld --with-pthread --with-mysqld-user=mysql --with-zlib-dir=bundled --with-ndbcluster --with-ndb-test --with-ndb-port --with-embedded-server --with-big-tables --with-max-indexes=8 --without-innodb --with-debug --disable-shared --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --without-man --without-bench

my.cnf (Just the lines for Cluster):

[mysqld]
port		= 3306
socket		= /var/lib/mysql/mysql.sock

ndbcluster
ndb-connectstring=nodeid=1;host=192.168.1.100:2202
#Others...
[mysql_cluster]
ndb-connectstring=nodeid=1;host=192.168.1.100:2202
[ndb_mgm]
connect-string=nodeid=1;192.168.1.100:2202
[ndb_mgmd]
connect-string=nodeid=1;192.168.1.100:2202
config-file=/test/mysql/cluster/config.ini
#Others...

For the config.ini :
[ndbd default]
NoOfReplicas= 1
MaxNoOfConcurrentOperations= 10000
DataMemory= 500M
IndexMemory= 500M
TimeBetweenWatchDogCheck= 30000
DataDir= /test/mysql/cluster
MaxNoOfOrderedIndexes= 512

[ndb_mgmd]
Id=1
HostName=192.168.1.100
DataDir= /test/mysql/cluster

[ndbd]
Id= 2
HostName=192.168.1.10

[ndbd]
Id= 3
HostName=192.168.1.11

[mysqld]
Id=4

Suggested fix:
on the ndb_global.h

Change:
#define NDB_PORT "yes"
By:
#define NDB_PORT "2202"
//2202 IANA port for the powerful MySQL CLuster, lets play with parallelism.
[31 Jul 2008 19:47] Magnus Blåudd
Looking in configure.in, I see that ndb_port is supposed to be set to 1186

configure.in
>>
if test X"$ndb_port" = Xdefault
then
  ndb_port="1186"
fi
AC_SUBST([ndb_port])
<<
[31 Jul 2008 19:49] Magnus Blåudd
It should not be allowed to just say --with-ndb-port, that is the reason why NDB_PORT in ndb_global.h get that value. This should be checked by ./configure
[31 Jul 2008 20:20] Sveta Smirnova
Thank you for the report.

Verified as described.
[12 Nov 2008 14:15] Jonas Oreland
R3: messing with configure is always a pain
E1:
[24 Sep 2009 10:31] Magnus Blåudd
Still possible to configure it so that NDB_PORT="yes"

msvensson@pilot:~/mysql/6.2$ ./configure --with-ndb-port --with-plugins=ndbcluster

msvensson@pilot:~/mysql/6.2$ grep -r NDB_PORT *
...
storage/ndb/include/ndb_global.h:#define NDB_PORT "yes"
[24 Sep 2009 16:17] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/84537
[8 Oct 2009 13:41] Magnus Blåudd
Patch approved on IRC, the AC_SUBST is removed and the port is passed through config.h if set.

Will also scrap remnants of ndb_port_base
[9 Oct 2009 14:13] Bugs System
Pushed into 5.1.39-ndb-6.2.19 (revid:magnus.blaudd@sun.com-20091009101310-9ebungrjeq4t608z) (version source revid:magnus.blaudd@sun.com-20091009101310-9ebungrjeq4t608z) (merge vers: 5.1.39-ndb-6.2.19) (pib:13)
[9 Oct 2009 14:13] Bugs System
Pushed into 5.1.39-ndb-6.3.28 (revid:magnus.blaudd@sun.com-20091009130938-s7tv5vj7f842wo9g) (version source revid:magnus.blaudd@sun.com-20091009130938-s7tv5vj7f842wo9g) (merge vers: 5.1.39-ndb-6.3.28) (pib:13)
[9 Oct 2009 14:20] Bugs System
Pushed into 5.1.39-ndb-7.0.9 (revid:magnus.blaudd@sun.com-20091009141821-rrrm9xm2j8f3hstt) (version source revid:magnus.blaudd@sun.com-20091009141821-rrrm9xm2j8f3hstt) (merge vers: 5.1.39-ndb-7.0.9) (pib:13)
[9 Oct 2009 14:27] Bugs System
Pushed into 5.1.39-ndb-7.1.0 (revid:magnus.blaudd@sun.com-20091009142206-4g25a32akb8t3o5u) (version source revid:magnus.blaudd@sun.com-20091009142206-4g25a32akb8t3o5u) (merge vers: 5.1.39-ndb-7.1.0) (pib:13)
[10 Oct 2009 16:45] Jon Stephens
Documented in the NDB-6.2.19, 6.3.28, and 7.0.9 changelogs, as follows:

        When building MySQL Cluster, it was possible to configure the
        build using --with-ndb-port without supplying a port number. Now 
        in such cases, configure fails with an error.

Closed.
[15 Oct 2009 15:45] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/87008

3018 Martin Skold	2009-10-15 [merge]
      Merge
      modified:
        config/ac-macros/ha_ndbcluster.m4
        mysql-test/suite/ndb/my.cnf
        mysql-test/suite/ndb/r/ndb_config.result
        mysql-test/suite/ndb_binlog/r/ndb_binlog_variants.result
        mysql-test/suite/ndb_binlog/t/ndb_binlog_variants.test
        mysql-test/suite/ndb_team/r/ndb_dd_backuprestore.result
        sql/ha_ndbcluster.cc
        sql/ha_ndbcluster.h
        storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp
        storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp
        storage/ndb/include/kernel/signaldata/NodeFailRep.hpp
        storage/ndb/include/ndb_global.h.in
        storage/ndb/include/ndbapi/NdbDictionary.hpp
        storage/ndb/include/ndbapi/NdbOperation.hpp
        storage/ndb/ndbapi-examples/ndbapi_scan/ndbapi_scan.cpp
        storage/ndb/src/kernel/blocks/backup/Backup.cpp
        storage/ndb/src/kernel/blocks/backup/Backup.hpp
        storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp
        storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp
        storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp
        storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp
        storage/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp
        storage/ndb/src/kernel/blocks/dbdih/printSysfile.cpp
        storage/ndb/src/kernel/blocks/dbdih/printSysfile/printSysfile.cpp
        storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
        storage/ndb/src/kernel/blocks/dblqh/redoLogReader/reader.cpp
        storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp
        storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
        storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp
        storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp
        storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp
        storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp
        storage/ndb/src/kernel/blocks/dbutil/DbUtil.cpp
        storage/ndb/src/kernel/blocks/dbutil/DbUtil.hpp
        storage/ndb/src/kernel/blocks/lgman.cpp
        storage/ndb/src/kernel/blocks/lgman.hpp
        storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp
        storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp
        storage/ndb/src/kernel/blocks/suma/Suma.cpp
        storage/ndb/src/kernel/blocks/suma/Suma.hpp
        storage/ndb/src/kernel/blocks/trix/Trix.hpp
        storage/ndb/src/kernel/blocks/tsman.cpp
        storage/ndb/src/kernel/blocks/tsman.hpp
        storage/ndb/src/kernel/vm/DLFifoList.hpp
        storage/ndb/src/kernel/vm/DLHashTable.hpp
        storage/ndb/src/kernel/vm/DLList.hpp
        storage/ndb/src/kernel/vm/DataBuffer.hpp
        storage/ndb/src/kernel/vm/SimulatedBlock.cpp
        storage/ndb/src/kernel/vm/SimulatedBlock.hpp
        storage/ndb/src/mgmapi/LocalConfig.cpp
        storage/ndb/src/mgmapi/Makefile.am
        storage/ndb/src/mgmsrv/ConfigInfo.cpp
        storage/ndb/src/ndbapi/NdbDictionary.cpp
        storage/ndb/src/ndbapi/NdbOperation.cpp
        storage/ndb/test/ndbapi/testNdbApi.cpp
        storage/ndb/test/run-test/daily-basic-tests.txt