Bug #38502 NDB_PORT cause ndb_mgmd fail
Submitted: 31 Jul 2008 21:11 Modified: 10 Oct 2009 18:45
Reporter: Benmeida Marouane
Status: Closed
Category:Server: Cluster Severity:S2 (Serious)
Version:mysql-5.1 OS:Linux
Assigned to: Magnus Blaudd Target Version:
Tags: aborted, cluster, ndb_mgmd, -5.0.51b AND 5.0.51a, 5.1 bzr
Triage: Triaged: D3 (Medium) / R3 (Medium) / E1 (None/Negligible)

[31 Jul 2008 21: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 21:47] Magnus Blaudd
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 21:49] Magnus Blaudd
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 22:20] Sveta Smirnova
Thank you for the report.

Verified as described.
[12 Nov 2008 15:15] Jonas Oreland
R3: messing with configure is always a pain
E1:
[24 Sep 2009 12:31] Magnus Blaudd
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 18: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 15:41] Magnus Blaudd
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 16: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 16: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 16: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 16: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 18: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 17: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